logicmoo / Logicmoo_docker

Docker Master Container that starts the rest of the Logicmoo services (see https://hub.docker.com/repository/docker/logicmoo/logicmoo_starter_image )
GNU Lesser General Public License v2.1
4 stars 0 forks source link

logicmoo.pfc.test.sanity_base.HYBRID_02 JUnit #238

Open TeamSPoon opened 3 years ago

TeamSPoon commented 3 years ago

% --Prolog--

% thisis similar to the sum example. % given a set of assertions of the form: % % income(person,source,year,$) % % this rule will maintain a set of yearly totals of the form %
% total_income(person,year,$) %

:- include(library(logicmoo_test_header)).

:- dynamic(total_income/3).

% RULES income(Person,_Source,Year,Dollars) ==> {increment_income(Person,Year,Dollars)}.

==> do_and_undo(increment_income(P,Y,D),decrement_income(P,Y,D)).

increment_income(P,Y,D) :- (retract(total_income(P,Y,Old)) -> New is Old+D ; New = D), assert(total_income(P,Y,New)).

decrement_income(P,Y,D) :- retract(total_income(P,Y,Old)), New is Old-D, assert(total_income(P,Y,New)).

% FACTS income(person,sourceOne,2035,6666). income(person,sourceTwo,2035,1111). income(person,sourceTwo,2036,2222).

% RESULTS PT 1 :- listing(total_income/3). /*

total_income(person, 2035, 7777). total_income(person, 2036, 2222).

*/

% UPDATE Remove some income + income(person,_,2035,1111).

% RESULTS PT 2 :- listing(total_income/3). /*

total_income(person, 2036, 2222). total_income(person, 2035, 6666).

*/