src/HOL/Tools/lin_arith.ML
changeset 33519 e31a85f92ce9
parent 33339 d41f77196338
child 33520 b2cb4da715f7
equal deleted inserted replaced
33518:24563731b9b2 33519:e31a85f92ce9
    70 end;  (* LA_Logic *)
    70 end;  (* LA_Logic *)
    71 
    71 
    72 
    72 
    73 (* arith context data *)
    73 (* arith context data *)
    74 
    74 
    75 structure Lin_Arith_Data = GenericDataFun
    75 structure Lin_Arith_Data = Generic_Data
    76 (
    76 (
    77   type T = {splits: thm list,
    77   type T = {splits: thm list,
    78             inj_consts: (string * typ) list,
    78             inj_consts: (string * typ) list,
    79             discrete: string list};
    79             discrete: string list};
    80   val empty = {splits = [], inj_consts = [], discrete = []};
    80   val empty = {splits = [], inj_consts = [], discrete = []};
    81   val extend = I;
    81   val extend = I;
    82   fun merge _
    82   fun merge
    83    ({splits= splits1, inj_consts= inj_consts1, discrete= discrete1},
    83    ({splits= splits1, inj_consts= inj_consts1, discrete= discrete1},
    84     {splits= splits2, inj_consts= inj_consts2, discrete= discrete2}) : T =
    84     {splits= splits2, inj_consts= inj_consts2, discrete= discrete2}) : T =
    85    {splits = Library.merge Thm.eq_thm_prop (splits1, splits2),
    85    {splits = Library.merge Thm.eq_thm_prop (splits1, splits2),
    86     inj_consts = Library.merge (op =) (inj_consts1, inj_consts2),
    86     inj_consts = Library.merge (op =) (inj_consts1, inj_consts2),
    87     discrete = Library.merge (op =) (discrete1, discrete2)};
    87     discrete = Library.merge (op =) (discrete1, discrete2)};