diff --git a/sandbox/boolops.lp b/sandbox/boolops.lp index 7e3f41580eea0d6a6362b3f473ff6c7e7837f908..e5cde104d7bfbbf778aafcaba66c2bc36e1c1627 100644 --- a/sandbox/boolops.lp +++ b/sandbox/boolops.lp @@ -3,7 +3,7 @@ require open personoj.encodings.lhol require open personoj.encodings.pvs_cert require open personoj.encodings.equality -require open personoj.encodings.booleans +require open personoj.encodings.bool_hol symbol imp: ∀P: Bool, (ε P ⇒ η bool) ⇒ η bool set infix left 6 "⊃" ≔ imp @@ -13,13 +13,24 @@ require personoj.paper.rat as Q set builtin "0" ≔ Q.Z set builtin "+1" ≔ Q.S -theorem zisnotz (h: ε false): ε (Q.{|nznat?|} 0) +theorem exfalso (_: ε false) (P: Bool): ε P proof - assume Hf _ - refine Hf + assume false P + refine false P qed -// Computes ⊥ ⊃ (1 / 0) = 1 / 0 +// Computes ⊥ ⊃ (1/0 = 1/0) compute false ⊃ (λh, - let ooz ≔ Q.div 1 (pair 0 (zisnotz h)) in + let ooz ≔ Q.div 1 (pair 0 (exfalso h (Q.{|nznat?|} 0))) in eq ooz ooz) + +definition Qone ≔ Q.div 1 (pair 1 (Q.s_not_z 0)) + +// If ⊥ then 1/0 else 1/1 +compute if false (λh: ε false, + let z ≔ pair 0 (exfalso h (Q.{|nznat?|} 0)) in + Q.div 1 z) + (λ_, Qone) + +// TODO: some work with excluded middle to have the same proposition +// as above but with [if true] and reversed arguments.