src/HOL/Library/Polynomial.thy
changeset 38857 97775f3e8722
parent 37770 cddb3106adb8
child 39198 f967a16dfcdd
equal deleted inserted replaced
38856:168dba35ecf3 38857:97775f3e8722
  1503 
  1503 
  1504 code_datatype "0::'a::zero poly" pCons
  1504 code_datatype "0::'a::zero poly" pCons
  1505 
  1505 
  1506 declare pCons_0_0 [code_post]
  1506 declare pCons_0_0 [code_post]
  1507 
  1507 
  1508 instantiation poly :: ("{zero,eq}") eq
  1508 instantiation poly :: ("{zero, equal}") equal
  1509 begin
  1509 begin
  1510 
  1510 
  1511 definition
  1511 definition
  1512   "eq_class.eq (p::'a poly) q \<longleftrightarrow> p = q"
  1512   "HOL.equal (p::'a poly) q \<longleftrightarrow> p = q"
  1513 
  1513 
  1514 instance
  1514 instance proof
  1515   by default (rule eq_poly_def)
  1515 qed (rule equal_poly_def)
  1516 
  1516 
  1517 end
  1517 end
  1518 
  1518 
  1519 lemma eq_poly_code [code]:
  1519 lemma eq_poly_code [code]:
  1520   "eq_class.eq (0::_ poly) (0::_ poly) \<longleftrightarrow> True"
  1520   "HOL.equal (0::_ poly) (0::_ poly) \<longleftrightarrow> True"
  1521   "eq_class.eq (0::_ poly) (pCons b q) \<longleftrightarrow> eq_class.eq 0 b \<and> eq_class.eq 0 q"
  1521   "HOL.equal (0::_ poly) (pCons b q) \<longleftrightarrow> HOL.equal 0 b \<and> HOL.equal 0 q"
  1522   "eq_class.eq (pCons a p) (0::_ poly) \<longleftrightarrow> eq_class.eq a 0 \<and> eq_class.eq p 0"
  1522   "HOL.equal (pCons a p) (0::_ poly) \<longleftrightarrow> HOL.equal a 0 \<and> HOL.equal p 0"
  1523   "eq_class.eq (pCons a p) (pCons b q) \<longleftrightarrow> eq_class.eq a b \<and> eq_class.eq p q"
  1523   "HOL.equal (pCons a p) (pCons b q) \<longleftrightarrow> HOL.equal a b \<and> HOL.equal p q"
  1524 unfolding eq by simp_all
  1524   by (simp_all add: equal)
       
  1525 
       
  1526 lemma [code nbe]:
       
  1527   "HOL.equal (p :: _ poly) p \<longleftrightarrow> True"
       
  1528   by (fact equal_refl)
  1525 
  1529 
  1526 lemmas coeff_code [code] =
  1530 lemmas coeff_code [code] =
  1527   coeff_0 coeff_pCons_0 coeff_pCons_Suc
  1531   coeff_0 coeff_pCons_0 coeff_pCons_Suc
  1528 
  1532 
  1529 lemmas degree_code [code] =
  1533 lemmas degree_code [code] =