theory Diff_PiE imports
More_Manifolds "HOL-Library.FuncSet" begin
lemma PiE_iff: "f ∈ A→EB⟷ (∀a∈A. f a ∈ B) ∧ (∀a. a∉A ⟶ f a = undefined)"by auto lemma"f x = None ==> x ∉ dom f"by (simp add: domIff) lemma"f ∈ D→EC==> f x = undefined ==> x∉D"oops lemma"f ∈ D→EC==> x∉D ==> f x ∉ C"oops lemma"f ∈ D→EC==> f x ∉ C ==> x∉D"by auto
section‹Automorphisms using the function set›
locale automorphism_PiE = c_manifold begin
definition automorphism_PiE :: "('a==>'a) ==> bool" where"automorphism_PiE f ≡ (∃f'∈carrier→Ecarrier. c_automorphism k charts f f') ∧ f∈carrier→Ecarrier"
lemma automorphism_PiED [dest]: assumes"automorphism_PiE f" shows"∃f'∈carrier→Ecarrier. c_automorphism k charts f f'" and"f∈carrier→Ecarrier"and"bij_betw f carrier carrier" using assms diffeomorphism.is_bij_betw[of k charts charts f] by (auto simp: automorphism_PiE_def c_automorphism_def)
lemma automorphism_PiED2: assumes"automorphism_PiE f" obtains f' where"f'∈carrier→Ecarrier""c_automorphism k charts f f'""bij_betw f carrier carrier" using automorphism_PiED[OF assms] by blast
lemma automorphism_PiEI [intro]: assumes"∃f'∈carrier→Ecarrier. c_automorphism k charts f f'" and"f∈carrier→Ecarrier"and"bij_betw f carrier carrier" shows"automorphism_PiE f" using assms by (auto simp: automorphism_PiE_def)
lemma automorphism_PiE_partial_id: "automorphism_PiE (restrict id carrier)" apply (intro automorphism_PiEI exI c_automorphism.intro) apply (smt (verit, best) c_automorphism.automorphism_cong' c_automorphism.c_automorphism_cong c_automorphism.intro id_apply id_diffeomorphism restrict_PiE_iff restrict_apply') by auto
lemma automorphism_surj_inj: assumes"automorphism_PiE f" shows"f ` carrier = carrier""inj_on f carrier" using automorphism_PiED[OF assms] by (meson bij_betw_imp_surj_on bij_betw_imp_inj_on)+
lemma the_inverse_aut_PiE: fixes f g defines f' [simp]: "f' ≡ λy::'a. if y∈carrier then g y else undefined" assumes f: "f∈carrier→Ecarrier""bij_betw f carrier carrier"and g: "g∈carrier→Ecarrier""c_automorphism k charts f g" shows"automorphism_PiE f'" and"∧x. x ∈ carrier ==> (f' ((f x))) = x" and"∧x. x ∈ carrier ==> (f ((f' x))) = x" proof -
have diff_f': "diff k charts charts f'" using c_automorphism.inverse_automorphism g diff.diff_cong unfolding c_automorphism_def diffeomorphism_def f' by fastforce
text‹Finding an inverse diffeomorphism is the main part of this proof.› have diffeo_f': "diffeomorphism k charts charts f' f" apply (intro diffeomorphism.intro diffeomorphism_axioms.intro conjI)
subgoal using diff_f' .
subgoal using assms unfolding automorphism_PiE_def c_automorphism_def diffeomorphism_def by simp
subgoal by (simp, metis c_automorphism.axioms(1) diffeomorphism.f'_inv g(2))
subgoal using c_automorphism.in_dest diffeomorphism.f_inv g by (simp add: c_automorphism_def, blast) done
lemma aut_comp_simps [simp]: "(g ∘c f) x = g (f x)" "automorphism_PiE g ==>∃z∈carrier. z = (g ∘c f) x" if"x ∈ carrier""automorphism_PiE f"for x
subgoal by (simp add: compose_eq that(1))
subgoal by (metis (no_types, lifting) automorphism_surj_inj(1) image_eqI surj_compose that) done
lemma aut_to [simp]: "f x ∈ carrier"if"automorphism_PiE f""x ∈ carrier" using automorphism_surj_inj(1) that by auto
lemma automorphism_PiE_ran: "{f x | x. x ∈ carrier} = carrier"if aut_f: "automorphism_PiE f" proof - have"∃y. x = f y ∧ y ∈ carrier"if"x ∈ carrier"for x using aut_to obtain_inverse_aut_PiE that aut_f by metis thus ?thesis by (auto simp: that) qed
obtain f' where f': "c_automorphism k charts (λx. f x) f'"and f: "f∈carrier→Ecarrier""bij_betw f carrier carrier" using automorphism_PiED[OF assms(1)] by blast obtain g' where g': "c_automorphism k charts (λx. g x) g'"and g: "g∈carrier→Ecarrier""bij_betw g carrier carrier" using automorphism_PiED[OF assms(2)] by blast
have aut_comp: "c_automorphism k charts (λx. g (f x)) (f' ∘ g')" using c_automorphism.automorphism_compose[OF f' g'] c_automorphism.c_automorphism_cong by fastforce have aut_compc: "c_automorphism k charts (g ∘c f) (f' ∘c g')" proof - have"diff k charts charts (λx∈carrier. g (f x))""diff k charts charts (λx∈carrier. f' (g' x))" using aut_comp[unfolded compose_def c_automorphism_def diffeomorphism_def] diff.diff_cong unfolding restrict_def by fastforce+ moreoverhave"diffeomorphism_axioms charts charts (λx∈carrier. g (f x)) (λx∈carrier. f' (g' x))" proof fix x assume x: "x∈carrier" have"f' (g' (g (f x))) = x" using aut_comp x c_automorphism.axioms diffeomorphism.f_inv by fastforce moreoverhave"f' (g' x) ∈ carrier ==> g (f (f' (g' x))) = x" using aut_comp x c_automorphism.axioms diffeomorphism.f'_inv by fastforce moreoverhave"f' (g' x) ∉ carrier ==> undefined = x" using x c_automorphism.in_dest c_automorphism.inverse_automorphism f' g' by meson ultimatelyshow"(λz∈carrier. f' (g' z)) ((λz∈carrier. g (f z)) x) = x" and"(λz∈carrier. g (f z)) ((λz∈carrier. f' (g' z)) x) = x" by (metis assms aut_to restrict_apply)+ qed ultimatelyshow ?thesis unfolding compose_def c_automorphism_def diffeomorphism_def by simp qed show"∃f'∈carrier →E carrier. c_automorphism k charts (g ∘c f) f'" apply (intro bexI[of _ "f' ∘c g'"] PiE_I) using aut_compc c_automorphism.in_dest c_automorphism.inverse_automorphism by (simp, blast, simp add: compose_def) show"g ∘c f ∈ carrier →E carrier" by (simp add: assms compose_def extensional_funcset_def) show"bij_betw (g ∘c f) carrier carrier" using automorphism_PiED(3) assms by (auto intro: bij_betw_compose) qed
show assoc: "Diff_comp_PiE (Diff_comp_PiE a b) c = Diff_comp_PiE a (Diff_comp_PiE b c)" if asms: "a ∈ Diff_PiE""b ∈ Diff_PiE""c ∈ Diff_PiE"for a b c unfolding compose_def using Diff_PiED that(3) by auto
show id_comp: "Diff_comp_PiE Diff_id_PiE a = a ∧ Diff_comp_PiE a Diff_id_PiE = a"if"a ∈ Diff_PiE"for a using Id_compose compose_Id automorphism_PiED Diff_PiED that by (metis extensional_funcset_def Int_iff eq_id_iff)
show id_mem: "Diff_id_PiE ∈ Diff_PiE" using automorphism_PiE_partial_id by (metis Diff_PiEI eq_id_iff)
{ fix x y assume x: "x∈Diff_PiE"and y: "y∈Diff_PiE" show"Diff_comp_PiE x y ∈ Diff_PiE" using aut_comp Diff_PiED x y by auto }
show"∀x∈Diff_PiE. ∃y∈Diff_PiE. x ∘c y = Diff_id_PiE ∧ y ∘c x = Diff_id_PiE" proof fix f assume f: "f∈Diff_PiE" thenobtain f' where f': "f'∈Diff_PiE""∀x ∈ carrier. (f' ((f x))) = x""∀x ∈ carrier. (f ((f' x))) = x" using obtain_inverse_aut_PiE[OF Diff_PiED[OF f]] Diff_PiEI by metis thenshow"∃y∈Diff_PiE. f ∘c y = Diff_id_PiE ∧ y ∘c f = Diff_id_PiE" apply (intro bexI[OF _ f'(1)]) unfolding compose_def id_def restrict_def by meson qed qed
end
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.