% The Accounting Equation in Prolog % % https://en.wikipedia.org/wiki/Accounting_equation % % Created by Charles Hoffman, CPA (charles.hoffman@me.com). % % Public domain: https://creativecommons.org/publicdomain/zero/1.0/ % % Run SWI-Prolog using https://swish.swi-prolog.org/ % term(asset). term(liability). term(equity). structure(balanceSheet). entity(microsoft). period(2017). assertion(does_balance_sheet_balance). fact(term(asset), entity(microsoft), period(2017), 241086000000). fact(term(liabilities), entity(microsoft), period(2017),168692000000). fact(term(equity), entity(microsoft), period(2017),72394000000). % rule Assets = Liabilities + Equity % does_balance_sheet_balance(Entity, Period) :- fact(term(asset),entity(Entity),period(Period),Asset), fact(term(liabilities),entity(Entity),period(Period),Liabilities), fact(term(equity),entity(Entity),period(Period),Equity), Asset is Liabilities + Equity. % QUESTION fact(Term, Entity, Period, Value). % % QUESTION does_balance_sheet_balance(microsoft, 2017). %