bool(4)
/\の定義.
AND_DEF: `(/\) = \t1 t2. (\f:bool->bool->bool. f t1 t2) = (\f. f T T)` CONJ `ASM1 |- a` `ASM2 |- b` gives `ASM1+ASM2 |- a /\ b` CONJUNCT1 `ASM |- a /\ b` gives `ASM1 |- a` CONJUNCT2 `ASM |- a /\ b` gives `ASM1 |- b` CONJ_PAIR th = (CONJUNCT1 th, CONJUNCT2 th) CONJUNCTS th gives a list of theorems, one for each conjunct of the conclusion of th (no matter how they are associated)
# CONJ (ASSUME `p:bool`) (ASSUME `q:bool`);; val it : thm = p, q |- p /\ q
\/ の定義
OR_DEF: `(\/) = \t1 t2. !t. (t1 ==> t) ==> (t2 ==> t) ==> t` DISJ1 `ASM |- a` `b` gives `ASM |- a \/ b` DISJ2 `a` `ASM |- b` gives `ASM |- a \/ b` DISJ_CASES `ASM1 |- a \/ b` `ASM2,a |- c` `ASM3,b |- c` gives `ASM1,ASM2,ASM3 |- c` SIMPLE_DISJ_CASES `ASM1,a |- c` `ASM2,b |- c` gives `ASM1,ASM2,a \/ b |- c` (a and b must be the first hypotheses)
# SIMPLE_DISJ_CASES (ASSUME `p:bool`) (ASSUME `p:bool`);; val it : thm = p \/ p |- p # let thm1 = UNDISCH(REAL_RING `x = &1==> x * x = &1`) and thm2 = UNDISCH(REAL_RING `x = -- &1==> x * x = &1`);; 2 basis elements and 0 critical pairs 2 basis elements and 0 critical pairs val thm1 : thm = x = &1 |- x * x = &1 val thm2 : thm = x = -- &1 |- x * x = &1 # SIMPLE_DISJ_CASES thm1 thm2;; val it : thm = x = &1 \/ x = -- &1 |- x * x = &1