1771 lemma eval_monom_expr: |
1771 lemma eval_monom_expr: |
1772 assumes a: "a \<in> carrier R" |
1772 assumes a: "a \<in> carrier R" |
1773 shows "eval R R id a (monom P \<one>\<^bsub>R\<^esub> 1 \<ominus>\<^bsub>P\<^esub> monom P a 0) = \<zero>" |
1773 shows "eval R R id a (monom P \<one>\<^bsub>R\<^esub> 1 \<ominus>\<^bsub>P\<^esub> monom P a 0) = \<zero>" |
1774 (is "eval R R id a ?g = _") |
1774 (is "eval R R id a ?g = _") |
1775 proof - |
1775 proof - |
1776 interpret UP_pre_univ_prop R R id P proof qed simp |
1776 interpret UP_pre_univ_prop R R id proof qed simp |
1777 have eval_ring_hom: "eval R R id a \<in> ring_hom P R" using eval_ring_hom [OF a] by simp |
1777 have eval_ring_hom: "eval R R id a \<in> ring_hom P R" using eval_ring_hom [OF a] by simp |
1778 interpret ring_hom_cring P R "eval R R id a" proof qed (simp add: eval_ring_hom) |
1778 interpret ring_hom_cring P R "eval R R id a" proof qed (simp add: eval_ring_hom) |
1779 have mon1_closed: "monom P \<one>\<^bsub>R\<^esub> 1 \<in> carrier P" |
1779 have mon1_closed: "monom P \<one>\<^bsub>R\<^esub> 1 \<in> carrier P" |
1780 and mon0_closed: "monom P a 0 \<in> carrier P" |
1780 and mon0_closed: "monom P a 0 \<in> carrier P" |
1781 and min_mon0_closed: "\<ominus>\<^bsub>P\<^esub> monom P a 0 \<in> carrier P" |
1781 and min_mon0_closed: "\<ominus>\<^bsub>P\<^esub> monom P a 0 \<in> carrier P" |
1782 using a R.a_inv_closed by auto |
1782 using a R.a_inv_closed by auto |
1783 have "eval R R id a ?g = eval R R id a (monom P \<one> 1) \<ominus> eval R R id a (monom P a 0)" |
1783 have "eval R R id a ?g = eval R R id a (monom P \<one> 1) \<ominus> eval R R id a (monom P a 0)" |
1784 unfolding P.minus_eq [OF mon1_closed mon0_closed] |
1784 unfolding P.minus_eq [OF mon1_closed mon0_closed] |
1785 unfolding R_S_h.hom_add [OF mon1_closed min_mon0_closed] |
1785 unfolding hom_add [OF mon1_closed min_mon0_closed] |
1786 unfolding R_S_h.hom_a_inv [OF mon0_closed] |
1786 unfolding hom_a_inv [OF mon0_closed] |
1787 using R.minus_eq [symmetric] mon1_closed mon0_closed by auto |
1787 using R.minus_eq [symmetric] mon1_closed mon0_closed by auto |
1788 also have "\<dots> = a \<ominus> a" |
1788 also have "\<dots> = a \<ominus> a" |
1789 using eval_monom [OF R.one_closed a, of 1] using eval_monom [OF a a, of 0] using a by simp |
1789 using eval_monom [OF R.one_closed a, of 1] using eval_monom [OF a a, of 0] using a by simp |
1790 also have "\<dots> = \<zero>" |
1790 also have "\<dots> = \<zero>" |
1791 using a by algebra |
1791 using a by algebra |
1884 Interpretation now enables to import all theorems and lemmas |
1884 Interpretation now enables to import all theorems and lemmas |
1885 valid in the context of homomorphisms between @{term INTEG} and @{term |
1885 valid in the context of homomorphisms between @{term INTEG} and @{term |
1886 "UP INTEG"} globally. |
1886 "UP INTEG"} globally. |
1887 *} |
1887 *} |
1888 |
1888 |
1889 interpretation INTEG!: UP_pre_univ_prop INTEG INTEG id |
1889 interpretation INTEG!: UP_pre_univ_prop INTEG INTEG id "UP INTEG" |
1890 using INTEG_id_eval by simp_all |
1890 using INTEG_id_eval by simp_all |
1891 |
1891 |
1892 lemma INTEG_closed [intro, simp]: |
1892 lemma INTEG_closed [intro, simp]: |
1893 "z \<in> carrier INTEG" |
1893 "z \<in> carrier INTEG" |
1894 by (unfold INTEG_def) simp |
1894 by (unfold INTEG_def) simp |