src/HOL/Library/Sum_of_Squares/sum_of_squares.ML
changeset 60329 e85ed7a36b2f
parent 59582 0fbed69ff081
child 60752 b48830b670a1
equal deleted inserted replaced
60328:9c94e6a30d29 60329:e85ed7a36b2f
   866           end
   866           end
   867       end
   867       end
   868   in mainf end
   868   in mainf end
   869 end
   869 end
   870 
   870 
   871 fun C f x y = f y x;
       
   872 (* FIXME : This is very bad!!!*)
   871 (* FIXME : This is very bad!!!*)
   873 fun subst_conv eqs t =
   872 fun subst_conv eqs t =
   874   let
   873   let
   875     val t' = fold (Thm.lambda o Thm.lhs_of) eqs t
   874     val t' = fold (Thm.lambda o Thm.lhs_of) eqs t
   876   in
   875   in
   877     Conv.fconv_rule (Thm.beta_conversion true) (fold (C Thm.combination) eqs (Thm.reflexive t'))
   876     Conv.fconv_rule (Thm.beta_conversion true)
       
   877       (fold (fn a => fn b => Thm.combination b a) eqs (Thm.reflexive t'))
   878   end
   878   end
   879 
   879 
   880 (* A wrapper that tries to substitute away variables first.                  *)
   880 (* A wrapper that tries to substitute away variables first.                  *)
   881 
   881 
   882 local
   882 local