src/HOL/Tools/lin_arith.ML
changeset 63949 e7e41db7221b
parent 63948 429cfc5f2559
child 63950 cdc1e59aa513
equal deleted inserted replaced
63948:429cfc5f2559 63949:e7e41db7221b
   205         if nT T then add_atom all m pi else poly (t, ~ m, pi)
   205         if nT T then add_atom all m pi else poly (t, ~ m, pi)
   206     | poly (Const (@{const_name Groups.zero}, _), _, pi) =
   206     | poly (Const (@{const_name Groups.zero}, _), _, pi) =
   207         pi
   207         pi
   208     | poly (Const (@{const_name Groups.one}, _), m, (p, i)) =
   208     | poly (Const (@{const_name Groups.one}, _), m, (p, i)) =
   209         (p, Rat.add i m)
   209         (p, Rat.add i m)
   210     | poly (all as Const ("Num.numeral_class.numeral", Type(_,[_,_])) (*DYNAMIC BINDING!*) $ t, m, pi as (p, i)) =
   210     | poly (all as Const ("Num.numeral_class.numeral", _) (*DYNAMIC BINDING!*) $ t, m, pi as (p, i)) =
   211         (let val k = HOLogic.dest_numeral t
   211         (let val k = HOLogic.dest_numeral t
   212         in (p, Rat.add i (Rat.mult m (Rat.of_int k))) end
   212         in (p, Rat.add i (Rat.mult m (Rat.of_int k))) end
   213         handle TERM _ => add_atom all m pi)
   213         handle TERM _ => add_atom all m pi)
   214     | poly (Const (@{const_name Suc}, _) $ t, m, (p, i)) =
   214     | poly (Const (@{const_name Suc}, _) $ t, m, (p, i)) =
   215         poly (t, m, (p, Rat.add i m))
   215         poly (t, m, (p, Rat.add i m))