src/HOL/Tools/lin_arith.ML
changeset 44654 d80fe56788a5
parent 44064 5bce8ff0d9ae
child 44946 64469ea43735
equal deleted inserted replaced
44653:6d8d09b90398 44654:d80fe56788a5
    20   val setup: Context.generic -> Context.generic
    20   val setup: Context.generic -> Context.generic
    21   val global_setup: theory -> theory
    21   val global_setup: theory -> theory
    22   val split_limit: int Config.T
    22   val split_limit: int Config.T
    23   val neq_limit: int Config.T
    23   val neq_limit: int Config.T
    24   val verbose: bool Config.T
    24   val verbose: bool Config.T
    25   val trace: bool Unsynchronized.ref
    25   val trace: bool Config.T
    26 end;
    26 end;
    27 
    27 
    28 structure Lin_Arith: LIN_ARITH =
    28 structure Lin_Arith: LIN_ARITH =
    29 struct
    29 struct
    30 
    30 
   100   {splits = splits, inj_consts = update (op =) c inj_consts,
   100   {splits = splits, inj_consts = update (op =) c inj_consts,
   101    discrete = discrete});
   101    discrete = discrete});
   102 
   102 
   103 val split_limit = Attrib.setup_config_int @{binding linarith_split_limit} (K 9);
   103 val split_limit = Attrib.setup_config_int @{binding linarith_split_limit} (K 9);
   104 val neq_limit = Attrib.setup_config_int @{binding linarith_neq_limit} (K 9);
   104 val neq_limit = Attrib.setup_config_int @{binding linarith_neq_limit} (K 9);
   105 val verbose  = Attrib.setup_config_bool @{binding linarith_verbose} (K true);
   105 val verbose = Attrib.setup_config_bool @{binding linarith_verbose} (K true);
       
   106 val trace = Attrib.setup_config_bool @{binding linarith_trace} (K false);
   106 
   107 
   107 
   108 
   108 structure LA_Data =
   109 structure LA_Data =
   109 struct
   110 struct
   110 
   111 
   111 val fast_arith_neq_limit = neq_limit;
   112 val neq_limit = neq_limit;
   112 val fast_arith_verbose = verbose;
   113 val verbose = verbose;
       
   114 val trace = trace;
   113 
   115 
   114 
   116 
   115 (* Decomposition of terms *)
   117 (* Decomposition of terms *)
   116 
   118 
   117 (*internal representation of linear (in-)equations*)
   119 (*internal representation of linear (in-)equations*)
   777 val add_simprocs = Fast_Arith.add_simprocs;
   779 val add_simprocs = Fast_Arith.add_simprocs;
   778 val set_number_of = Fast_Arith.set_number_of;
   780 val set_number_of = Fast_Arith.set_number_of;
   779 
   781 
   780 fun simple_tac ctxt = Fast_Arith.lin_arith_tac ctxt false;
   782 fun simple_tac ctxt = Fast_Arith.lin_arith_tac ctxt false;
   781 val lin_arith_tac = Fast_Arith.lin_arith_tac;
   783 val lin_arith_tac = Fast_Arith.lin_arith_tac;
   782 val trace = Fast_Arith.trace;
       
   783 
   784 
   784 (* reduce contradictory <= to False.
   785 (* reduce contradictory <= to False.
   785    Most of the work is done by the cancel tactics. *)
   786    Most of the work is done by the cancel tactics. *)
   786 
   787 
   787 val init_arith_data =
   788 val init_arith_data =