Theory QSizeO

Up to index of Isabelle/FOL/BFO

theory QSizeO
imports TORL QSizeR
begin

theory QSizeO 

imports TORL QSizeR 

begin


consts

SS :: "Ob => Ob => Ti => o"
LE :: "Ob => Ob => Ti => o"
RSS :: "Ob => Ob => Ti => o"
NEG :: "Ob => Ob => Ti => o"
SSC :: "Ob => Ob => Ti => o"

pSS :: "Ob => Ob => o"
pLE :: "Ob => Ob => o"
pRSS :: "Ob => Ob => o"
pNEG :: "Ob => Ob => o"
pSSC :: "Ob => Ob => o"


defs

SS_def: "SS(x,y,t) == (EX a b. (L(x,a,t) & L(y,b,t) & SSR(a,b)))"
LE_def: "LE(x,y,t) == (EX a b. (L(x,a,t) & L(y,b,t) & LER(a,b)))"
RSS_def: "RSS(x,y,t) == (EX a b. (L(x,a,t) & L(y,b,t) & RSSR(a,b)))"
NEG_def: "NEG(x,y,t) == (EX a b. (L(x,a,t) & L(y,b,t) & NEGR(a,b)))"
SSC_def: "SSC(x,y,t) == (EX a b. (L(x,a,t) & L(y,b,t) & SSCR(a,b)))"

pSS_def: "pSS(x,y) == (ALL t. ((E(x,t) | E(y,t)) --> SS(x,y,t)))"
pLE_def: "pLE(x,y) == (ALL t. ((E(x,t) | E(y,t)) --> LE(x,y,t)))"
pRSS_def: "pRSS(x,y) == (ALL t. ((E(x,t) | E(y,t)) --> RSS(x,y,t)))"
pNEG_def: "pNEG(x,y) == (ALL t. ((E(x,t) | E(y,t)) --> NEG(x,y,t)))"
pSSC_def: "pSSC(x,y) == (ALL t. ((E(x,t) | E(y,t)) --> SSC(x,y,t)))"


(*theorems for SS and LE *)

theorem SS_imp_E_and_E: "SS(x,y,t) ==> (E(x,t) & E(y,t))"
apply(unfold SS_def)
apply(insert L_exists2)
apply(auto)
done

theorem SS_refl: "ALL x t. (E(x,t) <-> SS(x,x,t))"
apply(unfold SS_def)
apply(insert SSR_refl)
apply(insert L_exists)
apply(auto)
done

theorem SS_sym: "SS(x,y,t) ==> SS(y,x,t)"
apply(unfold SS_def)
apply(insert SSR_sym)
apply(auto)
done

theorem SS_trans: "[|SS(x,y,t);SS(y,z,t)|] ==> SS(x,z,t)"
apply(unfold SS_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. SSR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in SSR_trans)
apply(clarify)
apply(auto)
done



theorem P_and_SS_imp_P: "[|P(x,y,t);SS(x,y,t)|] ==> P(y,x,t)"
apply(unfold SS_def)
apply(clarify)
apply(frule_tac x="x" and y="y" and a="a" and b="b" and t="t" in L_P_PR_rule)
apply(safe)
apply(frule_tac a="a" and b="b" in PR_and_SSR_imp_PR)
apply(assumption)
apply(drule_tac a="a" and b="b" in PR_antisym_rule)
apply(safe)
apply(rule_tac x="x" and y="y" and a="b" and t="t" in P_and_L_and_L_imp_P_rule)
apply(auto)
done

theorem P_and_P_imp_SS: "[|P(x,y,t);P(y,x,t)|] ==> SS(x,y,t)"
apply(unfold SS_def)
apply(drule_tac x="x" and y="y" and t="t" in P_imp_L)
apply(drule_tac x="y" and y="x" and t="t" in P_imp_L)
apply(clarify)
apply(drule_tac x="x" and a="a" and b="ba" and t="t" in L_unique)
apply(assumption)
apply(drule_tac x="y" and a="b" and b="aa" and t="t" in L_unique)
apply(safe)
apply(rule_tac x="ba" in exI)
apply(rule_tac x="aa" in exI)
apply(safe)
apply(rule_tac a="ba" and b="aa" in PR_and_PR_imp_SSR)
apply(auto)
done

