src/Tools/isac/Knowledge/RootEq.thy
branchisac-update-Isa09-2
changeset 38034 928cebc9c4aa
parent 38031 460c24a6a6ba
child 41922 32d7766945fb
equal deleted inserted replaced
38033:491b133d154a 38034:928cebc9c4aa
   155      let
   155      let
   156 	fun coeff_in c v = member op = (vars c) v;
   156 	fun coeff_in c v = member op = (vars c) v;
   157         fun isnorm (_ $ _ $ _ $ _) v = error("is_normSqrtTerm_in:")
   157         fun isnorm (_ $ _ $ _ $ _) v = error("is_normSqrtTerm_in:")
   158 	  (* at the moment there is no term like this, but ....*)
   158 	  (* at the moment there is no term like this, but ....*)
   159           | isnorm (Const ("Groups.plus_class.plus",_) $ _ $ t2) v = is_sqrtTerm_in t2 v
   159           | isnorm (Const ("Groups.plus_class.plus",_) $ _ $ t2) v = is_sqrtTerm_in t2 v
   160           | isnorm (Const ("op *",_) $ _ $ t2) v = is_sqrtTerm_in t2 v
   160           | isnorm (Const ("Groups.times_class.times",_) $ _ $ t2) v = is_sqrtTerm_in t2 v
   161           | isnorm (Const ("Groups.minus_class.minus",_) $ _ $ _) v = false
   161           | isnorm (Const ("Groups.minus_class.minus",_) $ _ $ _) v = false
   162           | isnorm (Const ("Rings.inverse_class.divide",_) $ t1 $ t2) v = (is_sqrtTerm_in t1 v) orelse 
   162           | isnorm (Const ("Rings.inverse_class.divide",_) $ t1 $ t2) v = (is_sqrtTerm_in t1 v) orelse 
   163                               (is_sqrtTerm_in t2 v)
   163                               (is_sqrtTerm_in t2 v)
   164           | isnorm (Const ("NthRoot.sqrt",_) $ t1) v = coeff_in t1 v
   164           | isnorm (Const ("NthRoot.sqrt",_) $ t1) v = coeff_in t1 v
   165  	  | isnorm (_ $ t1) v = is_sqrtTerm_in t1 v
   165  	  | isnorm (_ $ t1) v = is_sqrtTerm_in t1 v
   445                              (* a+(b+c) = a+b+c *)
   445                              (* a+(b+c) = a+b+c *)
   446                 Thm  ("real_assoc_2",num_str @{thm real_assoc_2}),
   446                 Thm  ("real_assoc_2",num_str @{thm real_assoc_2}),
   447                              (* a*(b*c) = a*b*c *)
   447                              (* a*(b*c) = a*b*c *)
   448                 Calc ("Groups.plus_class.plus",eval_binop "#add_"),
   448                 Calc ("Groups.plus_class.plus",eval_binop "#add_"),
   449                 Calc ("Groups.minus_class.minus",eval_binop "#sub_"),
   449                 Calc ("Groups.minus_class.minus",eval_binop "#sub_"),
   450                 Calc ("op *",eval_binop "#mult_"),
   450                 Calc ("Groups.times_class.times",eval_binop "#mult_"),
   451                 Calc ("Rings.inverse_class.divide", eval_cancel "#divide_e"),
   451                 Calc ("Rings.inverse_class.divide", eval_cancel "#divide_e"),
   452                 Calc ("NthRoot.sqrt",eval_sqrt "#sqrt_"),
   452                 Calc ("NthRoot.sqrt",eval_sqrt "#sqrt_"),
   453                 Calc ("Atools.pow" ,eval_binop "#power_"),
   453                 Calc ("Atools.pow" ,eval_binop "#power_"),
   454                 Thm("real_plus_binom_pow2",num_str @{thm real_plus_binom_pow2}),
   454                 Thm("real_plus_binom_pow2",num_str @{thm real_plus_binom_pow2}),
   455                 Thm("real_minus_binom_pow2",num_str @{thm real_minus_binom_pow2}),
   455                 Thm("real_minus_binom_pow2",num_str @{thm real_minus_binom_pow2}),