src/HOL/Tools/Qelim/cooper.ML
changeset 23514 25e69e56355d
parent 23484 731658208196
child 23520 483fe92f00c1
equal deleted inserted replaced
23513:2ebb50c0db4f 23514:25e69e56355d
   309   | Const("op &",_)$_$_ => h (h (acc,dacc) (Thm.dest_arg1 t)) (Thm.dest_arg t)
   309   | Const("op &",_)$_$_ => h (h (acc,dacc) (Thm.dest_arg1 t)) (Thm.dest_arg t)
   310   | Const("op |",_)$_$_ => h (h (acc,dacc) (Thm.dest_arg1 t)) (Thm.dest_arg t)
   310   | Const("op |",_)$_$_ => h (h (acc,dacc) (Thm.dest_arg1 t)) (Thm.dest_arg t)
   311   | Const("Not",_)$_ => h (acc,dacc) (Thm.dest_arg t)
   311   | Const("Not",_)$_ => h (acc,dacc) (Thm.dest_arg t)
   312   | _ => (acc, dacc)
   312   | _ => (acc, dacc)
   313   val (cs,ds) = h ([],[]) p
   313   val (cs,ds) = h ([],[]) p
   314   val l = fold (curry lcm) (cs union ds) 1
   314   val l = fold Integer.lcm (cs union ds) 1
   315   fun cv k ct = 
   315   fun cv k ct = 
   316     let val (tm as b$s$t) = term_of ct 
   316     let val (tm as b$s$t) = term_of ct 
   317     in ((HOLogic.eq_const bT)$tm$(b$(linear_cmul k s)$(linear_cmul k t))
   317     in ((HOLogic.eq_const bT)$tm$(b$(linear_cmul k s)$(linear_cmul k t))
   318          |> HOLogic.mk_Trueprop |> provelin ctxt) RS eq_reflection end
   318          |> HOLogic.mk_Trueprop |> provelin ctxt) RS eq_reflection end
   319   fun nzprop x = 
   319   fun nzprop x = 
   402   | Ge t => (ins (minus1 t) bacc, aacc,dacc)
   402   | Ge t => (ins (minus1 t) bacc, aacc,dacc)
   403   | Dvd (d,s) => (bacc,aacc,insert int_eq (term_of d |> dest_numeral) dacc)
   403   | Dvd (d,s) => (bacc,aacc,insert int_eq (term_of d |> dest_numeral) dacc)
   404   | NDvd (d,s) => (bacc,aacc,insert int_eq (term_of d|> dest_numeral) dacc)
   404   | NDvd (d,s) => (bacc,aacc,insert int_eq (term_of d|> dest_numeral) dacc)
   405   | _ => (bacc, aacc, dacc)
   405   | _ => (bacc, aacc, dacc)
   406  val (b0,a0,ds) = h p ([],[],[])
   406  val (b0,a0,ds) = h p ([],[],[])
   407  val d = fold (curry lcm) ds 1
   407  val d = fold Integer.lcm ds 1
   408  val cd = mk_cnumber @{ctyp "int"} d
   408  val cd = mk_cnumber @{ctyp "int"} d
   409  val dt = term_of cd
   409  val dt = term_of cd
   410  fun divprop x = 
   410  fun divprop x = 
   411    let 
   411    let 
   412     val th = 
   412     val th =