fluent(holding_coin).
fluent(fated_on_edge).
fluent(fated_flat).
fluent(on_edge).
%fluent(error).
fluent(flat_coin).



action(toss_coin).
executable(toss_coin, [holding_coin]).
causes(toss_coin, neg(holding_coin), [holding_coin]).
causes(toss_coin, on_edge, [fated_on_edge]).
causes(toss_coin, flat_coin, [fated_flat]).

action(inspect_and_decide_coin).
executable(inspect_and_decide_coin, []).
determines(inspect_and_decide_coin, fated_on_edge).
determines(inspect_and_decide_coin, fated_flat).

action(tip_coin).
executable(tip_coin, [on_edge]).
causes(tip_coin, flat_coin, [on_edge]).

caused([neg(fated_flat)], fated_on_edge).
caused([neg(fated_on_edge)], fated_flat).

initially(holding_coin).
%initially(neg(error)).
initially(neg(on_edge)). 
initially(neg(flat_coin)).

sgoal(flat_coin).
%sgoal(neg(error)).


