16 val mk_setT: typ -> typ |
16 val mk_setT: typ -> typ |
17 val dest_setT: typ -> typ |
17 val dest_setT: typ -> typ |
18 val Trueprop: term |
18 val Trueprop: term |
19 val mk_Trueprop: term -> term |
19 val mk_Trueprop: term -> term |
20 val dest_Trueprop: term -> term |
20 val dest_Trueprop: term -> term |
|
21 val Trueprop_conv: (cterm -> thm) -> cterm -> thm |
21 val conj: term |
22 val conj: term |
22 val disj: term |
23 val disj: term |
23 val imp: term |
24 val imp: term |
24 val Not: term |
25 val Not: term |
25 val mk_conj: term * term -> term |
26 val mk_conj: term * term -> term |
129 fun mk_Trueprop P = Trueprop $ P; |
130 fun mk_Trueprop P = Trueprop $ P; |
130 |
131 |
131 fun dest_Trueprop (Const ("Trueprop", _) $ P) = P |
132 fun dest_Trueprop (Const ("Trueprop", _) $ P) = P |
132 | dest_Trueprop t = raise TERM ("dest_Trueprop", [t]); |
133 | dest_Trueprop t = raise TERM ("dest_Trueprop", [t]); |
133 |
134 |
|
135 fun Trueprop_conv conv ct = (case term_of ct of |
|
136 Const ("Trueprop", _) $ _ => |
|
137 let val (ct1, ct2) = Thm.dest_comb ct |
|
138 in Thm.combination (Thm.reflexive ct1) (conv ct2) end |
|
139 | _ => raise TERM ("Trueprop_conv", [])); |
134 |
140 |
135 val conj = Const ("op &", [boolT, boolT] ---> boolT) |
141 val conj = Const ("op &", [boolT, boolT] ---> boolT) |
136 and disj = Const ("op |", [boolT, boolT] ---> boolT) |
142 and disj = Const ("op |", [boolT, boolT] ---> boolT) |
137 and imp = Const ("op -->", [boolT, boolT] ---> boolT) |
143 and imp = Const ("op -->", [boolT, boolT] ---> boolT) |
138 and Not = Const ("Not", boolT --> boolT); |
144 and Not = Const ("Not", boolT --> boolT); |