src/HOL/Codatatype/Tools/bnf_comp_tactics.ML
changeset 49284 5f39b7940b49
parent 48975 7f79f94a432c
child 49304 6964373dd6ac
equal deleted inserted replaced
49283:97809ae5f7bb 49284:5f39b7940b49
    31   val mk_liftN_in_bd_tac: int -> thm -> thm -> thm -> tactic
    31   val mk_liftN_in_bd_tac: int -> thm -> thm -> thm -> tactic
    32   val mk_liftN_set_bd_tac: thm -> tactic
    32   val mk_liftN_set_bd_tac: thm -> tactic
    33 
    33 
    34   val mk_permute_in_alt_tac: ''a list -> ''a list -> tactic
    34   val mk_permute_in_alt_tac: ''a list -> ''a list -> tactic
    35   val mk_permute_in_bd_tac: ''a list -> ''a list -> thm -> thm -> thm -> tactic
    35   val mk_permute_in_bd_tac: ''a list -> ''a list -> thm -> thm -> thm -> tactic
       
    36 
       
    37   val mk_map_wpull_tac: thm -> thm list -> thm -> tactic
       
    38   val mk_simple_wit_tac: thm list -> tactic
    36 end;
    39 end;
    37 
    40 
    38 structure BNF_Comp_Tactics : BNF_COMP_TACTICS =
    41 structure BNF_Comp_Tactics : BNF_COMP_TACTICS =
    39 struct
    42 struct
    40 
    43 
   389   rtac @{thm ctwo_Cnotzero} THEN'
   392   rtac @{thm ctwo_Cnotzero} THEN'
   390   rtac disjI1 THEN'
   393   rtac disjI1 THEN'
   391   TRY o rtac @{thm csum_Cnotzero2} THEN'
   394   TRY o rtac @{thm csum_Cnotzero2} THEN'
   392   rtac @{thm ctwo_Cnotzero}) 1;
   395   rtac @{thm ctwo_Cnotzero}) 1;
   393 
   396 
       
   397 fun mk_map_wpull_tac comp_in_alt inner_map_wpulls outer_map_wpull =
       
   398   (rtac (@{thm wpull_cong} OF (replicate 3 comp_in_alt)) THEN' rtac outer_map_wpull) 1 THEN
       
   399   WRAP (fn thm => rtac thm 1 THEN REPEAT_DETERM (atac 1)) (K all_tac) inner_map_wpulls all_tac THEN
       
   400   TRY (REPEAT_DETERM (atac 1 ORELSE rtac @{thm wpull_id} 1));
       
   401 
       
   402 fun mk_simple_wit_tac wit_thms = ALLGOALS (atac ORELSE' eresolve_tac (@{thm emptyE} :: wit_thms));
       
   403 
   394 end;
   404 end;