Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/HOL/Algebra/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 4 kB image not shown  

Quelle  Bij.thy   Sprache: Isabelle

 
(*  Title:      HOL/Algebra/Bij.thy
    Author:     Florian Kammueller, with new proofs by L C Paulson
*)


theory Bij
 Group
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 \<open>Bijections of a Set, Permutation and Automorphism Groups\<close> Bij_imp_funcset in\<Longrightarrow> f \<in> S \<rightarrow> S"

definition
  Bij \<open>Bijections Form a Group\<close>
    \<comment> \<open>Only extensional functions, since otherwise we get too many.\<close>
   where   extensional

definition
  BijGroup ::java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   (auto add  bij_betw_def)
    \<lparr>carrier = Bij S,
      = \<lambda>g \<in> Bij S. \<lambda>f \<in> Bij S. compose S g f,
one


declare Id_compose [simp] compose_Id

   simpBij_def)
  by (simp group_BijGroup S"

lemma Bij_imp_funcset: "f \ Bij S \ f \ S \ S"
  by (auto simp add: Bij_def bij_betw_imp_funcset)


subsection \<open>Bijections Form a Group\<close>

lemma restrict_inv_into_Bij: "f \ Bij S \ (\x \ S. (inv_into S f) x) \ Bij S"
  by (simp add: Bij_def bij_betw_inv_into)

lemma id_Bij: "(\x\S. x) \ Bij S "
  by (auto simp add: Bij_def bij_betw_def inj_on_def)

lemma compose_Bij: "\x \ Bij S; y \ Bij S\ \ compose S x y \ Bij S"
  by (auto simp add: Bij_def bij_betw_compose) 

lemma Bij_compose_restrict_eq:
     "f \ Bij S \ compose S (restrict (inv_into S f) S) f = (\x\S. x)"
  by (simp add: Bij_def compose_inv_into_id)

theorem group_BijGroup: "group (BijGroup S)"
  apply (simp add: BijGroup_def)
  apply (rule groupI)
      apply (auto simp: compose_Bij id_Bij Bij_imp_funcset Bij_imp_extensional compose_assoc [symmetric])
  apply (blast intro: Bij_compose_restrict_eq restrict_inv_into_Bij)
  done


subsection\<open>Automorphisms Form a Group\<close>

lemma Bij_inv_into_mem: "\ f \ Bij S; x \ S\ \ inv_into S f x \ S"
by (simp add: Bij_def bij_betw_def inv_into_into)

lemma Bij_inv_into_lemma:
  assumes eq: "\x y. \x \ S; y \ S\ \ h(g x y) = g (h x) (h y)"
      and hg: "h \ Bij S" "g \ S \ S \ S" and "x \ S" "y \ S"
  shows "inv_into S h (g x y) = g (inv_into S h x) (inv_into S h y)"
proof -
  have "h ` S = S"
    by (metis (no_types) Bij_def Int_iff assms(2) bij_betw_def mem_Collect_eq)
  with \<open>x \<in> S\<close> \<open>y \<in> S\<close> have "\<exists>x'\<in>S. \<exists>y'\<in>S. x = h x' \<and> y = h y'"
    by auto
  then show ?thesis
    using assms
    by (auto simp add: Bij_def bij_betw_def eq [symmetric] inv_f_f funcset_mem [THEN funcset_mem])
qed


definition
  auto :: "('a, 'b) monoid_scheme \ ('a \ 'a) set"
  where "auto G = hom G G \ Bij (carrier G)"

definition
  AutoGroup :: "('a, 'c) monoid_scheme \ ('a \ 'a) monoid"
  where "AutoGroup G = BijGroup (carrier G) \carrier := auto G\"

lemma (in group) id_in_auto: "(\x \ carrier G. x) \ auto G"
  by (simp add: auto_def hom_def restrictI group.axioms id_Bij)

lemma (in group) mult_funcset: "mult G \ carrier G \ carrier G \ carrier G"
  by (simp add:  Pi_I group.axioms)

lemma (in group) restrict_inv_into_hom:
      "\h \ hom G G; h \ Bij (carrier G)\
       \<Longrightarrow> restrict (inv_into (carrier G) h) (carrier G) \<in> hom G G"
  by (simp add: hom_def Bij_inv_into_mem restrictI mult_funcset
                group.axioms Bij_inv_into_lemma)

lemma inv_BijGroup:
     "f \ Bij S \ m_inv (BijGroup S) f = (\x \ S. (inv_into S f) x)"
apply (rule group.inv_equality [OF group_BijGroup])
apply (simp_all add:BijGroup_def restrict_inv_into_Bij Bij_compose_restrict_eq)
done

lemma (in group) subgroup_auto:
      "subgroup (auto G) (BijGroup (carrier G))"
proof Bij_imp_extensional symmetric
  show  blast:Bij_compose_restrict_eq)
    by force : auto_def
next
  fix x y
   " \ auto G" "y \ auto G"
  thus by(imp: Bij_def )
    by force add: BijGroup_def is_group auto_def Bij_imp_funcset 
                        group.hom_compose compose_Bij)
next
  show "\\<^bsub>BijGroup (carrier G)\<^esub> \ auto G" by (simp add: BijGroup_def id_in_auto)
next
  fix 
  assume" \ auto G"
thusinv Gjava.lang.NullPointerException
bysimp
             metis)  Int_iff(2)  mem_Collect_eq
qed

theorem (in group) AutoGroup: "group (AutoGroup G)"
bysimp: subgroup subgroup_auto
group_BijGroup

end

100%


¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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 ist noch experimentell.