theorem LE_total: "[|E(x,t);E(y,t)|] ==> (LE(x,y,t) | LE(y,x,t))"
apply(drule_tac x="x" and t="t" in L_exists1)
apply(drule_tac x="y" and t="t" in L_exists1)
apply(clarify)
apply(unfold LE_def)
apply(rule_tac x="a" in exI)
apply(rule_tac x="aa" in exI)
apply(safe)
apply(auto)
apply(erule_tac x="aa" in allE)
apply(clarify)
apply(erule_tac x="a" in allE)
apply(safe)
apply(insert LER_total)
apply(auto)
done

theorem LE_and_LE_imp_SS: "[|LE(x,y,t);LE(y,x,t)|] ==> SS(x,y,t)"
apply(unfold LE_def)
apply(clarify)
apply(drule_tac x="x" and a="a" and b="ba" and t="t" in L_unique)
apply(drule_tac x="y" and a="aa" and b="b" and t="t" in L_unique)
apply(safe)
apply(unfold SS_def)
apply(rule_tac x="ba" in exI)
apply(rule_tac x="b" in exI)
apply(safe)
apply(drule_tac x="y" and a="aa" and b="b" and t="t" in L_unique)
apply(safe)
apply(rule_tac a="ba" and b="b" in LER_and_LER_imp_SSR)
apply(auto)
done

theorem LE_imp_E_and_E: "LE(x,y,t) ==> (E(x,t) & E(y,t))"
apply(unfold LE_def)
apply(insert L_exists2)
apply(auto)
done


theorem LE_refl: "ALL x t. E(x,t) <-> LE(x,x,t)"
apply(unfold LE_def)
apply(insert L_exists)
apply(insert LER_refl)
apply(auto)
apply(rule_tac x="a" in exI)
apply(auto)
done

