« IPFS | Main | Agreeing on Things »

Logical Derivation

I put together a bit of information about logical derivation to help accountants get their heads around this notion from some tests that I created.  Logical derivation is basically about deriving new information from existing information using the rules of formal logic. 

Three examples will help you understand the essentials.  (All three examples are provided in this PDF).  All of these examples were processed using Auditchain's Pacioli logic/rules/reasoning engine.

One step derivation

To start off, consider a very basic example.  In financial reports, it is common for the subtotal line item "Noncurrent Assets" to not be reported. But for analyzing or normalizing financial information, you might want to understand the value of that line item.  This is not a problem.  If you have information for the value "Assets" and for the value "Current Assets"; plus if you understand the rule that "Assets = Current Assets + Noncurrent Assets" then you can derive the value for Noncurrent Assets. (Here are the Pacioli results of this derivation)

Two step derivation

Taking this very basic example one step further; suppose neither the line items "Noncurrent Liabilities" nor "Liabilities" was explicitly reported in a financial report.  You could derive both unreported values using two rules.  The first rule is "Liabilities and Equity = Liabilities + Equity".  The second rule is "Liabilities = Current Liabilities + Noncurrent Liabilities".  If the facts Liabilities and Equity, Equity, and Current Liabilities are explicitly reported; then the values for the facts Liabilities and Noncurrent Liabilities can be logically derived. (Here are the Pacioli results for this derivation)

What is going on here might seem simple, but the next example shows that this is not two simple logical derivations, what is going on is far more powerful than a sequence of rules.

Multi step derivation (forward chaining)

This more sophistocated example introduces the idea of forward chaining.  For most software to process these rules; the rules need to be provided in a specific sequence and tend to be implemented using basic IF...THEN... statements.  A logic/rules/reasoning engine works different.  In this example I provide the line items of an income statement but I don't provide any of the income statement subtotals.  I do provide the grand total Net Income (Loss) so that I can make the income statement foot.  In this example, all of the subtotals are dynamically derived logically from the reported information. (Here are the Pacioli results for this derivation)

Summary

In this final example I put the first three examples together into on report and perform all if the derivations.  (Here are the Pacioli results for this derivation)

In the report without any derivations there are 44 nodes (facts that you have to work with) and 22 edges (relations between the facts). You can see this on page 5 of the PDF here. But when you add the derivations the nodes are increased to 64 and the edges increased to 53 which basically indicates the additional information you have to work with.  You can see this on page 6 of the PDF here.

Logical derivation is only one capability of a logic/rules/reasoning engine.  There are many, many more capabilities.

This might seem like a toy from the simple examples.  The examples are simple, they are not simplistic.  To see a more robust example, have a look at the Knowledge Graph of Microsoft 10-K example.  Here are the Pacioli results for that.

Stay tuned and I will explain more of these capabilities.

Posted on Wednesday, August 11, 2021 at 08:52AM by Registered CommenterCharlie in | CommentsPost a Comment

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
All HTML will be escaped. Hyperlinks will be created for URLs automatically.