src/HOL/Library/Sum_Of_Squares/sum_of_squares.ML
changeset 36350 bc7982c54e37
parent 35625 9c818cab0dd0
child 36692 54b64d4ad524
child 36700 9b85b9d74b83
equal deleted inserted replaced
36349:39be26d1bc28 36350:bc7982c54e37
  1280 local
  1280 local
  1281  open Conv
  1281  open Conv
  1282   fun simple_cterm_ord t u = Term_Ord.fast_term_ord (term_of t, term_of u) = LESS
  1282   fun simple_cterm_ord t u = Term_Ord.fast_term_ord (term_of t, term_of u) = LESS
  1283  val concl = Thm.dest_arg o cprop_of
  1283  val concl = Thm.dest_arg o cprop_of
  1284  val shuffle1 =
  1284  val shuffle1 =
  1285    fconv_rule (rewr_conv @{lemma "(a + x == y) == (x == y - (a::real))" by (atomize (full)) (simp add: ring_simps) })
  1285    fconv_rule (rewr_conv @{lemma "(a + x == y) == (x == y - (a::real))" by (atomize (full)) (simp add: field_simps) })
  1286  val shuffle2 =
  1286  val shuffle2 =
  1287     fconv_rule (rewr_conv @{lemma "(x + a == y) ==  (x == y - (a::real))" by (atomize (full)) (simp add: ring_simps)})
  1287     fconv_rule (rewr_conv @{lemma "(x + a == y) ==  (x == y - (a::real))" by (atomize (full)) (simp add: field_simps)})
  1288  fun substitutable_monomial fvs tm = case term_of tm of
  1288  fun substitutable_monomial fvs tm = case term_of tm of
  1289     Free(_,@{typ real}) => if not (member (op aconvc) fvs tm) then (Rat.one,tm)
  1289     Free(_,@{typ real}) => if not (member (op aconvc) fvs tm) then (Rat.one,tm)
  1290                            else raise Failure "substitutable_monomial"
  1290                            else raise Failure "substitutable_monomial"
  1291   | @{term "op * :: real => _"}$c$(t as Free _ ) =>
  1291   | @{term "op * :: real => _"}$c$(t as Free _ ) =>
  1292      if RealArith.is_ratconst (Thm.dest_arg1 tm) andalso not (member (op aconvc) fvs (Thm.dest_arg tm))
  1292      if RealArith.is_ratconst (Thm.dest_arg1 tm) andalso not (member (op aconvc) fvs (Thm.dest_arg tm))