Q = forall R, [ Prop(R) ] ( [ P ] Q -> R ) -> R. fof(def_f2,axiom,( ! [P,Q,R] : f2(P,Q,R) = lazy_impl(prop(R),impl(lazy_impl(P,impl(Q,R)),R)) )). fof(def_lazy_and2,axiom,( ! [P,Q] : ? [R] : ( lazy_and2(P,Q) = phi(f2(P,Q,R)) & ~ ? [R1] : forallprefers(f2(P,Q,R1),f2(P,Q,R)) ) )). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----Axiomatization of semantic definition of or: %---- If A is not bool, then ( A \/ B ) = phi(A). %---- If A is bool, but B is not bool, then ( A \/ B ) = phi(B). %---- If A = true, and B is bool, then ( A \/ B ) = true. %---- If A = false, and B is bool, then ( A \/ B ) = B. fof(or1_axiom1,axiom,( ! [A,B] : ( ~ bool(A) => or1(A,B) = phi(A) ) )). fof(or1_axiom2,axiom,( ! [A,B] : ( ( bool(A) & ~ bool(B) ) => or1(A,B) = phi(B) ) )). fof(or1_axiom3,axiom,( ! [B] : ( bool(B) => or1(true,B) = true ) )). fof(or1_axiom4,axiom,( ! [B] : ( bool(B) => or1(false,B) = B ) )). %----Syntactic definition of or in Figure 4. %----The definition is: %----P \/ Q = forall R, [ Prop(R) ] ( P -> R ) -> ( Q -> R ) -> R. fof(def_f3,axiom,( ! [P,Q,R] : f3(P,Q,R) = lazy_impl(prop(R),impl(impl(P,R),impl(impl(Q,R),R))) )). fof(def_or2,axiom,( ! [P,Q] : ? [R] : ( or2(P,Q) = phi(f3(P,Q,R)) & ~ ? [R1] : forallprefers(f3(P,Q,R1),f3(P,Q,R)) ) )). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----Axiomatization of semantic definition of exists. %---- %----For each predicate, there exists an an x, s.t. %----exists(P) = phi( P. x ) and %---- there exists no x1, s.t. ( P. x1 ) < ( P. x ), where %---- < is the existsprefers order, and %---- . is the application operator. fof(exists1_axiom1,axiom,( ! [P] : ? [X] : ( exists1(P) = phi(apply(P,X)) & ~ ? [X1] : existsprefers(apply(P,X1),apply(P,X)) ) )). %----Syntactic definition of exists in the paper: % %----( Exists P ) = forall R, [ Prop(R) ] ( forall x ( P x ) -> R ) -> R. % %----We define functions f4(P,x,R) := ( P. x ) -> R. %---- f5(P,R) := forall x. f4( P,x,R ) %---- f6(P,R) := [ Prop(R) ] f5( P, R ) -> R. %---- exists2(P) := forall R. f6( P, R ). fof(def_f4,axiom,( ! [P,X,R] : f4(P,X,R) = impl(apply(P,X),R) )). fof(def_f5,axiom,( ! [P,R] : ? [X] : ( f5(P,R) = phi(f4(P,X,R)) & ~ ? [X1] : forallprefers(f4(P,X1,R),f4(P,X,R)) ) )). fof(def_f6,axiom,( ! [P,R] : f6(P,R) = lazy_impl(prop(R),impl(f5(P,R),R)) )). fof(def_exists2,axiom,( ! [P] : ? [R] : ( exists2(P) = phi(f6(P,R)) & ~ ? [R1] : forallprefers(f6(P,R1),f6(P,R)) ) )). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----The semantic definition of false is just the false constant. fof(def_false1,axiom,( false1 = false )). %----The syntactic definition of false equals: %---- false := forall P, [ Prop(P) ] P . %----f7(P) := [ Prop(P) ] P. fof(def_f7,axiom,( ! [P] : f7(P) = lazy_impl(prop(P),P) )). fof(def_false2,axiom,( ? [P] : ( false2 = phi(f7(P)) & ~ ? [P1] : forallprefers(f7(P1),f7(P)) ) )). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----Axiomatization of semantic definition of not: %---- If A is not bool, then not(A) = phi(A). %---- If A = false, then not(A) = true. %---- If A = true, then not(A) = false. fof(not1_axiom1,axiom,( ! [A] : ( ~ bool(A) => not1(A) = phi(A) ) )). fof(not1_axiom2,axiom,( not1(false) = true )). fof(not1_axiom3,axiom,( not1(true) = false )). %----Syntactic definition of not in paper: %----The definition is: %----~ P := ( P -> False ). fof(def_not2,axiom,( ! [P] : not2(P) = impl(P,false2) )). %------------------------------------------------------------------------------