src/HOL/Library/Polynomial.thy
changeset 34973 ae634fad947e
parent 34915 7894c7dab132
child 35028 108662d50512
equal deleted inserted replaced
34972:cc1d4c3ca9db 34973:ae634fad947e
  1198     using dvd1 dvd2 by (rule poly_gcd_greatest)
  1198     using dvd1 dvd2 by (rule poly_gcd_greatest)
  1199   ultimately show ?thesis
  1199   ultimately show ?thesis
  1200     by (rule poly_dvd_antisym)
  1200     by (rule poly_dvd_antisym)
  1201 qed
  1201 qed
  1202 
  1202 
  1203 lemma poly_gcd_commute: "poly_gcd x y = poly_gcd y x"
  1203 interpretation poly_gcd!: abel_semigroup poly_gcd
  1204 by (rule poly_gcd_unique) (simp_all add: poly_gcd_monic)
  1204 proof
  1205 
  1205   fix x y z :: "'a poly"
  1206 lemma poly_gcd_assoc: "poly_gcd (poly_gcd x y) z = poly_gcd x (poly_gcd y z)"
  1206   show "poly_gcd (poly_gcd x y) z = poly_gcd x (poly_gcd y z)"
  1207 by (rule poly_gcd_unique) (auto intro: dvd_trans simp add: poly_gcd_monic)
  1207     by (rule poly_gcd_unique) (auto intro: dvd_trans simp add: poly_gcd_monic)
  1208 
  1208   show "poly_gcd x y = poly_gcd y x"
  1209 lemmas poly_gcd_left_commute =
  1209     by (rule poly_gcd_unique) (simp_all add: poly_gcd_monic)
  1210   mk_left_commute [where f=poly_gcd, OF poly_gcd_assoc poly_gcd_commute]
  1210 qed
       
  1211 
       
  1212 lemmas poly_gcd_assoc = poly_gcd.assoc
       
  1213 lemmas poly_gcd_commute = poly_gcd.commute
       
  1214 lemmas poly_gcd_left_commute = poly_gcd.left_commute
  1211 
  1215 
  1212 lemmas poly_gcd_ac = poly_gcd_assoc poly_gcd_commute poly_gcd_left_commute
  1216 lemmas poly_gcd_ac = poly_gcd_assoc poly_gcd_commute poly_gcd_left_commute
  1213 
  1217 
  1214 lemma poly_gcd_1_left [simp]: "poly_gcd 1 y = 1"
  1218 lemma poly_gcd_1_left [simp]: "poly_gcd 1 y = 1"
  1215 by (rule poly_gcd_unique) simp_all
  1219 by (rule poly_gcd_unique) simp_all