author | wenzelm |
Tue, 24 Sep 2024 21:31:20 +0200 | |
changeset 80946 | b76f64d7d493 |
parent 73655 | 26a1d66b9077 |
permissions | -rw-r--r-- |
70160
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
1 |
(* Title: HOL/Algebra/Finite_Extensions.thy |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
2 |
Author: Paulo EmÃlio de Vilhena |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
3 |
*) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
4 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
5 |
theory Finite_Extensions |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
6 |
imports Embedded_Algebras Polynomials Polynomial_Divisibility |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
7 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
8 |
begin |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
9 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
10 |
section \<open>Finite Extensions\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
11 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
12 |
subsection \<open>Definitions\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
13 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
14 |
definition (in ring) transcendental :: "'a set \<Rightarrow> 'a \<Rightarrow> bool" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
15 |
where "transcendental K x \<longleftrightarrow> inj_on (\<lambda>p. eval p x) (carrier (K[X]))" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
16 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
17 |
abbreviation (in ring) algebraic :: "'a set \<Rightarrow> 'a \<Rightarrow> bool" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
18 |
where "algebraic K x \<equiv> \<not> transcendental K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
19 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
20 |
definition (in ring) Irr :: "'a set \<Rightarrow> 'a \<Rightarrow> 'a list" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
21 |
where "Irr K x = (THE p. p \<in> carrier (K[X]) \<and> pirreducible K p \<and> eval p x = \<zero> \<and> lead_coeff p = \<one>)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
22 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
23 |
inductive_set (in ring) simple_extension :: "'a set \<Rightarrow> 'a \<Rightarrow> 'a set" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
24 |
for K and x where |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
25 |
zero [simp, intro]: "\<zero> \<in> simple_extension K x" | |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
26 |
lin: "\<lbrakk> k1 \<in> simple_extension K x; k2 \<in> K \<rbrakk> \<Longrightarrow> (k1 \<otimes> x) \<oplus> k2 \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
27 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
28 |
fun (in ring) finite_extension :: "'a set \<Rightarrow> 'a list \<Rightarrow> 'a set" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
29 |
where "finite_extension K xs = foldr (\<lambda>x K'. simple_extension K' x) xs K" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
30 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
31 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
32 |
subsection \<open>Basic Properties\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
33 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
34 |
lemma (in ring) transcendental_consistent: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
35 |
assumes "subring K R" shows "transcendental = ring.transcendental (R \<lparr> carrier := K \<rparr>)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
36 |
unfolding transcendental_def ring.transcendental_def[OF subring_is_ring[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
37 |
univ_poly_consistent[OF assms] eval_consistent[OF assms] .. |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
38 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
39 |
lemma (in ring) algebraic_consistent: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
40 |
assumes "subring K R" shows "algebraic = ring.algebraic (R \<lparr> carrier := K \<rparr>)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
41 |
unfolding over_def transcendental_consistent[OF assms] .. |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
42 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
43 |
lemma (in ring) eval_transcendental: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
44 |
assumes "(transcendental over K) x" "p \<in> carrier (K[X])" "eval p x = \<zero>" shows "p = []" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
45 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
46 |
have "[] \<in> carrier (K[X])" and "eval [] x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
47 |
by (auto simp add: univ_poly_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
48 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
49 |
using assms unfolding over_def transcendental_def inj_on_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
50 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
51 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
52 |
lemma (in ring) transcendental_imp_trivial_ker: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
53 |
shows "(transcendental over K) x \<Longrightarrow> a_kernel (K[X]) R (\<lambda>p. eval p x) = { [] }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
54 |
using eval_transcendental unfolding a_kernel_def' by (auto simp add: univ_poly_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
55 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
56 |
lemma (in ring) non_trivial_ker_imp_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
57 |
shows "a_kernel (K[X]) R (\<lambda>p. eval p x) \<noteq> { [] } \<Longrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
58 |
using transcendental_imp_trivial_ker unfolding over_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
59 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
60 |
lemma (in domain) trivial_ker_imp_transcendental: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
61 |
assumes "subring K R" and "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
62 |
shows "a_kernel (K[X]) R (\<lambda>p. eval p x) = { [] } \<Longrightarrow> (transcendental over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
63 |
using ring_hom_ring.trivial_ker_imp_inj[OF eval_ring_hom[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
64 |
unfolding transcendental_def over_def by (simp add: univ_poly_zero) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
65 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
66 |
lemma (in domain) algebraic_imp_non_trivial_ker: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
67 |
assumes "subring K R" and "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
68 |
shows "(algebraic over K) x \<Longrightarrow> a_kernel (K[X]) R (\<lambda>p. eval p x) \<noteq> { [] }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
69 |
using trivial_ker_imp_transcendental[OF assms] unfolding over_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
70 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
71 |
lemma (in domain) algebraicE: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
72 |
assumes "subring K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
73 |
obtains p where "p \<in> carrier (K[X])" "p \<noteq> []" "eval p x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
74 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
75 |
have "[] \<in> a_kernel (K[X]) R (\<lambda>p. eval p x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
76 |
unfolding a_kernel_def' univ_poly_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
77 |
then obtain p where "p \<in> carrier (K[X])" "p \<noteq> []" "eval p x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
78 |
using algebraic_imp_non_trivial_ker[OF assms] unfolding a_kernel_def' by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
79 |
thus thesis using that by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
80 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
81 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
82 |
lemma (in ring) algebraicI: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
83 |
assumes "p \<in> carrier (K[X])" "p \<noteq> []" and "eval p x = \<zero>" shows "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
84 |
using assms non_trivial_ker_imp_algebraic unfolding a_kernel_def' by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
85 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
86 |
lemma (in ring) transcendental_mono: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
87 |
assumes "K \<subseteq> K'" "(transcendental over K') x" shows "(transcendental over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
88 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
89 |
have "carrier (K[X]) \<subseteq> carrier (K'[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
90 |
using assms(1) unfolding univ_poly_def polynomial_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
91 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
92 |
using assms unfolding over_def transcendental_def by (metis inj_on_subset) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
93 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
94 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
95 |
corollary (in ring) algebraic_mono: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
96 |
assumes "K \<subseteq> K'" "(algebraic over K) x" shows "(algebraic over K') x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
97 |
using transcendental_mono[OF assms(1)] assms(2) unfolding over_def by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
98 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
99 |
lemma (in domain) zero_is_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
100 |
assumes "subring K R" shows "(algebraic over K) \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
101 |
using algebraicI[OF var_closed(1)[OF assms]] unfolding var_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
102 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
103 |
lemma (in domain) algebraic_self: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
104 |
assumes "subring K R" and "k \<in> K" shows "(algebraic over K) k" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
105 |
proof (rule algebraicI[of "[ \<one>, \<ominus> k ]"]) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
106 |
show "[ \<one>, \<ominus> k ] \<in> carrier (K [X])" and "[ \<one>, \<ominus> k ] \<noteq> []" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
107 |
using subringE(2-3,5)[OF assms(1)] assms(2) unfolding univ_poly_def polynomial_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
108 |
have "k \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
109 |
using subringE(1)[OF assms(1)] assms(2) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
110 |
thus "eval [ \<one>, \<ominus> k ] k = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
111 |
by (auto, algebra) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
112 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
113 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
114 |
lemma (in domain) ker_diff_carrier: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
115 |
assumes "subring K R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
116 |
shows "a_kernel (K[X]) R (\<lambda>p. eval p x) \<noteq> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
117 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
118 |
have "eval [ \<one> ] x \<noteq> \<zero>" and "[ \<one> ] \<in> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
119 |
using subringE(3)[OF assms] unfolding univ_poly_def polynomial_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
120 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
121 |
unfolding a_kernel_def' by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
122 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
123 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
124 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
125 |
subsection \<open>Minimal Polynomial\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
126 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
127 |
lemma (in domain) minimal_polynomial_is_unique: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
128 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
129 |
shows "\<exists>!p \<in> carrier (K[X]). pirreducible K p \<and> eval p x = \<zero> \<and> lead_coeff p = \<one>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
130 |
(is "\<exists>!p. ?minimal_poly p") |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
131 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
132 |
interpret UP: principal_domain "K[X]" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
133 |
using univ_poly_is_principal[OF assms(1)] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
134 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
135 |
let ?ker_gen = "\<lambda>p. p \<in> carrier (K[X]) \<and> pirreducible K p \<and> lead_coeff p = \<one> \<and> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
136 |
a_kernel (K[X]) R (\<lambda>p. eval p x) = PIdl\<^bsub>K[X]\<^esub> p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
137 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
138 |
obtain p where p: "?ker_gen p" and unique: "\<And>q. ?ker_gen q \<Longrightarrow> q = p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
139 |
using exists_unique_pirreducible_gen[OF assms(1) eval_ring_hom[OF _ assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
140 |
algebraic_imp_non_trivial_ker[OF _ assms(2-3)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
141 |
ker_diff_carrier] subfieldE(1)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
142 |
hence "?minimal_poly p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
143 |
using UP.cgenideal_self p unfolding a_kernel_def' by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
144 |
moreover have "\<And>q. ?minimal_poly q \<Longrightarrow> q = p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
145 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
146 |
fix q assume q: "?minimal_poly q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
147 |
then have "q \<in> PIdl\<^bsub>K[X]\<^esub> p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
148 |
using p unfolding a_kernel_def' by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
149 |
hence "p \<sim>\<^bsub>K[X]\<^esub> q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
150 |
using cgenideal_pirreducible[OF assms(1)] p q by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
151 |
hence "a_kernel (K[X]) R (\<lambda>p. eval p x) = PIdl\<^bsub>K[X]\<^esub> q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
152 |
using UP.associated_iff_same_ideal q p by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
153 |
thus "q = p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
154 |
using unique q by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
155 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
156 |
ultimately show ?thesis by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
157 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
158 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
159 |
lemma (in domain) IrrE: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
160 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
161 |
shows "Irr K x \<in> carrier (K[X])" and "pirreducible K (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
162 |
and "lead_coeff (Irr K x) = \<one>" and "eval (Irr K x) x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
163 |
using theI'[OF minimal_polynomial_is_unique[OF assms]] unfolding Irr_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
164 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
165 |
lemma (in domain) Irr_generates_ker: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
166 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
167 |
shows "a_kernel (K[X]) R (\<lambda>p. eval p x) = PIdl\<^bsub>K[X]\<^esub> (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
168 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
169 |
obtain q |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
170 |
where q: "q \<in> carrier (K[X])" "pirreducible K q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
171 |
and ker: "a_kernel (K[X]) R (\<lambda>p. eval p x) = PIdl\<^bsub>K[X]\<^esub> q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
172 |
using exists_unique_pirreducible_gen[OF assms(1) eval_ring_hom[OF _ assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
173 |
algebraic_imp_non_trivial_ker[OF _ assms(2-3)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
174 |
ker_diff_carrier] subfieldE(1)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
175 |
have "Irr K x \<in> PIdl\<^bsub>K[X]\<^esub> q" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
176 |
using IrrE(1,4)[OF assms] ker unfolding a_kernel_def' by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
177 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
178 |
using cgenideal_pirreducible[OF assms(1) q(1-2) IrrE(2)[OF assms]] q(1) IrrE(1)[OF assms] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
179 |
cring.associated_iff_same_ideal[OF univ_poly_is_cring[OF subfieldE(1)[OF assms(1)]]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
180 |
unfolding ker |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
181 |
by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
182 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
183 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
184 |
lemma (in domain) Irr_minimal: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
185 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
186 |
and "p \<in> carrier (K[X])" "eval p x = \<zero>" shows "(Irr K x) pdivides p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
187 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
188 |
interpret UP: principal_domain "K[X]" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
189 |
using univ_poly_is_principal[OF assms(1)] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
190 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
191 |
have "p \<in> PIdl\<^bsub>K[X]\<^esub> (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
192 |
using Irr_generates_ker[OF assms(1-3)] assms(4-5) unfolding a_kernel_def' by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
193 |
hence "(Irr K x) divides\<^bsub>K[X]\<^esub> p" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
194 |
using UP.to_contain_is_to_divide IrrE(1)[OF assms(1-3)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
195 |
by (meson UP.cgenideal_ideal UP.cgenideal_minimal assms(4)) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
196 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
197 |
unfolding pdivides_iff_shell[OF assms(1) IrrE(1)[OF assms(1-3)] assms(4)] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
198 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
199 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
200 |
lemma (in domain) rupture_of_Irr: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
201 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" shows "field (Rupt K (Irr K x))" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
202 |
using rupture_is_field_iff_pirreducible[OF assms(1)] IrrE(1-2)[OF assms] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
203 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
204 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
205 |
subsection \<open>Simple Extensions\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
206 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
207 |
lemma (in ring) simple_extension_consistent: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
208 |
assumes "subring K R" shows "ring.simple_extension (R \<lparr> carrier := K \<rparr>) = simple_extension" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
209 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
210 |
interpret K: ring "R \<lparr> carrier := K \<rparr>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
211 |
using subring_is_ring[OF assms] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
212 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
213 |
have "\<And>K' x. K.simple_extension K' x \<subseteq> simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
214 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
215 |
fix K' x a show "a \<in> K.simple_extension K' x \<Longrightarrow> a \<in> simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
216 |
by (induction rule: K.simple_extension.induct) (auto simp add: simple_extension.lin) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
217 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
218 |
moreover |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
219 |
have "\<And>K' x. simple_extension K' x \<subseteq> K.simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
220 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
221 |
fix K' x a assume a: "a \<in> simple_extension K' x" thus "a \<in> K.simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
222 |
using K.simple_extension.zero K.simple_extension.lin |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
223 |
by (induction rule: simple_extension.induct) (simp)+ |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
224 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
225 |
ultimately show ?thesis by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
226 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
227 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
228 |
lemma (in ring) mono_simple_extension: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
229 |
assumes "K \<subseteq> K'" shows "simple_extension K x \<subseteq> simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
230 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
231 |
fix a assume "a \<in> simple_extension K x" thus "a \<in> simple_extension K' x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
232 |
proof (induct a rule: simple_extension.induct, simp) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
233 |
case lin thus ?case using simple_extension.lin assms by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
234 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
235 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
236 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
237 |
lemma (in ring) simple_extension_incl: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
238 |
assumes "K \<subseteq> carrier R" and "x \<in> carrier R" shows "K \<subseteq> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
239 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
240 |
fix k assume "k \<in> K" thus "k \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
241 |
using simple_extension.lin[OF simple_extension.zero, of k K x] assms by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
242 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
243 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
244 |
lemma (in ring) simple_extension_mem: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
245 |
assumes "subring K R" and "x \<in> carrier R" shows "x \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
246 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
247 |
have "\<one> \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
248 |
using simple_extension_incl[OF _ assms(2)] subringE(1,3)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
249 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
250 |
using simple_extension.lin[OF _ subringE(2)[OF assms(1)], of \<one> x] assms(2) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
251 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
252 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
253 |
lemma (in ring) simple_extension_carrier: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
254 |
assumes "x \<in> carrier R" shows "simple_extension (carrier R) x = carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
255 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
256 |
show "carrier R \<subseteq> simple_extension (carrier R) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
257 |
using simple_extension_incl[OF _ assms] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
258 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
259 |
show "simple_extension (carrier R) x \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
260 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
261 |
fix a assume "a \<in> simple_extension (carrier R) x" thus "a \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
262 |
by (induct a rule: simple_extension.induct) (auto simp add: assms) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
263 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
264 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
265 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
266 |
lemma (in ring) simple_extension_in_carrier: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
267 |
assumes "K \<subseteq> carrier R" and "x \<in> carrier R" shows "simple_extension K x \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
268 |
using mono_simple_extension[OF assms(1), of x] simple_extension_carrier[OF assms(2)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
269 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
270 |
lemma (in ring) simple_extension_subring_incl: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
271 |
assumes "subring K' R" and "K \<subseteq> K'" "x \<in> K'" shows "simple_extension K x \<subseteq> K'" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
272 |
using ring.simple_extension_in_carrier[OF subring_is_ring[OF assms(1)]] assms(2-3) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
273 |
unfolding simple_extension_consistent[OF assms(1)] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
274 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
275 |
lemma (in ring) simple_extension_as_eval_img: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
276 |
assumes "K \<subseteq> carrier R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
277 |
shows "simple_extension K x = (\<lambda>p. eval p x) ` carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
278 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
279 |
show "simple_extension K x \<subseteq> (\<lambda>p. eval p x) ` carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
280 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
281 |
fix a assume "a \<in> simple_extension K x" thus "a \<in> (\<lambda>p. eval p x) ` carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
282 |
proof (induction rule: simple_extension.induct) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
283 |
case zero |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
284 |
have "polynomial K []" and "eval [] x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
285 |
unfolding polynomial_def by simp+ |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
286 |
thus ?case |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
287 |
unfolding univ_poly_carrier by force |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
288 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
289 |
case (lin k1 k2) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
290 |
then obtain p where p: "p \<in> carrier (K[X])" "polynomial K p" "eval p x = k1" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
291 |
by (auto simp add: univ_poly_carrier) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
292 |
hence "set p \<subseteq> carrier R" and "k2 \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
293 |
using assms(1) lin(2) unfolding polynomial_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
294 |
hence "eval (normalize (p @ [ k2 ])) x = k1 \<otimes> x \<oplus> k2" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
295 |
using eval_append_aux[of p k2 x] eval_normalize[of "p @ [ k2 ]" x] assms(2) p(3) by auto |
70215
8371a25ca177
Algebraic closure: moving more theorems into their rightful places
paulson <lp15@cam.ac.uk>
parents:
70160
diff
changeset
|
296 |
moreover have "set (p @ [k2]) \<subseteq> K" |
8371a25ca177
Algebraic closure: moving more theorems into their rightful places
paulson <lp15@cam.ac.uk>
parents:
70160
diff
changeset
|
297 |
using polynomial_incl[OF p(2)] \<open>k2 \<in> K\<close> by auto |
8371a25ca177
Algebraic closure: moving more theorems into their rightful places
paulson <lp15@cam.ac.uk>
parents:
70160
diff
changeset
|
298 |
then have "local.normalize (p @ [k2]) \<in> carrier (K [X])" |
8371a25ca177
Algebraic closure: moving more theorems into their rightful places
paulson <lp15@cam.ac.uk>
parents:
70160
diff
changeset
|
299 |
using normalize_gives_polynomial univ_poly_carrier by blast |
8371a25ca177
Algebraic closure: moving more theorems into their rightful places
paulson <lp15@cam.ac.uk>
parents:
70160
diff
changeset
|
300 |
ultimately show ?case |
70160
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
301 |
unfolding univ_poly_carrier by force |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
302 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
303 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
304 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
305 |
show "(\<lambda>p. eval p x) ` carrier (K[X]) \<subseteq> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
306 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
307 |
fix a assume "a \<in> (\<lambda>p. eval p x) ` carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
308 |
then obtain p where p: "set p \<subseteq> K" "eval p x = a" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
309 |
using polynomial_incl unfolding univ_poly_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
310 |
thus "a \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
311 |
proof (induct "length p" arbitrary: p a) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
312 |
case 0 thus ?case |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
313 |
using simple_extension.zero by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
314 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
315 |
case (Suc n) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
316 |
obtain p' k where p: "p = p' @ [ k ]" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
317 |
using Suc(2) by (metis list.size(3) nat.simps(3) rev_exhaust) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
318 |
hence "a = (eval p' x) \<otimes> x \<oplus> k" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
319 |
using eval_append_aux[of p' k x] Suc(3-4) assms unfolding p by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
320 |
moreover have "eval p' x \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
321 |
using Suc(1-3) unfolding p by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
322 |
ultimately show ?case |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
323 |
using simple_extension.lin Suc(3) unfolding p by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
324 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
325 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
326 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
327 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
328 |
corollary (in domain) simple_extension_is_subring: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
329 |
assumes "subring K R" "x \<in> carrier R" shows "subring (simple_extension K x) R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
330 |
using ring_hom_ring.img_is_subring[OF eval_ring_hom[OF assms] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
331 |
ring.carrier_is_subring[OF univ_poly_is_ring[OF assms(1)]]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
332 |
simple_extension_as_eval_img[OF subringE(1)[OF assms(1)] assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
333 |
by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
334 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
335 |
corollary (in domain) simple_extension_minimal: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
336 |
assumes "subring K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
337 |
shows "simple_extension K x = \<Inter> { K'. subring K' R \<and> K \<subseteq> K' \<and> x \<in> K' }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
338 |
using simple_extension_is_subring[OF assms] simple_extension_mem[OF assms] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
339 |
simple_extension_incl[OF subringE(1)[OF assms(1)] assms(2)] simple_extension_subring_incl |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
340 |
by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
341 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
342 |
corollary (in domain) simple_extension_isomorphism: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
343 |
assumes "subring K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
344 |
shows "(K[X]) Quot (a_kernel (K[X]) R (\<lambda>p. eval p x)) \<simeq> R \<lparr> carrier := simple_extension K x \<rparr>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
345 |
using ring_hom_ring.FactRing_iso_set_aux[OF eval_ring_hom[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
346 |
simple_extension_as_eval_img[OF subringE(1)[OF assms(1)] assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
347 |
unfolding is_ring_iso_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
348 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
349 |
corollary (in domain) simple_extension_of_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
350 |
assumes "subfield K R" and "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
351 |
shows "Rupt K (Irr K x) \<simeq> R \<lparr> carrier := simple_extension K x \<rparr>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
352 |
using simple_extension_isomorphism[OF subfieldE(1)[OF assms(1)] assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
353 |
unfolding Irr_generates_ker[OF assms] rupture_def by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
354 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
355 |
corollary (in domain) simple_extension_of_transcendental: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
356 |
assumes "subring K R" and "x \<in> carrier R" "(transcendental over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
357 |
shows "K[X] \<simeq> R \<lparr> carrier := simple_extension K x \<rparr>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
358 |
using simple_extension_isomorphism[OF _ assms(2), of K] assms(1) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
359 |
ring_iso_trans[OF ring.FactRing_zeroideal(2)[OF univ_poly_is_ring]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
360 |
unfolding transcendental_imp_trivial_ker[OF assms(3)] univ_poly_zero |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
361 |
by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
362 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
363 |
proposition (in domain) simple_extension_subfield_imp_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
364 |
assumes "subring K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
365 |
shows "subfield (simple_extension K x) R \<Longrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
366 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
367 |
assume simple_ext: "subfield (simple_extension K x) R" show "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
368 |
proof (rule ccontr) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
369 |
assume "\<not> (algebraic over K) x" then have "(transcendental over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
370 |
unfolding over_def by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
371 |
then obtain h where h: "h \<in> ring_iso (R \<lparr> carrier := simple_extension K x \<rparr>) (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
372 |
using ring_iso_sym[OF univ_poly_is_ring simple_extension_of_transcendental] assms |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
373 |
unfolding is_ring_iso_def by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
374 |
then interpret Hom: ring_hom_ring "R \<lparr> carrier := simple_extension K x \<rparr>" "K[X]" h |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
375 |
using subring_is_ring[OF simple_extension_is_subring[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
376 |
univ_poly_is_ring[OF assms(1)] assms h |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
377 |
by (auto simp add: ring_hom_ring_def ring_hom_ring_axioms_def ring_iso_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
378 |
have "field (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
379 |
using field.ring_iso_imp_img_field[OF subfield_iff(2)[OF simple_ext] h] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
380 |
unfolding Hom.hom_one Hom.hom_zero by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
381 |
moreover have "\<not> field (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
382 |
using univ_poly_not_field[OF assms(1)] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
383 |
ultimately show False by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
384 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
385 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
386 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
387 |
proposition (in domain) simple_extension_is_subfield: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
388 |
assumes "subfield K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
389 |
shows "subfield (simple_extension K x) R \<longleftrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
390 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
391 |
assume alg: "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
392 |
then obtain h where h: "h \<in> ring_iso (Rupt K (Irr K x)) (R \<lparr> carrier := simple_extension K x \<rparr>)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
393 |
using simple_extension_of_algebraic[OF assms] unfolding is_ring_iso_def by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
394 |
have rupt_field: "field (Rupt K (Irr K x))" and "ring (R \<lparr> carrier := simple_extension K x \<rparr>)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
395 |
using subring_is_ring[OF simple_extension_is_subring[OF subfieldE(1)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
396 |
rupture_of_Irr[OF assms alg] assms by simp+ |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
397 |
then interpret Hom: ring_hom_ring "Rupt K (Irr K x)" "R \<lparr> carrier := simple_extension K x \<rparr>" h |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
398 |
using h cring.axioms(1)[OF domain.axioms(1)[OF field.axioms(1)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
399 |
by (auto simp add: ring_hom_ring_def ring_hom_ring_axioms_def ring_iso_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
400 |
show "subfield (simple_extension K x) R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
401 |
using field.ring_iso_imp_img_field[OF rupt_field h] subfield_iff(1)[OF _ |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
402 |
simple_extension_in_carrier[OF subfieldE(3)[OF assms(1)] assms(2)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
403 |
by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
404 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
405 |
assume simple_ext: "subfield (simple_extension K x) R" thus "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
406 |
using simple_extension_subfield_imp_algebraic[OF subfieldE(1)[OF assms(1)] assms(2)] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
407 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
408 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
409 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
410 |
subsection \<open>Link between dimension of K-algebras and algebraic extensions\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
411 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
412 |
lemma (in domain) exp_base_independent: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
413 |
assumes "subfield K R" "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
414 |
shows "independent K (exp_base x (degree (Irr K x)))" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
415 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
416 |
have "\<And>n. n \<le> degree (Irr K x) \<Longrightarrow> independent K (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
417 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
418 |
fix n show "n \<le> degree (Irr K x) \<Longrightarrow> independent K (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
419 |
proof (induct n, simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
420 |
case (Suc n) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
421 |
have "x [^] n \<notin> Span K (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
422 |
proof (rule ccontr) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
423 |
assume "\<not> x [^] n \<notin> Span K (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
424 |
then obtain a Ks |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
425 |
where Ks: "a \<in> K - { \<zero> }" "set Ks \<subseteq> K" "length Ks = n" "combine (a # Ks) (exp_base x (Suc n)) = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
426 |
using Span_mem_imp_non_trivial_combine[OF assms(1) exp_base_closed[OF assms(2), of n]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
427 |
by (auto simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
428 |
hence "eval (a # Ks) x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
429 |
using combine_eq_eval by (auto simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
430 |
moreover have "(a # Ks) \<in> carrier (K[X]) - { [] }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
431 |
unfolding univ_poly_def polynomial_def using Ks(1-2) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
432 |
ultimately have "degree (Irr K x) \<le> n" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
433 |
using pdivides_imp_degree_le[OF subfieldE(1)[OF assms(1)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
434 |
IrrE(1)[OF assms] _ _ Irr_minimal[OF assms, of "a # Ks"]] Ks(3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
435 |
from \<open>Suc n \<le> degree (Irr K x)\<close> and this show False by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
436 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
437 |
thus ?case |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
438 |
using independent.li_Cons assms(2) Suc by (auto simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
439 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
440 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
441 |
thus ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
442 |
by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
443 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
444 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
445 |
lemma (in ring) Span_eq_eval_img: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
446 |
assumes "subfield K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
447 |
shows "Span K (exp_base x n) = (\<lambda>p. eval p x) ` { p \<in> carrier (K[X]). length p \<le> n }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
448 |
(is "?Span = ?eval_img") |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
449 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
450 |
show "?Span \<subseteq> ?eval_img" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
451 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
452 |
fix u assume "u \<in> Span K (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
453 |
then obtain Ks where Ks: "set Ks \<subseteq> K" "length Ks = n" "u = combine Ks (exp_base x n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
454 |
using Span_eq_combine_set_length_version[OF assms(1) exp_base_closed[OF assms(2)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
455 |
by (auto simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
456 |
hence "u = eval (normalize Ks) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
457 |
using combine_eq_eval eval_normalize[OF _ assms(2)] subfieldE(3)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
458 |
moreover have "normalize Ks \<in> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
459 |
using normalize_gives_polynomial[OF Ks(1)] unfolding univ_poly_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
460 |
moreover have "length (normalize Ks) \<le> n" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
461 |
using normalize_length_le[of Ks] Ks(2) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
462 |
ultimately show "u \<in> ?eval_img" by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
463 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
464 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
465 |
show "?eval_img \<subseteq> ?Span" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
466 |
proof |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
467 |
fix u assume "u \<in> ?eval_img" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
468 |
then obtain p where p: "p \<in> carrier (K[X])" "length p \<le> n" "u = eval p x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
469 |
by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
470 |
hence "combine p (exp_base x (length p)) = u" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
471 |
using combine_eq_eval by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
472 |
moreover have set_p: "set p \<subseteq> K" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
473 |
using polynomial_incl[of K p] p(1) unfolding univ_poly_carrier by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
474 |
hence "set p \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
475 |
using subfieldE(3)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
476 |
moreover have "drop (n - length p) (exp_base x n) = exp_base x (length p)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
477 |
using p(2) drop_exp_base by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
478 |
ultimately have "combine ((replicate (n - length p) \<zero>) @ p) (exp_base x n) = u" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
479 |
using combine_prepend_replicate[OF _ exp_base_closed[OF assms(2), of n]] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
480 |
moreover have "set ((replicate (n - length p) \<zero>) @ p) \<subseteq> K" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
481 |
using subringE(2)[OF subfieldE(1)[OF assms(1)]] set_p by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
482 |
ultimately show "u \<in> ?Span" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
483 |
using Span_eq_combine_set[OF assms(1) exp_base_closed[OF assms(2), of n]] by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
484 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
485 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
486 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
487 |
lemma (in domain) Span_exp_base: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
488 |
assumes "subfield K R" "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
489 |
shows "Span K (exp_base x (degree (Irr K x))) = simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
490 |
unfolding simple_extension_as_eval_img[OF subfieldE(3)[OF assms(1)] assms(2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
491 |
Span_eq_eval_img[OF assms(1-2)] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
492 |
proof (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
493 |
interpret UP: principal_domain "K[X]" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
494 |
using univ_poly_is_principal[OF assms(1)] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
495 |
note hom_simps = ring_hom_memE[OF eval_is_hom[OF subfieldE(1)[OF assms(1)] assms(2)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
496 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
497 |
fix p assume p: "p \<in> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
498 |
have Irr: "Irr K x \<in> carrier (K[X])" "Irr K x \<noteq> []" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
499 |
using IrrE(1-2)[OF assms] unfolding ring_irreducible_def univ_poly_zero by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
500 |
then obtain q r |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
501 |
where q: "q \<in> carrier (K[X])" and r: "r \<in> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
502 |
and dvd: "p = Irr K x \<otimes>\<^bsub>K [X]\<^esub> q \<oplus>\<^bsub>K [X]\<^esub> r" "r = [] \<or> degree r < degree (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
503 |
using subfield_long_division_theorem_shell[OF assms(1) p Irr(1)] unfolding univ_poly_zero by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
504 |
hence "eval p x = (eval (Irr K x) x) \<otimes> (eval q x) \<oplus> (eval r x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
505 |
using hom_simps(2-3) Irr(1) by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
506 |
hence "eval p x = eval r x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
507 |
using hom_simps(1) q r unfolding IrrE(4)[OF assms] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
508 |
moreover have "length r < length (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
509 |
using dvd(2) Irr(2) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
510 |
ultimately |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
511 |
show "eval p x \<in> (\<lambda>p. local.eval p x) ` { p \<in> carrier (K [X]). length p \<le> length (Irr K x) - Suc 0 }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
512 |
using r by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
513 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
514 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
515 |
corollary (in domain) dimension_simple_extension: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
516 |
assumes "subfield K R" "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
517 |
shows "dimension (degree (Irr K x)) K (simple_extension K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
518 |
using dimension_independent[OF exp_base_independent[OF assms]] Span_exp_base[OF assms] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
519 |
by (simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
520 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
521 |
lemma (in ring) finite_dimension_imp_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
522 |
assumes "subfield K R" "subring F R" and "finite_dimension K F" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
523 |
shows "x \<in> F \<Longrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
524 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
525 |
let ?Us = "\<lambda>n. map (\<lambda>i. x [^] i) (rev [0..< Suc n])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
526 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
527 |
assume x: "x \<in> F" then have in_carrier: "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
528 |
using subringE[OF assms(2)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
529 |
obtain n where n: "dimension n K F" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
530 |
using assms(3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
531 |
have set_Us: "set (?Us n) \<subseteq> F" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
532 |
using x subringE(3,6)[OF assms(2)] by (induct n) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
533 |
hence "set (?Us n) \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
534 |
using subringE(1)[OF assms(2)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
535 |
moreover have "dependent K (?Us n)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
536 |
using independent_length_le_dimension[OF assms(1) n _ set_Us] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
537 |
ultimately |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
538 |
obtain Ks where Ks: "length Ks = Suc n" "combine Ks (?Us n) = \<zero>" "set Ks \<subseteq> K" "set Ks \<noteq> { \<zero> }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
539 |
using dependent_imp_non_trivial_combine[OF assms(1), of "?Us n"] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
540 |
have "set Ks \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
541 |
using subring_props(1)[OF assms(1)] Ks(3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
542 |
hence "eval (normalize Ks) x = \<zero>" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
543 |
using combine_eq_eval[of Ks] eval_normalize[OF _ in_carrier] Ks(1-2) by (simp add: exp_base_def) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
544 |
moreover have "normalize Ks = [] \<Longrightarrow> set Ks \<subseteq> { \<zero> }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
545 |
by (induct Ks) (auto, meson list.discI, |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
546 |
metis all_not_in_conv list.discI list.sel(3) singletonD subset_singletonD) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
547 |
hence "normalize Ks \<noteq> []" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
548 |
using Ks(1,4) by (metis list.size(3) nat.distinct(1) set_empty subset_singleton_iff) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
549 |
moreover have "normalize Ks \<in> carrier (K[X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
550 |
using normalize_gives_polynomial[OF Ks(3)] unfolding univ_poly_def by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
551 |
ultimately show ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
552 |
using algebraicI by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
553 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
554 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
555 |
corollary (in domain) simple_extension_dim: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
556 |
assumes "subfield K R" "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
557 |
shows "(dim over K) (simple_extension K x) = degree (Irr K x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
558 |
using dimI[OF assms(1) dimension_simple_extension[OF assms]] . |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
559 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
560 |
corollary (in domain) finite_dimension_simple_extension: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
561 |
assumes "subfield K R" "x \<in> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
562 |
shows "finite_dimension K (simple_extension K x) \<longleftrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
563 |
using finite_dimensionI[OF dimension_simple_extension[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
564 |
finite_dimension_imp_algebraic[OF _ simple_extension_is_subring[OF subfieldE(1)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
565 |
simple_extension_mem[OF subfieldE(1)] assms |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
566 |
by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
567 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
568 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
569 |
subsection \<open>Finite Extensions\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
570 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
571 |
lemma (in ring) finite_extension_consistent: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
572 |
assumes "subring K R" shows "ring.finite_extension (R \<lparr> carrier := K \<rparr>) = finite_extension" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
573 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
574 |
have "\<And>K' xs. ring.finite_extension (R \<lparr> carrier := K \<rparr>) K' xs = finite_extension K' xs" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
575 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
576 |
fix K' xs show "ring.finite_extension (R \<lparr> carrier := K \<rparr>) K' xs = finite_extension K' xs" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
577 |
using ring.finite_extension.simps[OF subring_is_ring[OF assms]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
578 |
simple_extension_consistent[OF assms] by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
579 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
580 |
thus ?thesis by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
581 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
582 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
583 |
lemma (in ring) mono_finite_extension: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
584 |
assumes "K \<subseteq> K'" shows "finite_extension K xs \<subseteq> finite_extension K' xs" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
585 |
using mono_simple_extension assms by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
586 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
587 |
lemma (in ring) finite_extension_carrier: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
588 |
assumes "set xs \<subseteq> carrier R" shows "finite_extension (carrier R) xs = carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
589 |
using assms simple_extension_carrier by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
590 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
591 |
lemma (in ring) finite_extension_in_carrier: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
592 |
assumes "K \<subseteq> carrier R" and "set xs \<subseteq> carrier R" shows "finite_extension K xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
593 |
using assms simple_extension_in_carrier by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
594 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
595 |
lemma (in ring) finite_extension_subring_incl: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
596 |
assumes "subring K' R" and "K \<subseteq> K'" "set xs \<subseteq> K'" shows "finite_extension K xs \<subseteq> K'" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
597 |
using ring.finite_extension_in_carrier[OF subring_is_ring[OF assms(1)]] assms(2-3) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
598 |
unfolding finite_extension_consistent[OF assms(1)] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
599 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
600 |
lemma (in ring) finite_extension_incl_aux: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
601 |
assumes "K \<subseteq> carrier R" and "x \<in> carrier R" "set xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
602 |
shows "finite_extension K xs \<subseteq> finite_extension K (x # xs)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
603 |
using simple_extension_incl[OF finite_extension_in_carrier[OF assms(1,3)] assms(2)] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
604 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
605 |
lemma (in ring) finite_extension_incl: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
606 |
assumes "K \<subseteq> carrier R" and "set xs \<subseteq> carrier R" shows "K \<subseteq> finite_extension K xs" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
607 |
using finite_extension_incl_aux[OF assms(1)] assms(2) by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
608 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
609 |
lemma (in ring) finite_extension_as_eval_img: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
610 |
assumes "K \<subseteq> carrier R" and "x \<in> carrier R" "set xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
611 |
shows "finite_extension K (x # xs) = (\<lambda>p. eval p x) ` carrier ((finite_extension K xs) [X])" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
612 |
using simple_extension_as_eval_img[OF finite_extension_in_carrier[OF assms(1,3)] assms(2)] by simp |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
613 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
614 |
lemma (in domain) finite_extension_is_subring: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
615 |
assumes "subring K R" "set xs \<subseteq> carrier R" shows "subring (finite_extension K xs) R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
616 |
using assms simple_extension_is_subring by (induct xs) (auto) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
617 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
618 |
corollary (in domain) finite_extension_mem: |
73655
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
619 |
assumes subring: "subring K R" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
620 |
shows "set xs \<subseteq> carrier R \<Longrightarrow> set xs \<subseteq> finite_extension K xs" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
621 |
proof (induct xs) |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
622 |
case Nil |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
623 |
then show ?case by simp |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
624 |
next |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
625 |
case (Cons a xs) |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
626 |
from Cons(2) have a: "a \<in> carrier R" and xs: "set xs \<subseteq> carrier R" by auto |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
627 |
show ?case |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
628 |
proof |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
629 |
fix x assume "x \<in> set (a # xs)" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
630 |
then consider "x = a" | "x \<in> set xs" by auto |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
631 |
then show "x \<in> finite_extension K (a # xs)" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
632 |
proof cases |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
633 |
case 1 |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
634 |
with a have "x \<in> carrier R" by simp |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
635 |
with xs have "x \<in> finite_extension K (x # xs)" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
636 |
using simple_extension_mem[OF finite_extension_is_subring[OF subring]] by simp |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
637 |
with 1 show ?thesis by simp |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
638 |
next |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
639 |
case 2 |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
640 |
with Cons have *: "x \<in> finite_extension K xs" by auto |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
641 |
from a xs have "finite_extension K xs \<subseteq> finite_extension K (a # xs)" |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
642 |
by (rule finite_extension_incl_aux[OF subringE(1)[OF subring]]) |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
643 |
with * show ?thesis by auto |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
644 |
qed |
26a1d66b9077
tuned proofs --- avoid z3, which is absent on arm64-linux;
wenzelm
parents:
70215
diff
changeset
|
645 |
qed |
70160
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
646 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
647 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
648 |
corollary (in domain) finite_extension_minimal: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
649 |
assumes "subring K R" "set xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
650 |
shows "finite_extension K xs = \<Inter> { K'. subring K' R \<and> K \<subseteq> K' \<and> set xs \<subseteq> K' }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
651 |
using finite_extension_is_subring[OF assms] finite_extension_mem[OF assms] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
652 |
finite_extension_incl[OF subringE(1)[OF assms(1)] assms(2)] finite_extension_subring_incl |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
653 |
by blast |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
654 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
655 |
corollary (in domain) finite_extension_same_set: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
656 |
assumes "subring K R" "set xs \<subseteq> carrier R" "set xs = set ys" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
657 |
shows "finite_extension K xs = finite_extension K ys" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
658 |
using finite_extension_minimal[OF assms(1)] assms(2-3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
659 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
660 |
text \<open>The reciprocal is also true, but it is more subtle.\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
661 |
proposition (in domain) finite_extension_is_subfield: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
662 |
assumes "subfield K R" "set xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
663 |
shows "(\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x) \<Longrightarrow> subfield (finite_extension K xs) R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
664 |
using simple_extension_is_subfield algebraic_mono assms |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
665 |
by (induct xs) (auto, metis finite_extension.simps finite_extension_incl subring_props(1)) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
666 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
667 |
proposition (in domain) finite_extension_finite_dimension: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
668 |
assumes "subfield K R" "set xs \<subseteq> carrier R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
669 |
shows "(\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x) \<Longrightarrow> finite_dimension K (finite_extension K xs)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
670 |
and "finite_dimension K (finite_extension K xs) \<Longrightarrow> (\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
671 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
672 |
show "finite_dimension K (finite_extension K xs) \<Longrightarrow> (\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
673 |
using finite_dimension_imp_algebraic[OF assms(1) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
674 |
finite_extension_is_subring[OF subfieldE(1)[OF assms(1)] assms(2)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
675 |
finite_extension_mem[OF subfieldE(1)[OF assms(1)] assms(2)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
676 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
677 |
show "(\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x) \<Longrightarrow> finite_dimension K (finite_extension K xs)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
678 |
using assms(2) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
679 |
proof (induct xs, simp add: finite_dimensionI[OF dimension_one[OF assms(1)]]) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
680 |
case (Cons x xs) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
681 |
hence "finite_dimension K (finite_extension K xs)" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
682 |
by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
683 |
moreover have "(algebraic over (finite_extension K xs)) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
684 |
using algebraic_mono[OF finite_extension_incl[OF subfieldE(3)[OF assms(1)]]] Cons(2-3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
685 |
moreover have "subfield (finite_extension K xs) R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
686 |
using finite_extension_is_subfield[OF assms(1)] Cons(2-3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
687 |
ultimately show ?case |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
688 |
using telescopic_base_dim(1)[OF assms(1) _ _ |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
689 |
finite_dimensionI[OF dimension_simple_extension, of _ x]] Cons(3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
690 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
691 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
692 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
693 |
corollary (in domain) finite_extesion_mem_imp_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
694 |
assumes "subfield K R" "set xs \<subseteq> carrier R" and "\<And>x. x \<in> set xs \<Longrightarrow> (algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
695 |
shows "y \<in> finite_extension K xs \<Longrightarrow> (algebraic over K) y" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
696 |
using finite_dimension_imp_algebraic[OF assms(1) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
697 |
finite_extension_is_subring[OF subfieldE(1)[OF assms(1)] assms(2)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
698 |
finite_extension_finite_dimension(1)[OF assms(1-2)] assms(3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
699 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
700 |
corollary (in domain) simple_extesion_mem_imp_algebraic: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
701 |
assumes "subfield K R" "x \<in> carrier R" "(algebraic over K) x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
702 |
shows "y \<in> simple_extension K x \<Longrightarrow> (algebraic over K) y" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
703 |
using finite_extesion_mem_imp_algebraic[OF assms(1), of "[ x ]"] assms(2-3) by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
704 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
705 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
706 |
subsection \<open>Arithmetic of algebraic numbers\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
707 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
708 |
text \<open>We show that the set of algebraic numbers of a field |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
709 |
over a subfield K is a subfield itself.\<close> |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
710 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
711 |
lemma (in field) subfield_of_algebraics: |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
712 |
assumes "subfield K R" shows "subfield { x \<in> carrier R. (algebraic over K) x } R" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
713 |
proof - |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
714 |
let ?set_of_algebraics = "{ x \<in> carrier R. (algebraic over K) x }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
715 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
716 |
show ?thesis |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
717 |
proof (rule subfieldI'[OF subringI]) |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
718 |
show "?set_of_algebraics \<subseteq> carrier R" and "\<one> \<in> ?set_of_algebraics" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
719 |
using algebraic_self[OF _ subringE(3)] subfieldE(1)[OF assms(1)] by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
720 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
721 |
fix x y assume x: "x \<in> ?set_of_algebraics" and y: "y \<in> ?set_of_algebraics" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
722 |
have "\<ominus> x \<in> simple_extension K x" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
723 |
using subringE(5)[OF simple_extension_is_subring[OF subfieldE(1)]] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
724 |
simple_extension_mem[OF subfieldE(1)] assms(1) x by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
725 |
thus "\<ominus> x \<in> ?set_of_algebraics" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
726 |
using simple_extesion_mem_imp_algebraic[OF assms] x by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
727 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
728 |
have "x \<oplus> y \<in> finite_extension K [ x, y ]" and "x \<otimes> y \<in> finite_extension K [ x, y ]" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
729 |
using subringE(6-7)[OF finite_extension_is_subring[OF subfieldE(1)[OF assms(1)]], of "[ x, y ]"] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
730 |
finite_extension_mem[OF subfieldE(1)[OF assms(1)], of "[ x, y ]"] x y by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
731 |
thus "x \<oplus> y \<in> ?set_of_algebraics" and "x \<otimes> y \<in> ?set_of_algebraics" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
732 |
using finite_extesion_mem_imp_algebraic[OF assms, of "[ x, y ]"] x y by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
733 |
next |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
734 |
fix z assume z: "z \<in> ?set_of_algebraics - { \<zero> }" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
735 |
have "inv z \<in> simple_extension K z" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
736 |
using subfield_m_inv(1)[of "simple_extension K z"] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
737 |
simple_extension_is_subfield[OF assms, of z] |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
738 |
simple_extension_mem[OF subfieldE(1)] assms(1) z by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
739 |
thus "inv z \<in> ?set_of_algebraics" |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
740 |
using simple_extesion_mem_imp_algebraic[OF assms] field_Units z by auto |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
741 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
742 |
qed |
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
743 |
|
8e9100dcde52
Towards a proof of algebraic closure (NB not finished)
paulson <lp15@cam.ac.uk>
parents:
diff
changeset
|
744 |
end |