src/FOL/IFOL_lemmas.ML
changeset 7422 c63d619286a3
parent 7355 4c43090659ca
child 9264 051592f4236a
equal deleted inserted replaced
7421:0577bb18b1ab 7422:c63d619286a3
   249 
   249 
   250 qed_goal "trans" (the_context ()) "[| a=b;  b=c |] ==> a=c"
   250 qed_goal "trans" (the_context ()) "[| a=b;  b=c |] ==> a=c"
   251  (fn [prem1,prem2] => [ (rtac (prem2 RS subst) 1), (rtac prem1 1) ]);
   251  (fn [prem1,prem2] => [ (rtac (prem2 RS subst) 1), (rtac prem1 1) ]);
   252 
   252 
   253 (** ~ b=a ==> ~ a=b **)
   253 (** ~ b=a ==> ~ a=b **)
   254 val [not_sym] = compose(sym,2,contrapos);
   254 bind_thm ("not_sym", hd (compose(sym,2,contrapos)));
   255 
   255 
   256 
   256 
   257 (* Two theorms for rewriting only one instance of a definition:
   257 (* Two theorms for rewriting only one instance of a definition:
   258    the first for definitions of formulae and the second for terms *)
   258    the first for definitions of formulae and the second for terms *)
   259 
   259 
   356                map (fn th => read_instantiate [("P",c)] th)
   356                map (fn th => read_instantiate [("P",c)] th)
   357                    [pred1_cong,pred2_cong,pred3_cong])
   357                    [pred1_cong,pred2_cong,pred3_cong])
   358                (explode"PQRS"));
   358                (explode"PQRS"));
   359 
   359 
   360 (*special case for the equality predicate!*)
   360 (*special case for the equality predicate!*)
   361 val eq_cong = read_instantiate [("P","op =")] pred2_cong;
   361 bind_thm ("eq_cong", read_instantiate [("P","op =")] pred2_cong);
   362 
   362 
   363 
   363 
   364 (*** Simplifications of assumed implications.
   364 (*** Simplifications of assumed implications.
   365      Roy Dyckhoff has proved that conj_impE, disj_impE, and imp_impE
   365      Roy Dyckhoff has proved that conj_impE, disj_impE, and imp_impE
   366      used with mp_tac (restricted to atomic formulae) is COMPLETE for 
   366      used with mp_tac (restricted to atomic formulae) is COMPLETE for