% This is an ASP encoding of the domain independent % axioms of the Functional Event Calculus (FEC) % See http://www.ucl.ac.uk/infostudies/efec/ % Last update: 16 May 2013 % -- List of domain predicates -- % % fluent(F). % possVal(F, V). % action(A). % % causesValue(A,F,V,T). % possVal(F,v). % -- Domain independent rules -- time(0..maxtime). lessThanEqualTo(T1, T2) :- time(T1), time(T2), T1 <= T2. lessThan(T1, T2) :- lessThanEqualTo(T1, T2), T1 != T2. % FEC1 valueCaused(F, V, T) :- happens(A, T), causesValue(A, F, V, T). -valueCaused(F, V, T) :- possVal(F, V), time(T), not valueCaused(F, V, T). % FEC2 otherValCausedBetween(F, V, T1, T2) :- possVal(F, V), valueCaused(F, V_other, T), lessThanEqualTo(T1, T), lessThan(T, T2), V != V_other. -otherValCausedBetween(F, V, T1, T2) :- possVal(F, V), lessThan(T1, T2), not otherValCausedBetween(F, V, T1, T2). % FEC3 :- valueOf(F, T2, V_other), valueOf(F, T1, V), lessThan(T1, T2), V_other != V, not otherValCausedBetween(F, V, T1, T2). % FEC4 valueCausedBetween(F, V, T1, T2) :- valueCaused(F, V, T), lessThanEqualTo(T1, T), lessThan(T, T2). -valueCausedBetween(F, V, T1, T2) :- lessThan(T1, T2), possVal(F, V), not valueCausedBetween(F, V, T1, T2). :- valueOf(F, T2, V), lessThan(T1, T2), otherValCausedBetween(F, V, T1, T2), not valueCausedBetween(F, V, T1, T2). % FEC5 % ic(fec5) :- valueOf(F, T, V), not possVal(F, V). % AUX1 % make sure valueOf is a function. 1 { valueOf(F, T, V) : possVal(F, V) } 1 :- fluent(F),time(T).