src/HOL/BNF/Tools/bnf_def_tactics.ML
changeset 51894 7c43b8df0f5d
parent 51893 596baae88a88
child 51915 87767611de37
equal deleted inserted replaced
51893:596baae88a88 51894:7c43b8df0f5d
    16   val mk_map_wppull_tac: thm -> thm -> thm -> thm -> thm list -> tactic
    16   val mk_map_wppull_tac: thm -> thm -> thm -> thm -> thm list -> tactic
    17   val mk_set_map': thm -> thm
    17   val mk_set_map': thm -> thm
    18 
    18 
    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 -> {prems: 'a, context: Proof.context} -> 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 list -> {prems: 'b, 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 ->
   102                 rtac @{thm convol_mem_GrpI[OF refl]}, etac set_mp, atac])
   102                 rtac @{thm convol_mem_GrpI[OF refl]}, etac set_mp, atac])
   103             set_maps])
   103             set_maps])
   104           @{thms fst_convol snd_convol} [map_id', refl])] 1
   104           @{thms fst_convol snd_convol} [map_id', refl])] 1
   105   end;
   105   end;
   106 
   106 
   107 fun mk_rel_eq_tac n rel_Grp rel_cong map_id {context = ctxt, prems = _} =
   107 fun mk_rel_eq_tac n rel_Grp rel_cong map_id =
   108   (EVERY' (rtac (rel_cong RS trans) :: replicate n (rtac @{thm eq_alt})) THEN'
   108   (EVERY' (rtac (rel_cong RS trans) :: replicate n (rtac @{thm eq_alt})) THEN'
   109   rtac (rel_Grp RSN (2, @{thm box_equals[OF _ sym sym[OF eq_alt]]})) THEN'
   109   rtac (rel_Grp RSN (2, @{thm box_equals[OF _ sym sym[OF eq_alt]]})) THEN'
   110   (if n = 0 then rtac refl
   110   (if n = 0 then rtac refl
   111   else EVERY' [rtac @{thm arg_cong2[of _ _ _ _ "Grp"]},
   111   else EVERY' [rtac @{thm arg_cong2[of _ _ _ _ "Grp"]},
   112     rtac @{thm equalityI}, rtac subset_UNIV, rtac subsetI, rtac CollectI,
   112     rtac @{thm equalityI}, rtac subset_UNIV, rtac subsetI, rtac CollectI,