src/HOL/Tools/BNF/bnf_fp_rec_sugar_util.ML
changeset 64674 ef0a5fd30f3b
parent 62687 1c4842b32bfb
child 64705 7596b0736ab9
equal deleted inserted replaced
64673:b5965890e54d 64674:ef0a5fd30f3b
    54 
    54 
    55   val mk_co_rec: theory -> fp_kind -> typ list -> typ -> term -> term
    55   val mk_co_rec: theory -> fp_kind -> typ list -> typ -> term -> term
    56 
    56 
    57   val mk_conjunctN: int -> int -> thm
    57   val mk_conjunctN: int -> int -> thm
    58   val conj_dests: int -> thm -> thm list
    58   val conj_dests: int -> thm -> thm list
       
    59 
       
    60   val print_def_consts: bool -> (term * (string * thm)) list -> Proof.context -> unit
    59 end;
    61 end;
    60 
    62 
    61 structure BNF_FP_Rec_Sugar_Util : BNF_FP_REC_SUGAR_UTIL =
    63 structure BNF_FP_Rec_Sugar_Util : BNF_FP_REC_SUGAR_UTIL =
    62 struct
    64 struct
    63 
    65 
   172   | mk_conjunctN 2 2 = conjunct2
   174   | mk_conjunctN 2 2 = conjunct2
   173   | mk_conjunctN n m = conjunct2 RS (mk_conjunctN (n - 1) (m - 1));
   175   | mk_conjunctN n m = conjunct2 RS (mk_conjunctN (n - 1) (m - 1));
   174 
   176 
   175 fun conj_dests n thm = map (fn k => thm RS mk_conjunctN n k) (1 upto n);
   177 fun conj_dests n thm = map (fn k => thm RS mk_conjunctN n k) (1 upto n);
   176 
   178 
       
   179 fun print_def_consts int defs ctxt =
       
   180   Proof_Display.print_consts int (Position.thread_data ()) ctxt (K false)
       
   181     (map_filter (try (dest_Free o fst)) defs);
       
   182 
   177 end;
   183 end;