Up to index of Isabelle/HOL/HOL-Algebra/BPL
theory lemma_2_2_15_local_nilpot(* Title: bpl/lemma_2_2_15_local_nilpot.thy ID: $Id: lemma_2_2_15_local_nilpot.thy $ Author: Jesus Aransay Comments: The set of lemmas proving the equational part of the BPL *) header{*Lemma 2.2.15 in Aransay's memoir*} theory lemma_2_2_15_local_nilpot imports analytic_part_local begin text{*We define a locale setting merging the specifications introduced for @{text "lemma 2.2.14"} and also the one created for the @{text "local nilpotent term alpha"}*} text{*A few definitions are also provided in this locale setting*} locale lemma_2_2_15 = lemma_2_2_14 D R h + local_nilpotent_alpha D R C f g h δ α bound_phi definition (in lemma_2_2_15) h' where "h' == h ⊗R Φ" definition (in lemma_2_2_15) p' where "p' == ((differD) ⊕R δ) ⊗R h' ⊕R h' ⊗R ((differD) ⊕R δ)" definition (in lemma_2_2_15) diff' where "diff' == differ ⊕R δ" definition (in lemma_2_2_15) D' where "D' == (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|))," definition (in lemma_2_2_15) ker_p' where "ker_p' == kernel (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), p'" definition (in lemma_2_2_15) diff_group_ker_p' where "diff_group_ker_p' == (|carrier = kernel (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), p', mult = mult D, one = one D, diff = completion ((|carrier = kernel (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), p', mult = mult D, one = one D, diff = differ ⊕R δ|)),) (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (differ ⊕R δ) |))," definition (in lemma_2_2_15) inc_ker_p' where "inc_ker_p' == (λx. if x ∈ kernel (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (| carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), p' then x else \<one>D')" lemma (in lemma_2_2_15) h'_in_R [simp]: shows "h' ∈ carrier R" using h'_def by simp lemma (in lemma_2_2_15) pert_in_R [simp]: shows "δ ∈ carrier R" using delta_pert and pert_def [of D] by simp lemma (in lemma_2_2_15) p'_in_R [simp]: shows "p' ∈ carrier R" using p'_def and diff_pert_in_R [OF delta_pert] and h'_in_R by simp lemma (in lemma_2_2_15) diff'_in_R [simp]: shows "diff' ∈ carrier R" using diff'_def diff_in_R pert_in_R by simp text{*The endomorphisms (not the differential endomorphisms) over a differential group happen to be the same ones as the homomorphisms over a perturbed version of this differential group*} text{*In other words, the definition of homomorphism over a differential group is independient of the differential*} text{*In the case of differential homomorphisms, this is not always true*} lemma (in ring_endomorphisms) hom_completion_eq: assumes "δ ∈ pert D" shows "hom_completion (|carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), (|carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), = hom_completion D D" using ring_R by (unfold hom_completion_def completion_fun2_def completion_def hom_def expand_fun_eq) (auto) lemma (in ring_endomorphisms) ring_endomorphisms_pert: assumes delta: "δ ∈ pert D" shows "ring_endomorphisms (|carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)), R" (is "ring_endomorphisms ?D' R") proof - from diff_group_pert_is_diff_group [OF delta] have diff_group_pert: "diff_group ?D'" by simp moreover from ring_endomorphisms_def [of D R] and prems have R_ring: "ring R" by (unfold ring_def, simp) moreover from ring_R have "R = (|carrier = hom_completion ?D' ?D', mult = op o, one = λx. if x ∈ carrier ?D' then id x else \<one>?D', zero = λx. if x ∈ carrier ?D' then \<one>?D' else \<one>?D', add = λf g x. if x ∈ carrier ?D' then f x ⊗?D' g x else \<one>?D'|))," proof - from ring_R and hom_completion_eq [OF delta] have "carrier R = hom_completion ?D' ?D'" by simp moreover from ring_R have "mult R = op o" by simp moreover from ring_R have "one R = (λx. if x ∈ carrier ?D' then id x else \<one>?D')" by (simp add: expand_fun_eq) moreover from ring_R have "zero R = (λx. if x ∈ carrier ?D' then \<one>?D' else \<one>?D')" by simp moreover from ring_R have "add R = (λf g x. if x ∈ carrier ?D' then f x ⊗?D' g x else \<one>?D')" by (simp add: expand_fun_eq) ultimately show ?thesis by auto (* Another possible proof, a bit more obscure apply (unfold ring_endomorphisms_def expand_fun_eq) apply (auto simp add: prems) apply (unfold hom_completion_def completion_fun2_def completion_def hom_def expand_fun_eq) apply (auto simp add: prems) *) qed ultimately show ?thesis by (unfold ring_endomorphisms_def ring_endomorphisms_axioms_def ring_def diff_group_def, simp) qed text{*The two following lemmas prove that @{term [locale=lemma_2_2_15] "h' ⊗R h' = \<zero>R"} and @{term [locale=lemma_2_2_15] "h' ⊗R diff' ⊗R h' = h'"}; these are the properties that will allow us to introduce @{thm [locale=lemma_2_2_14] lemma_2_2_14} in order to define the reduction needed for @{text "Lemma 2.2.15"}*} lemma (in lemma_2_2_15) h'_nil: shows "h' ⊗R h' = \<zero>R" proof - from h'_def have "h' ⊗R h' = (h ⊗R Φ) ⊗R (h ⊗R Φ)" by simp also from psi_h_h_phi and h_in_R phi_in_R psi_in_R and R.m_assoc [of Ψ h "(h ⊗R Φ)"] and R.m_assoc [of h h Φ] have "… = Ψ ⊗R (h ⊗R h ⊗R Φ)" by simp also from h_nil have "… = \<zero>R" by simp finally show ?thesis by simp qed lemma (in lemma_2_2_15) h'd'h'_h': shows "h' ⊗R diff' ⊗R h' = h'" (*Maybe this simplification process could be tried in another theorem prover, just in order to see if it succeeds faster*) (*The equations in the premises are a bit tricky, since they can produce very easily infinite loops*) proof - from h'_def have "h' ⊗R diff' ⊗R h' = (h ⊗R Φ) ⊗R diff' ⊗R (h ⊗R Φ)" by simp also from psi_h_h_phi have "… = (Ψ ⊗R h) ⊗R diff' ⊗R (h ⊗R Φ)" by simp also from h_in_R phi_in_R psi_in_R diff'_def diff_in_R pert_in_R have "… = (Ψ ⊗R (h ⊗R (differD) ⊗R h ⊗R Φ)) ⊕R (Ψ ⊗R h) ⊗R ((δ ⊗R h) ⊗R Φ)" by algebra also have "… = (Ψ ⊗R (h ⊗R Φ)) ⊕R (Ψ ⊗R h) ⊗R (\<one>R \<ominus>R Φ)" proof - from phi_prop have "Φ = \<one>R \<ominus>R δ ⊗R h ⊗R Φ" by simp with h_in_R phi_in_R pert_in_R have "\<one>R \<ominus>R Φ = \<one>R \<ominus>R (\<one>R \<ominus>R δ ⊗R h ⊗R Φ)" by algebra with h_in_R phi_in_R pert_in_R have r_h_p: "\<one>R \<ominus>R Φ = δ ⊗R h ⊗R Φ" by algebra from hdh_h have l_h_p: "h ⊗R (differD) ⊗R h = h" by simp from r_h_p and l_h_p show ?thesis by simp qed also from h_in_R phi_in_R psi_in_R diff_in_R pert_in_R have "… = Ψ ⊗R h ⊗R Φ ⊕R Ψ ⊗R h \<ominus>R Ψ ⊗R h ⊗R Φ" by algebra (simp) (*Here I would expect "by algebra" to finish the work*) also from h_in_R phi_in_R psi_in_R diff_in_R pert_in_R have "… = Ψ ⊗R h" by algebra also from psi_h_h_phi have "… = h ⊗R Φ" by simp also from h'_def have "… = h'" by simp finally show ?thesis by simp qed text{*The following lemma is an instantiation of @{term [locale=lemma_2_2_14] "lemma_2_2_14"}, where @{term [locale=lemma_2_2_15] "D' = (|carrier = carrier D, mult = mult D, one = one D, diff = differ ⊕R δ|)),"} @{term [locale=lemma_2_2_15] "R = R"}, and finally @{term [locale=lemma_2_2_15] "h = h ⊗R Φ"}. *} text{*Therefore, the premises of locale @{text "lemma_2_2_14"} have to be verified *} text{*It is not neccesary to explicitly prove that @{term [locale=lemma_2_2_15] "diff_group_ker_p'"} is a differential group, since it is one of the premises in the definition of reduction*} lemma (in lemma_2_2_15) lemma_2_2_15: shows "reduction D' diff_group_ker_p' (\<one>R \<ominus>R p') inc_ker_p' h'" proof - (*Point 1) in the proof in the memoir*) from diff_group_pert_is_diff_group and delta_pert and D'_def have diff_group_D': "diff_group D'" by simp moreover (*This point was omitted in the memoir; actually, it can be considered trivial*) from h'_in_R and ring_R and hom_completion_eq [OF delta_pert] and D'_def have "h' ∈ hom_completion D' D'" by simp moreover (*Point 2) in the proof in the memoir*) from h'_nil have h'_nilpot: "h' ⊗R h' = \<zero>R" by simp moreover (*Point 3) in the memoir proof*) from h'd'h'_h' have "h' ⊗R diff' ⊗R h' = h'" by simp moreover (*This point was omitted in the memoir; it can be seen as trivial in an informal proof*) from ring_endomorphisms_pert [OF delta_pert] and D'_def have ring_D': "ring_endomorphisms D' R" by (unfold ring_endomorphisms_def, simp) (*With the previous facts, lemma_2_2_14 can be directly applied*) ultimately have lemma_2_2_14: "lemma_2_2_14 D' R h'" by (unfold lemma_2_2_14_def lemma_2_2_14_axioms_def diff_group_def ring_endomorphisms_def diff'_def D'_def, simp) from lemma_2_2_14.p_def [OF lemma_2_2_14] lemma_2_2_14.inc_ker_p_def [OF lemma_2_2_14] lemma_2_2_14.diff_group_ker_p_def [OF lemma_2_2_14] lemma_2_2_14.lemma_2_2_14 [OF lemma_2_2_14] show ?thesis by (simp add: diff_group_ker_p'_def inc_ker_p'_def inc_ker_p_def p'_def D'_def) qed end
lemma h'_in_R:
h' ∈ carrier R
lemma pert_in_R:
δ ∈ carrier R
lemma p'_in_R:
p' ∈ carrier R
lemma diff'_in_R:
diff' ∈ carrier R
lemma hom_completion_eq:
δ ∈ pert D
==> hom_completion
(| carrier = carrier D, mult = op ⊗, one = \<one>, diff = differ ⊕R δ,
... = () |)
(| carrier = carrier D, mult = op ⊗, one = \<one>, diff = differ ⊕R δ,
... = () |) =
hom_completion D D
lemma ring_endomorphisms_pert:
δ ∈ pert D
==> ring_endomorphisms
(| carrier = carrier D, mult = op ⊗, one = \<one>, diff = differ ⊕R δ,
... = () |)
R
lemma h'_nil:
h' ⊗R h' = \<zero>R
lemma h'd'h'_h':
h' ⊗R diff' ⊗R h' = h'
lemma lemma_2_2_15:
reduction D' diff_group_ker_p' (\<one>R \<ominus>R p') inc_ker_p' h'