| author | nipkow | 
| Fri, 05 Jan 2018 15:24:57 +0100 | |
| changeset 67340 | 150d40a25622 | 
| parent 66760 | d44ea023ac09 | 
| permissions | -rw-r--r-- | 
| 65435 | 1 | (* Title: HOL/Algebra/More_Ring.thy | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 2 | Author: Jeremy Avigad | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 3 | *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 4 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 5 | section \<open>More on rings etc.\<close> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 6 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 7 | theory More_Ring | 
| 66760 | 8 | imports Ring | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 9 | begin | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 10 | |
| 66760 | 11 | lemma (in cring) field_intro2: "\<zero>\<^bsub>R\<^esub> \<noteq> \<one>\<^bsub>R\<^esub> \<Longrightarrow> \<forall>x \<in> carrier R - {\<zero>\<^bsub>R\<^esub>}. x \<in> Units R \<Longrightarrow> field R"
 | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 12 | apply (unfold_locales) | 
| 66760 | 13 | apply (use cring_axioms in auto) | 
| 14 | apply (rule trans) | |
| 15 | apply (subgoal_tac "a = (a \<otimes> b) \<otimes> inv b") | |
| 16 | apply assumption | |
| 17 | apply (subst m_assoc) | |
| 18 | apply auto | |
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 19 | apply (unfold Units_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 20 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 21 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 22 | |
| 66760 | 23 | lemma (in monoid) inv_char: | 
| 24 | "x \<in> carrier G \<Longrightarrow> y \<in> carrier G \<Longrightarrow> x \<otimes> y = \<one> \<Longrightarrow> y \<otimes> x = \<one> \<Longrightarrow> inv x = y" | |
| 25 | apply (subgoal_tac "x \<in> Units G") | |
| 26 | apply (subgoal_tac "y = inv x \<otimes> \<one>") | |
| 27 | apply simp | |
| 28 | apply (erule subst) | |
| 29 | apply (subst m_assoc [symmetric]) | |
| 30 | apply auto | |
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 31 | apply (unfold Units_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 32 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 33 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 34 | |
| 66760 | 35 | lemma (in comm_monoid) comm_inv_char: "x \<in> carrier G \<Longrightarrow> y \<in> carrier G \<Longrightarrow> x \<otimes> y = \<one> \<Longrightarrow> inv x = y" | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 36 | apply (rule inv_char) | 
| 66760 | 37 | apply auto | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 38 | apply (subst m_comm, auto) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 39 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 40 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 41 | lemma (in ring) inv_neg_one [simp]: "inv (\<ominus> \<one>) = \<ominus> \<one>" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 42 | apply (rule inv_char) | 
| 66760 | 43 | apply (auto simp add: l_minus r_minus) | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 44 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 45 | |
| 66760 | 46 | lemma (in monoid) inv_eq_imp_eq: "x \<in> Units G \<Longrightarrow> y \<in> Units G \<Longrightarrow> inv x = inv y \<Longrightarrow> x = y" | 
| 47 | apply (subgoal_tac "inv (inv x) = inv (inv y)") | |
| 48 | apply (subst (asm) Units_inv_inv)+ | |
| 49 | apply auto | |
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 50 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 51 | |
| 66760 | 52 | lemma (in ring) Units_minus_one_closed [intro]: "\<ominus> \<one> \<in> Units R" | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 53 | apply (unfold Units_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 54 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 55 | apply (rule_tac x = "\<ominus> \<one>" in bexI) | 
| 66760 | 56 | apply auto | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 57 | apply (simp add: l_minus r_minus) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 58 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 59 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 60 | lemma (in monoid) inv_one [simp]: "inv \<one> = \<one>" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 61 | apply (rule inv_char) | 
| 66760 | 62 | apply auto | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 63 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 64 | |
| 66760 | 65 | lemma (in ring) inv_eq_neg_one_eq: "x \<in> Units R \<Longrightarrow> inv x = \<ominus> \<one> \<longleftrightarrow> x = \<ominus> \<one>" | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 66 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 67 | apply (subst Units_inv_inv [symmetric]) | 
| 66760 | 68 | apply auto | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 69 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 70 | |
| 66760 | 71 | lemma (in monoid) inv_eq_one_eq: "x \<in> Units G \<Longrightarrow> inv x = \<one> \<longleftrightarrow> x = \<one>" | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 72 | by (metis Units_inv_inv inv_one) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 73 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 74 | end |