theorem LE_trans: "[|LE(x,y,t);LE(y,z,t)|] ==> LE(x,z,t)"
apply(unfold LE_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. LER(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in LER_trans)
apply(auto)
done


theorem LE_and_LE_imp_SS: "[|LE(x,y,t);LE(y,x,t)|] ==> SS(x,y,t)"
apply(unfold LE_def)
apply(unfold SS_def)
apply(clarify)
apply(drule_tac x="x" and a="a" and b="ba" in L_unique)
apply(assumption)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(insert LER_and_LER_imp_SSR)
apply(auto)
done

theorem SS_and_LE_imp_LE: "[|SS(x,y,t);LE(y,z,t)|] ==> LE(x,z,t)"
apply(unfold LE_def,unfold SS_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. LER(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac c="a" and a="b" and b="ba" in SSR_and_LER_imp_LER)
apply(auto)
done

theorem LE_and_SS_imp_LE: "[|LE(x,y,t);SS(y,z,t)|] ==> LE(x,z,t)"
apply(unfold LE_def,unfold SS_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
thm ssubst
apply(drule_tac a="aa" and b="b" and P="% aa. SSR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in LER_and_SSR_imp_LER)
apply(auto)
done


(* ------theorems for RSS and NEG ad SSC --------------------------------------------------*)

theorem RSS_imp_E_and_E: "RSS(x,y,t) ==> (E(x,t) & E(y,t))"
apply(unfold RSS_def)
apply(insert L_exists2)
apply(auto)
done

theorem RSS_refl: "ALL x t. (E(x,t) <-> RSS(x,x,t))"
apply(unfold RSS_def)
apply(insert RSSR_refl)
apply(insert L_exists)
apply(auto)
done

theorem RSS_sym: "RSS(x,y,t) ==> RSS(y,x,t)"
apply(unfold RSS_def)
apply(insert RSSR_sym)
apply(auto)
done

theorem RSS_and_SS_imp_RSS:  "[|RSS(x,y,t);SS(y,z,t)|] ==> RSS(x,z,t)"
apply(unfold RSS_def,unfold SS_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. SSR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in RSSR_and_SSR_imp_RSSR)
apply(auto)
done

theorem SS_and_RSS_imp_RSS:  "[|SS(x,y,t);RSS(y,z,t)|] ==> RSS(x,z,t)"
apply(unfold RSS_def,unfold SS_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. RSSR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in SSR_and_RSSR_imp_RSSR)
apply(auto)
done


theorem NEG_imp_LE: "NEG(x,y,t) ==> LE(x,y,t)"
apply(unfold NEG_def,unfold LE_def)
apply(insert NEGR_imp_LER)
apply(auto)
done

theorem NEG_imp_E_and_E: "NEG(x,y,t) ==>(E(x,t) & E(y,t))"
apply(drule NEG_imp_LE)
apply(drule LE_imp_E_and_E)
apply(auto)
done

theorem NEG_irrefl: "ALL x t. ~NEG(x,x,t)"
apply(unfold NEG_def)
apply(auto)
apply(drule_tac x="x" and a="a" and b="b" and t="t" in L_unique)
apply(clarify)
apply(insert NEGR_irrefl)
apply(auto)
done

theorem NEG_assym: "NEG(x,y,t) ==> ~NEG(y,x,t)"
apply(unfold NEG_def)
apply(safe)
apply(drule_tac x="x" and a="a" and b="ba" and t="t" in L_unique)
apply(assumption)
apply(drule_tac x="y" and a="b" and b="aa" and t="t" in L_unique)
apply(assumption)
apply(insert NEGR_assym)
apply(auto)
done


theorem NEG_trans: "[|NEG(x,y,t);NEG(y,z,t)|] ==> NEG(x,z,t)"
apply(unfold NEG_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. NEGR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in NEGR_trans)
apply(auto)
done

theorem NEG_and_LE_imp_NEG: "[|NEG(x,y,t);LE(y,z,t)|] ==> NEG(x,z,t)"
apply(unfold NEG_def,unfold LE_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. LER(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in NEGR_and_LER_imp_NEGR)
apply(auto)
done

theorem LE_and_NEG_imp_NEG: "[|LE(x,y,t);NEG(y,z,t)|] ==> NEG(x,z,t)"
apply(unfold NEG_def,unfold LE_def)
apply(clarify)
apply(drule_tac x="y" and a="aa" and b="b" in L_unique)
apply(assumption)
apply(drule sym)
apply(frule_tac a="aa" and b="b" and P="% aa. NEGR(aa,ba)" in ssubst)
apply(assumption)
apply(drule_tac a="a" and b="b" and c="ba" in LER_and_NEGR_imp_NEGR)
apply(auto)
done

theorem P_imp_LE: "P(x,y,t) ==> LE(x,y,t)"
apply(unfold LE_def)
apply(drule_tac x="x" and y="y" and t="t" in P_imp_L)
apply(safe)
apply(rule_tac x="a" in exI)
apply(rule_tac x="b" in exI)
apply(safe)
apply(rule PR_imp_LER)
apply(auto)
done


theorem NEG_and_P_imp_NEG: "[|NEG(x,y,t);P(y,z,t)|] ==> NEG(x,z,t)"
apply(drule_tac x="y" and y="z" and t="t" in P_imp_LE)
apply(rule_tac x="x" and z="z" and t="t" in NEG_and_LE_imp_NEG)
apply(auto)
done

theorem P_and_NEG_imp_NEG: "[|P(x,y,t);NEG(y,z,t)|] ==> NEG(x,z,t)"
apply(drule_tac x="x" and y="y" and t="t" in P_imp_LE)
thm LE_and_NEG_imp_NEG
apply(rule_tac x="x" and z="z" and t="t" in LE_and_NEG_imp_NEG)
apply(auto)
done

theorem SSC_refl: "ALL x t. (E(x,t) <-> SSC(x,x,t))"
apply(unfold SSC_def)
apply(insert SSCR_refl)
apply(insert L_exists)
apply(auto)
done

theorem SSC_sym: "SSC(x,y,t) ==> SSC(y,x,t)"
apply(unfold SSC_def)
apply(insert SSCR_sym)
apply(auto)
done

(* ------theorems for pSS and pLE --------------------------------------------------*)


theorem pSS_refl: "ALL x. pSS(x,x)"
apply(unfold pSS_def)
apply(insert SS_refl)
apply(auto)
done

theorem pSS_sym: "pSS(x,y) ==> pSS(y,x)"
apply(unfold pSS_def)
apply(insert SS_sym)
apply(auto)
done

theorem pSS_trans: "[|pSS(x,y);pSS(y,z)|] ==> pSS(x,z)"
apply(unfold pSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in SS_imp_E_and_E)
apply(safe)
apply(drule SS_trans)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in SS_imp_E_and_E)
apply(auto)
apply(drule SS_trans)
apply(auto)
done


theorem pP_and_pSS_imp_pP: "[|pP(x,y);pSS(x,y)|] ==> pP(y,x)"
apply(unfold pP_def, unfold pSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(rule_tac y="y" and x="x" and t="t" in P_and_SS_imp_P)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(rule_tac y="y" and x="x" and t="t" in P_and_SS_imp_P)
apply(safe)
done




theorem pLE_refl: "ALL x. pLE(x,x)"
apply(unfold pLE_def)
apply(insert LE_refl)
apply(auto)
done


theorem pLE_trans: "[|pLE(x,y);pLE(y,z)|] ==> pLE(x,z)"
apply(unfold pLE_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in LE_imp_E_and_E)
apply(safe)
apply(drule LE_trans)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in LE_imp_E_and_E)
apply(auto)
apply(drule LE_trans)
apply(auto)
done

theorem pLE_and_pLE_imp_pSS: "[|pLE(x,y);pLE(y,x)|] ==> pSS(x,y)"
apply(unfold pLE_def,unfold pSS_def)
apply(rule allI)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(insert LE_and_LE_imp_SS)
apply(auto)
done

theorem pSS_and_pLE_imp_pLE: "[|pSS(x,y);pLE(y,z)|] ==> pLE(x,z)"
apply(unfold pLE_def,unfold pSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in SS_imp_E_and_E)
apply(safe)
apply(drule SS_and_LE_imp_LE)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in LE_imp_E_and_E)
apply(auto)
apply(drule SS_and_LE_imp_LE)
apply(auto)
done

theorem pLE_and_pSS_imp_pLE: "[|pLE(x,y);pSS(y,z)|] ==> pLE(x,z)"
apply(unfold pLE_def,unfold pSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in LE_imp_E_and_E)
apply(safe)
apply(drule LE_and_SS_imp_LE)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in SS_imp_E_and_E)
apply(auto)
apply(drule LE_and_SS_imp_LE)
apply(auto)
done


(* ------theorems for pRSS and pNEG pSSC --------------------------------------------------*)

theorem pRSS_refl: "ALL x. pRSS(x,x)"
apply(unfold pRSS_def)
apply(insert RSS_refl)
apply(auto)
done

theorem pRSS_sym: "pRSS(x,y) ==> pRSS(y,x)"
apply(unfold pRSS_def)
apply(insert RSS_sym)
apply(auto)
done


theorem pRSS_and_pSS_imp_pRSS: "[|pRSS(x,y);pSS(y,z)|] ==> pRSS(x,z)"
apply(unfold pSS_def,unfold pRSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in RSS_imp_E_and_E)
apply(safe)
apply(drule RSS_and_SS_imp_RSS)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in SS_imp_E_and_E)
apply(auto)
apply(drule RSS_and_SS_imp_RSS)
apply(auto)
done


theorem pSS_and_pRSS_imp_pRSS: "[|pSS(x,y);pRSS(y,z)|] ==> pRSS(x,z)"
apply(unfold pSS_def,unfold pRSS_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in SS_imp_E_and_E)
apply(safe)
apply(drule SS_and_RSS_imp_RSS)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in RSS_imp_E_and_E)
apply(auto)
apply(drule SS_and_RSS_imp_RSS)
apply(auto)
done

