125 |
125 |
126 (*Used by intr-elim.ML and in individual datatype definitions*) |
126 (*Used by intr-elim.ML and in individual datatype definitions*) |
127 val basic_monos = [subset_refl, imp_refl, disj_mono, conj_mono, |
127 val basic_monos = [subset_refl, imp_refl, disj_mono, conj_mono, |
128 ex_mono, Collect_mono, Part_mono, in_mono]; |
128 ex_mono, Collect_mono, Part_mono, in_mono]; |
129 |
129 |
|
130 (*Return the conclusion of a rule, of the form t:X*) |
130 fun rule_concl rl = |
131 fun rule_concl rl = |
131 let val Const("op :",_) $ t $ X = dest_tprop (Logic.strip_imp_concl rl) |
132 case dest_tprop (Logic.strip_imp_concl rl) of |
132 in (t,X) end |
133 Const("op :",_) $ t $ X => (t,X) |
133 handle _ => error "Conclusion of rule should be a set membership"; |
134 | _ => error "Conclusion of rule should be a set membership"; |
134 |
135 |
135 (*For deriving cases rules. CollectD2 discards the domain, which is redundant; |
136 (*For deriving cases rules. CollectD2 discards the domain, which is redundant; |
136 read_instantiate replaces a propositional variable by a formula variable*) |
137 read_instantiate replaces a propositional variable by a formula variable*) |
137 val equals_CollectD = |
138 val equals_CollectD = |
138 read_instantiate [("W","?Q")] |
139 read_instantiate [("W","?Q")] |