3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory
4 Copyright 1993 University of Cambridge
6 Intuitionistic first-order logic
26 Trueprop :: "o => prop" ("(_)" 5)
31 "=" :: "['a, 'a] => o" (infixl 50)
32 "~=" :: "['a, 'a] => o" ("(_ ~=/ _)" [50, 51] 50)
34 Not :: "o => o" ("~ _" [40] 40)
35 "&" :: "[o, o] => o" (infixr 35)
36 "|" :: "[o, o] => o" (infixr 30)
37 "-->" :: "[o, o] => o" (infixr 25)
38 "<->" :: "[o, o] => o" (infixr 25)
42 All :: "('a => o) => o" (binder "ALL " 10)
43 Ex :: "('a => o) => o" (binder "EX " 10)
44 Ex1 :: "('a => o) => o" (binder "EX! " 10)
48 "x ~= y" == "~ (x = y)"
56 subst "[| a=b; P(a) |] ==> P(b)"
58 (* Propositional logic *)
60 conjI "[| P; Q |] ==> P&Q"
66 disjE "[| P|Q; P ==> R; Q ==> R |] ==> R"
68 impI "(P ==> Q) ==> P-->Q"
69 mp "[| P-->Q; P |] ==> Q"
75 True_def "True == False-->False"
76 not_def "~P == P-->False"
77 iff_def "P<->Q == (P-->Q) & (Q-->P)"
79 (* Unique existence *)
81 ex1_def "EX! x. P(x) == EX x. P(x) & (ALL y. P(y) --> y=x)"
85 allI "(!!x. P(x)) ==> (ALL x.P(x))"
86 spec "(ALL x.P(x)) ==> P(x)"
88 exI "P(x) ==> (EX x.P(x))"
89 exE "[| EX x.P(x); !!x. P(x) ==> R |] ==> R"
93 eq_reflection "(x=y) ==> (x==y)"
94 iff_reflection "(P<->Q) ==> (P==Q)"