theorem pNEG_irrefl: "ALL x. ~pNEG(x,x)"
apply(insert P_exists1) 
apply(unfold pNEG_def)
apply(auto)
apply(erule_tac x="x" in allE)
apply(erule exE)
apply(rule_tac x="t" in exI)
apply(safe)
apply(insert NEG_irrefl)
apply(erule_tac x="x" in allE)
apply(erule_tac x="t" in allE)
apply(auto)
done

theorem pNEG_assym: "pNEG(x,y) ==> ~pNEG(y,x)"
apply(unfold pNEG_def)
apply(safe)
apply(insert P_exists1)
apply(erule_tac x="x" in allE)
apply(erule exE)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(insert NEG_assym)
apply(auto)
done


theorem pNEG_trans: "[|pNEG(x,y);pNEG(y,z)|] ==> pNEG(x,z)"
apply(unfold pNEG_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in NEG_imp_E_and_E)
apply(safe)
apply(drule NEG_trans)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in NEG_imp_E_and_E)
apply(auto)
apply(drule NEG_trans)
apply(auto)
done

theorem pNEG_and_pLE_imp_pNEG: "[|pNEG(x,y);pLE(y,z)|] ==> pNEG(x,z)"
apply(unfold pNEG_def,unfold pLE_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in NEG_imp_E_and_E)
apply(safe)
apply(drule NEG_and_LE_imp_NEG)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in LE_imp_E_and_E)
apply(auto)
apply(drule NEG_and_LE_imp_NEG)
apply(auto)
done

