src/HOL/BNF/Tools/bnf_def_tactics.ML
changeset 51915 87767611de37
parent 51894 7c43b8df0f5d
child 51916 eac9e9a45bf5
equal deleted inserted replaced
51914:df962fe09a37 51915:87767611de37
    19   val mk_rel_Grp_tac: thm list -> thm -> thm -> thm -> thm -> thm list ->
    19   val mk_rel_Grp_tac: thm list -> thm -> thm -> thm -> thm -> thm list ->
    20     {prems: thm list, context: Proof.context} -> tactic
    20     {prems: thm list, context: Proof.context} -> tactic
    21   val mk_rel_eq_tac: int -> thm -> thm -> thm -> tactic
    21   val mk_rel_eq_tac: int -> thm -> thm -> thm -> tactic
    22   val mk_rel_OO_tac: thm list -> thm -> thm -> thm -> thm -> thm list ->
    22   val mk_rel_OO_tac: thm list -> thm -> thm -> thm -> thm -> thm list ->
    23     {prems: thm list, context: Proof.context} -> tactic
    23     {prems: thm list, context: Proof.context} -> tactic
    24   val mk_in_rel_tac: thm list -> {prems: 'b, context: Proof.context} -> tactic
    24   val mk_in_rel_tac: thm -> {prems: 'a, context: Proof.context} -> tactic
    25   val mk_rel_conversep_tac: thm -> thm -> tactic
    25   val mk_rel_conversep_tac: thm -> thm -> tactic
    26   val mk_rel_conversep_le_tac: thm list -> thm -> thm -> thm -> thm list ->
    26   val mk_rel_conversep_le_tac: thm list -> thm -> thm -> thm -> thm list ->
    27     {prems: thm list, context: Proof.context} -> tactic
    27     {prems: thm list, context: Proof.context} -> tactic
    28   val mk_rel_mono_tac: thm list -> thm -> {prems: 'a, context: Proof.context} -> tactic
    28   val mk_rel_mono_tac: thm list -> thm -> {prems: 'a, context: Proof.context} -> tactic
    29 end;
    29 end;
   183         EVERY' (map (fn thm => EVERY' [rtac @{thm GrpI}, rtac trans,
   183         EVERY' (map (fn thm => EVERY' [rtac @{thm GrpI}, rtac trans,
   184           rtac trans, rtac map_cong0, REPEAT_DETERM_N n o rtac thm,
   184           rtac trans, rtac map_cong0, REPEAT_DETERM_N n o rtac thm,
   185           rtac (map_comp RS sym), atac, atac]) [@{thm fst_fstOp}, @{thm snd_sndOp}])] 1
   185           rtac (map_comp RS sym), atac, atac]) [@{thm fst_fstOp}, @{thm snd_sndOp}])] 1
   186   end;
   186   end;
   187 
   187 
   188 fun mk_in_rel_tac rel_OO_Grs {context = ctxt, prems = _} =
   188 fun mk_in_rel_tac rel_OO_Gr {context = ctxt, prems = _} =
   189   unfold_thms_tac ctxt rel_OO_Grs THEN
   189   EVERY' [rtac (rel_OO_Gr RS fun_cong RS fun_cong RS trans), rtac iffI,
   190   EVERY' [rtac iffI,
       
   191     REPEAT_DETERM o eresolve_tac [@{thm GrpE}, @{thm relcomppE}, @{thm conversepE}],
   190     REPEAT_DETERM o eresolve_tac [@{thm GrpE}, @{thm relcomppE}, @{thm conversepE}],
   192     hyp_subst_tac ctxt, rtac exI, rtac conjI, atac, rtac conjI, rtac refl, rtac refl,
   191     hyp_subst_tac ctxt, rtac exI, rtac conjI, atac, rtac conjI, rtac refl, rtac refl,
   193     REPEAT_DETERM o eresolve_tac [exE, conjE], rtac @{thm relcomppI}, rtac @{thm conversepI},
   192     REPEAT_DETERM o eresolve_tac [exE, conjE], rtac @{thm relcomppI}, rtac @{thm conversepI},
   194     etac @{thm GrpI}, atac, etac @{thm GrpI}, atac] 1;
   193     etac @{thm GrpI}, atac, etac @{thm GrpI}, atac] 1;
   195 
   194