src/HOL/simpdata.ML
changeset 11624 8a45c7abef04
parent 11534 0494d0347f18
child 11684 abd396ca7ef9
equal deleted inserted replaced
11623:9c95b6a76e15 11624:8a45c7abef04
    36     |   _$(Const("op =",_)$_$_) => mk_meta_eq th
    36     |   _$(Const("op =",_)$_$_) => mk_meta_eq th
    37     |   _$(Const("Not",_)$_)    => th RS Eq_FalseI
    37     |   _$(Const("Not",_)$_)    => th RS Eq_FalseI
    38     |   _                       => th RS Eq_TrueI;
    38     |   _                       => th RS Eq_TrueI;
    39 (* last 2 lines requires all formulae to be of the from Trueprop(.) *)
    39 (* last 2 lines requires all formulae to be of the from Trueprop(.) *)
    40 
    40 
    41 fun mk_eq_True r = Some(r RS meta_eq_to_obj_eq RS Eq_TrueI);
    41 fun mk_eq_True r =
       
    42   Some (r RS meta_eq_to_obj_eq RS Eq_TrueI) handle Thm.THM _ => None;
    42 
    43 
    43 (*Congruence rules for = (instead of ==)*)
    44 (*Congruence rules for = (instead of ==)*)
    44 fun mk_meta_cong rl =
    45 fun mk_meta_cong rl =
    45   standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl))
    46   standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl))
    46   handle THM _ =>
    47   handle THM _ =>
   350                    | None => [th])
   351                    | None => [th])
   351               | _ => [th])
   352               | _ => [th])
   352          | _ => [th])
   353          | _ => [th])
   353   in atoms end;
   354   in atoms end;
   354 
   355 
   355 fun mksimps pairs = (map mk_eq o mk_atomize pairs o forall_elim_vars_safe);
   356 fun mksimps pairs =
       
   357   (mapfilter (try mk_eq) o mk_atomize pairs o forall_elim_vars_safe);
   356 
   358 
   357 fun unsafe_solver_tac prems =
   359 fun unsafe_solver_tac prems =
   358   FIRST'[resolve_tac(reflexive_thm::TrueI::refl::prems), atac, etac FalseE];
   360   FIRST'[resolve_tac(reflexive_thm::TrueI::refl::prems), atac, etac FalseE];
   359 val unsafe_solver = mk_solver "HOL unsafe" unsafe_solver_tac;
   361 val unsafe_solver = mk_solver "HOL unsafe" unsafe_solver_tac;
   360 
   362