theorem pLE_and_pNEG_imp_pNEG: "[|pLE(x,y);pNEG(y,z)|] ==> pNEG(x,z)"
apply(unfold pNEG_def,unfold pLE_def)
apply(safe)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="x" and y="y" in LE_imp_E_and_E)
apply(safe)
apply(drule LE_and_NEG_imp_NEG)
apply(auto)
apply(erule_tac x="t" in allE)
apply(erule_tac x="t" in allE)
apply(safe)
apply(drule_tac x="y" and y="z" in NEG_imp_E_and_E)
apply(auto)
apply(drule LE_and_NEG_imp_NEG)
apply(auto)
done

theorem pP_imp_pLE: "pP(x,y) ==> pLE(x,y)"
apply(unfold pP_def,unfold pLE_def)
apply(insert P_imp_LE)
apply(auto)
done

theorem pNEG_and_pP_imp_pNEG: "[|pNEG(x,y);pP(y,z)|] ==> pNEG(x,z)"
apply(drule_tac x="y" and y="z"  in pP_imp_pLE)
apply(rule_tac x="x" and z="z"  in pNEG_and_pLE_imp_pNEG)
apply(auto)
done

theorem pP_and_pNEG_imp_pNEG: "[|pP(x,y);pNEG(y,z)|] ==> pNEG(x,z)"
apply(drule_tac x="x" and y="y" in pP_imp_pLE)
apply(rule_tac x="x" and z="z" in pLE_and_pNEG_imp_pNEG)
apply(auto)
done


theorem pSSC_refl: "ALL x. pSSC(x,x)"
apply(unfold pSSC_def)
apply(insert SSC_refl)
apply(auto)
done

theorem pSSC_sym: "pSSC(x,y) ==> pSSC(y,x)"
apply(unfold pSSC_def)
apply(insert SSC_sym)
apply(auto)
done


end

theorem SS_imp_E_and_E:

  SS(x, y, t) ==> E(x, t) ∧ E(y, t)

theorem SS_refl:

  x t. E(x, t) <-> SS(x, x, t)

theorem SS_sym:

  SS(x, y, t) ==> SS(y, x, t)

theorem SS_trans:

  [| SS(x, y, t); SS(y, z, t) |] ==> SS(x, z, t)

theorem P_and_SS_imp_P:

  [| P(x, y, t); SS(x, y, t) |] ==> P(y, x, t)

theorem P_and_P_imp_SS:

  [| P(x, y, t); P(y, x, t) |] ==> SS(x, y, t)

theorem LE_total:

  [| E(x, t); E(y, t) |] ==> LE(x, y, t) ∨ LE(y, x, t)

theorem LE_and_LE_imp_SS:

  [| LE(x, y, t); LE(y, x, t) |] ==> SS(x, y, t)

theorem LE_imp_E_and_E:

  LE(x, y, t) ==> E(x, t) ∧ E(y, t)

theorem LE_refl:

  x t. E(x, t) <-> LE(x, x, t)

theorem LE_trans:

  [| LE(x, y, t); LE(y, z, t) |] ==> LE(x, z, t)

theorem LE_and_LE_imp_SS:

  [| LE(x, y, t); LE(y, x, t) |] ==> SS(x, y, t)

theorem SS_and_LE_imp_LE:

  [| SS(x, y, t); LE(y, z, t) |] ==> LE(x, z, t)

theorem LE_and_SS_imp_LE:

  [| LE(x, y, t); SS(y, z, t) |] ==> LE(x, z, t)

theorem RSS_imp_E_and_E:

  RSS(x, y, t) ==> E(x, t) ∧ E(y, t)

theorem RSS_refl:

  x t. E(x, t) <-> RSS(x, x, t)

