# HG changeset patch # User krauss # Date 1298326476 -3600 # Node ID 3848eb635eab72cd06eda29cc08e7cf546cd76dc # Parent 4eb43410d2fac7b39fe5a9612614edae6ccd452e modernized specification; curried diff -r 4eb43410d2fa -r 3848eb635eab src/HOL/Decision_Procs/Reflected_Multivariate_Polynomial.thy --- a/src/HOL/Decision_Procs/Reflected_Multivariate_Polynomial.thy Mon Feb 21 23:14:36 2011 +0100 +++ b/src/HOL/Decision_Procs/Reflected_Multivariate_Polynomial.thy Mon Feb 21 23:14:36 2011 +0100 @@ -107,12 +107,6 @@ subsection{* Operations for normalization *} -consts - polysub :: "poly\poly \ poly" - -abbreviation poly_sub :: "poly \ poly \ poly" (infixl "-\<^sub>p" 60) - where "a -\<^sub>p b \ polysub (a,b)" - declare if_cong[fundef_cong del] declare let_cong[fundef_cong del] @@ -136,8 +130,9 @@ | "polyneg (CN c n p) = CN (polyneg c) n (polyneg p)" | "polyneg a = Neg a" -defs polysub_def[code]: "polysub \ \ (p,q). polyadd p (polyneg q)" - +definition polysub :: "poly \ poly \ poly" (infixl "-\<^sub>p" 60) +where + "p -\<^sub>p q = polyadd p (polyneg q)" fun polymul :: "poly \ poly \ poly" (infixl "*\<^sub>p" 60) where @@ -592,15 +587,15 @@ text{* polysub is a substraction and preserves normal forms *} -lemma polysub[simp]: "Ipoly bs (polysub (p,q)) = (Ipoly bs p) - (Ipoly bs q)" +lemma polysub[simp]: "Ipoly bs (polysub p q) = (Ipoly bs p) - (Ipoly bs q)" by (simp add: polysub_def polyneg polyadd) -lemma polysub_normh: "\ n0 n1. \ isnpolyh p n0 ; isnpolyh q n1\ \ isnpolyh (polysub(p,q)) (min n0 n1)" +lemma polysub_normh: "\ n0 n1. \ isnpolyh p n0 ; isnpolyh q n1\ \ isnpolyh (polysub p q) (min n0 n1)" by (simp add: polysub_def polyneg_normh polyadd_normh) -lemma polysub_norm: "\ isnpoly p; isnpoly q\ \ isnpoly (polysub(p,q))" +lemma polysub_norm: "\ isnpoly p; isnpoly q\ \ isnpoly (polysub p q)" using polyadd_norm polyneg_norm by (simp add: polysub_def) lemma polysub_same_0[simp]: assumes "SORT_CONSTRAINT('a::{field_char_0, field_inverse_zero})" - shows "isnpolyh p n0 \ polysub (p, p) = 0\<^sub>p" + shows "isnpolyh p n0 \ polysub p p = 0\<^sub>p" unfolding polysub_def split_def fst_conv snd_conv by (induct p arbitrary: n0,auto simp add: Let_def Nsub0[simplified Nsub_def])