#const maxtime=3. % G1 fluent(gateStatus). action(push). action(pull). % G2, G3, G4 possVal(gateStatus, open). possVal(gateStatus, shut). possVal(gateStatus, broken). % G5' causesValue(push, gateStatus, shut, T) :- time(T), valueOf(gateStatus, T, V), V != broken, not happens(pull, T). causesValue(push, gateStatus, broken, T) :- time(T), happens(pull, T). % G6' causesValue(pull, gateStatus, open, T) :- time(T), valueOf(gateStatus, T, V), V != broken, not happens(push, T). causesValue(pull, gateStatus, broken, T) :- time(T), happens(push, T). % G7 -valueOf(gateStatus, 0, broken). % G8 happens(pull, 2). happens(push, 2). #hide. #show valueOf/3. #show happens/2.