src/HOL/BNF/Tools/bnf_def.ML
changeset 53031 83cbe188855a
parent 52957 717a23e14586
child 53039 476db75906ae
equal deleted inserted replaced
53030:1b18e3ce776f 53031:83cbe188855a
    80   val mk_witness: int list * term -> thm list -> nonemptiness_witness
    80   val mk_witness: int list * term -> thm list -> nonemptiness_witness
    81   val minimize_wits: (''a list * 'b) list -> (''a list * 'b) list
    81   val minimize_wits: (''a list * 'b) list -> (''a list * 'b) list
    82   val wits_of_bnf: bnf -> nonemptiness_witness list
    82   val wits_of_bnf: bnf -> nonemptiness_witness list
    83 
    83 
    84   val zip_axioms: 'a -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list
    84   val zip_axioms: 'a -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list
       
    85 
       
    86   val flatten_type_args_of_bnf: bnf -> 'a -> 'a list -> 'a list
    85 
    87 
    86   datatype const_policy = Dont_Inline | Hardly_Inline | Smart_Inline | Do_Inline
    88   datatype const_policy = Dont_Inline | Hardly_Inline | Smart_Inline | Do_Inline
    87   datatype fact_policy = Dont_Note | Note_Some | Note_All
    89   datatype fact_policy = Dont_Note | Note_Some | Note_All
    88 
    90 
    89   val bnf_note_all: bool Config.T
    91   val bnf_note_all: bool Config.T
   318 val deads_of_bnf = #deads o rep_bnf;
   320 val deads_of_bnf = #deads o rep_bnf;
   319 val axioms_of_bnf = #axioms o rep_bnf;
   321 val axioms_of_bnf = #axioms o rep_bnf;
   320 val facts_of_bnf = #facts o rep_bnf;
   322 val facts_of_bnf = #facts o rep_bnf;
   321 val nwits_of_bnf = #nwits o rep_bnf;
   323 val nwits_of_bnf = #nwits o rep_bnf;
   322 val wits_of_bnf = #wits o rep_bnf;
   324 val wits_of_bnf = #wits o rep_bnf;
       
   325 
       
   326 fun flatten_type_args_of_bnf bnf dead_x xs =
       
   327   let
       
   328     val Type (_, Ts) = T_of_bnf bnf;
       
   329     val lives = lives_of_bnf bnf;
       
   330     val deads = deads_of_bnf bnf;
       
   331   in
       
   332     sort_like (op =) (deads @ lives) (replicate (length deads) dead_x @ xs) Ts
       
   333   end;
   323 
   334 
   324 (*terms*)
   335 (*terms*)
   325 val map_of_bnf = #map o rep_bnf;
   336 val map_of_bnf = #map o rep_bnf;
   326 val sets_of_bnf = #sets o rep_bnf;
   337 val sets_of_bnf = #sets o rep_bnf;
   327 fun mk_map_of_bnf Ds Ts Us bnf =
   338 fun mk_map_of_bnf Ds Ts Us bnf =