src/ZF/ind-syntax.ML
changeset 14 1c0926788772
parent 6 8ce8c4d13d4d
child 55 331d93292ee0
equal deleted inserted replaced
13:b73f7e42135e 14:1c0926788772
   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")]