theorem RSS_sym:

  RSS(x, y, t) ==> RSS(y, x, t)

theorem RSS_and_SS_imp_RSS:

  [| RSS(x, y, t); SS(y, z, t) |] ==> RSS(x, z, t)

theorem SS_and_RSS_imp_RSS:

  [| SS(x, y, t); RSS(y, z, t) |] ==> RSS(x, z, t)

theorem NEG_imp_LE:

  NEG(x, y, t) ==> LE(x, y, t)

theorem NEG_imp_E_and_E:

  NEG(x, y, t) ==> E(x, t) ∧ E(y, t)

theorem NEG_irrefl:

  x t. ¬ NEG(x, x, t)

theorem NEG_assym:

  NEG(x, y, t) ==> ¬ NEG(y, x, t)

theorem NEG_trans:

  [| NEG(x, y, t); NEG(y, z, t) |] ==> NEG(x, z, t)

theorem NEG_and_LE_imp_NEG:

  [| NEG(x, y, t); LE(y, z, t) |] ==> NEG(x, z, t)

theorem LE_and_NEG_imp_NEG:

  [| LE(x, y, t); NEG(y, z, t) |] ==> NEG(x, z, t)

theorem P_imp_LE:

  P(x, y, t) ==> LE(x, y, t)

theorem NEG_and_P_imp_NEG:

  [| NEG(x, y, t); P(y, z, t) |] ==> NEG(x, z, t)

theorem P_and_NEG_imp_NEG:

  [| P(x, y, t); NEG(y, z, t) |] ==> NEG(x, z, t)

theorem SSC_refl:

  x t. E(x, t) <-> SSC(x, x, t)

theorem SSC_sym:

  SSC(x, y, t) ==> SSC(y, x, t)

theorem pSS_refl:

  x. pSS(x, x)

theorem pSS_sym:

  pSS(x, y) ==> pSS(y, x)

theorem pSS_trans:

  [| pSS(x, y); pSS(y, z) |] ==> pSS(x, z)

theorem pP_and_pSS_imp_pP:

  [| pP(x, y); pSS(x, y) |] ==> pP(y, x)

theorem pLE_refl:

  x. pLE(x, x)

theorem pLE_trans:

  [| pLE(x, y); pLE(y, z) |] ==> pLE(x, z)

theorem pLE_and_pLE_imp_pSS:

  [| pLE(x, y); pLE(y, x) |] ==> pSS(x, y)

theorem pSS_and_pLE_imp_pLE:

  [| pSS(x, y); pLE(y, z) |] ==> pLE(x, z)

theorem pLE_and_pSS_imp_pLE:

  [| pLE(x, y); pSS(y, z) |] ==> pLE(x, z)

theorem pRSS_refl:

  x. pRSS(x, x)

theorem pRSS_sym:

  pRSS(x, y) ==> pRSS(y, x)

theorem pRSS_and_pSS_imp_pRSS:

  [| pRSS(x, y); pSS(y, z) |] ==> pRSS(x, z)

theorem pSS_and_pRSS_imp_pRSS:

  [| pSS(x, y); pRSS(y, z) |] ==> pRSS(x, z)

theorem pNEG_irrefl:

  x. ¬ pNEG(x, x)

theorem pNEG_assym:

  pNEG(x, y) ==> ¬ pNEG(y, x)

theorem pNEG_trans:

  [| pNEG(x, y); pNEG(y, z) |] ==> pNEG(x, z)

theorem pNEG_and_pLE_imp_pNEG:

  [| pNEG(x, y); pLE(y, z) |] ==> pNEG(x, z)

theorem pLE_and_pNEG_imp_pNEG:

  [| pLE(x, y); pNEG(y, z) |] ==> pNEG(x, z)

theorem pP_imp_pLE:

  pP(x, y) ==> pLE(x, y)

theorem pNEG_and_pP_imp_pNEG:

  [| pNEG(x, y); pP(y, z) |] ==> pNEG(x, z)

theorem pP_and_pNEG_imp_pNEG:

  [| pP(x, y); pNEG(y, z) |] ==> pNEG(x, z)

theorem pSSC_refl:

  x. pSSC(x, x)

theorem pSSC_sym:

  pSSC(x, y) ==> pSSC(y, x)