src/Provers/Arith/fast_lin_arith.ML
changeset 23297 06f108974fa1
parent 23261 85f27f79232f
child 23520 483fe92f00c1
equal deleted inserted replaced
23296:25f28f9c28a3 23297:06f108974fa1
   497      end handle FalseE thm => trace_thm "False reached early:" thm
   497      end handle FalseE thm => trace_thm "False reached early:" thm
   498   end
   498   end
   499 end;
   499 end;
   500 
   500 
   501 fun coeff poly atom =
   501 fun coeff poly atom =
   502   AList.lookup (op =) poly atom |> the_default Integer.zero;
   502   AList.lookup (op =) poly atom |> the_default (0: integer);
   503 
   503 
   504 fun lcms ks = fold Integer.lcm ks Integer.one;
   504 fun lcms ks = fold Integer.lcm ks 1;
   505 
   505 
   506 fun integ(rlhs,r,rel,rrhs,s,d) =
   506 fun integ(rlhs,r,rel,rrhs,s,d) =
   507 let val (rn,rd) = Rat.quotient_of_rat r and (sn,sd) = Rat.quotient_of_rat s
   507 let val (rn,rd) = Rat.quotient_of_rat r and (sn,sd) = Rat.quotient_of_rat s
   508     val m = lcms(map (abs o snd o Rat.quotient_of_rat) (r :: s :: map snd rlhs @ map snd rrhs))
   508     val m = lcms(map (abs o snd o Rat.quotient_of_rat) (r :: s :: map snd rlhs @ map snd rrhs))
   509     fun mult(t,r) =
   509     fun mult(t,r) =