Module
Mathlib.Algebra.Group.FirstIsomorphism
npa-mathlib
Packages
2
Module
63
Theorem
750
Declarations
1016
信頼境界外の sidecar
Source text や表示 overlay は提示用メタデータです。信頼する証拠は署名済み証明書と checker の結果です。
Theorem
5
Definition
0
Inductive type
0
Axiom
1
Declarations
first_iso_phi_mul
forall (G : Sort succ u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort succ v), for...
first_iso_phi_injective
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (q1 : @KerQuot.{u,v} G H f), forall (q2 : @KerQuot.{u,v} G H f), fora...
first_iso_phi_hits_image
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (q : @KerQuot.{u,v} G H f), @ImagePred.{succ u,succ v} G H f (@KerQuo...
first_iso_phi_surj_image
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (y : H), forall (hy : @ImagePred.{succ u,succ v} G H f y), forall (P...
first_isomorphism_image_facts
forall (G : Sort succ u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort succ v), for...
Eq.rec
Hashes
- source
- sha256:f705f37a8a5ae4eae70d76e410fc0f5136f094cf9cdee2caf2ff0acf6133efc6
- certificateFile
- sha256:2d92aeb154f89446b5e2a0ec05df27cd3051cc07e8b146549748b23a9f446310
- export
- sha256:aaf83557307aef06abfc3bf75495930d8d4caa84c45f2d164036b68f67041563
- axiomReport
- sha256:9a0ded81408eba6f81619705659e98a0abcbe93475d802786eea2cf85209e352
- certificate
- sha256:9de6c8ed4c50809451d6ac6e617a2bac85cd117a972c9e2db7e48056ceb9da83
Source
import Std.Logic.Eq
import Mathlib.Logic.EqReasoning
import Mathlib.Algebra.Group.Basic
import Mathlib.Algebra.Group.Image
import Mathlib.Algebra.Group.Kernel.Quotient
import Mathlib.Algebra.Group.Kernel.Quotient.Mul
import Mathlib.Algebra.Group.Kernel.Quotient.Group
import Mathlib.Algebra.Group.Kernel.Quotient.Hom
theorem first_iso_phi_mul.{u,v} :
forall (G : Sort succ u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort succ v), forall (oneH : H), forall (mulH : forall (a : H), forall (b : H), H), forall (invH : forall (a : H), H), forall (f : forall (x : G), H), forall (hom_args : @GroupHomLawArgs.{succ u,succ v} G oneG mulG invG H oneH mulH invH f), forall (q1 : @KerQuot.{u,v} G H f), forall (q2 : @KerQuot.{u,v} G H f), @Eq.{succ v} H (@KerQuotToH.{u,v} G H f (@KerQuotMul.{u,v} G oneG mulG invG H oneH mulH invH f hom_args q1 q2)) (mulH (@KerQuotToH.{u,v} G H f q1) (@KerQuotToH.{u,v} G H f q2)) :=
fun G => fun oneG => fun mulG => fun invG => fun H => fun oneH => fun mulH => fun invH => fun f => fun hom_args => @ker_quot_to_h_mul.{u,v} G oneG mulG invG H oneH mulH invH f hom_args
theorem first_iso_phi_injective.{u,v} :
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (q1 : @KerQuot.{u,v} G H f), forall (q2 : @KerQuot.{u,v} G H f), forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f q1) (@KerQuotToH.{u,v} G H f q2)), @Eq.{succ u} (@KerQuot.{u,v} G H f) q1 q2 :=
fun G => fun H => fun f => @Quotient.indProp.{u} G (@KerSetoid.{u,v} G H f) (fun (q1 : @KerQuot.{u,v} G H f) => forall (q2 : @KerQuot.{u,v} G H f), forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f q1) (@KerQuotToH.{u,v} G H f q2)), @Eq.{succ u} (@KerQuot.{u,v} G H f) q1 q2) (fun (a : G) => @Quotient.indProp.{u} G (@KerSetoid.{u,v} G H f) (fun (q2 : @KerQuot.{u,v} G H f) => forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f (@KerQuotMk.{u,v} G H f a)) (@KerQuotToH.{u,v} G H f q2)), @Eq.{succ u} (@KerQuot.{u,v} G H f) (@KerQuotMk.{u,v} G H f a) q2) (fun (b : G) => fun (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f (@KerQuotMk.{u,v} G H f a)) (@KerQuotToH.{u,v} G H f (@KerQuotMk.{u,v} G H f b))) => @ker_quot_sound.{u,v} G H f a b h))
theorem first_iso_phi_hits_image.{u,v} :
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (q : @KerQuot.{u,v} G H f), @ImagePred.{succ u,succ v} G H f (@KerQuotToH.{u,v} G H f q) :=
fun G => fun H => fun f => @Quotient.indProp.{u} G (@KerSetoid.{u,v} G H f) (fun (q : @KerQuot.{u,v} G H f) => @ImagePred.{succ u,succ v} G H f (@KerQuotToH.{u,v} G H f q)) (fun (a : G) => @image_intro.{succ u,succ v} G H f a)
theorem first_iso_phi_surj_image.{u,v} :
forall (G : Sort succ u), forall (H : Sort succ v), forall (f : forall (x : G), H), forall (y : H), forall (hy : @ImagePred.{succ u,succ v} G H f y), forall (P : Prop), forall (mk : forall (q : @KerQuot.{u,v} G H f), forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f q) y), P), P :=
fun G => fun H => fun f => fun y => fun hy => fun P => fun mk => @image_elim.{succ u,succ v} G H f y hy P (fun (a : G) => fun (h : @Eq.{succ v} H (f a) y) => mk (@KerQuotMk.{u,v} G H f a) (@eq_trans.{succ v} H (@KerQuotToH.{u,v} G H f (@KerQuotMk.{u,v} G H f a)) (f a) y (@ker_quot_to_h_mk.{u,v} G H f a) h))
theorem first_isomorphism_image_facts.{u,v} :
forall (G : Sort succ u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort succ v), forall (oneH : H), forall (mulH : forall (a : H), forall (b : H), H), forall (invH : forall (a : H), H), forall (f : forall (x : G), H), forall (hom_args : @GroupHomLawArgs.{succ u,succ v} G oneG mulG invG H oneH mulH invH f), forall (P : Prop), forall (mk : forall (mul_compat : forall (q1 : @KerQuot.{u,v} G H f), forall (q2 : @KerQuot.{u,v} G H f), @Eq.{succ v} H (@KerQuotToH.{u,v} G H f (@KerQuotMul.{u,v} G oneG mulG invG H oneH mulH invH f hom_args q1 q2)) (mulH (@KerQuotToH.{u,v} G H f q1) (@KerQuotToH.{u,v} G H f q2))), forall (injective : forall (q1 : @KerQuot.{u,v} G H f), forall (q2 : @KerQuot.{u,v} G H f), forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f q1) (@KerQuotToH.{u,v} G H f q2)), @Eq.{succ u} (@KerQuot.{u,v} G H f) q1 q2), forall (hits_image : forall (q : @KerQuot.{u,v} G H f), @ImagePred.{succ u,succ v} G H f (@KerQuotToH.{u,v} G H f q)), forall (surj_image : forall (y : H), forall (hy : @ImagePred.{succ u,succ v} G H f y), forall (Q : Prop), forall (mk_surj : forall (q : @KerQuot.{u,v} G H f), forall (h : @Eq.{succ v} H (@KerQuotToH.{u,v} G H f q) y), Q), Q), P), P :=
fun G => fun oneG => fun mulG => fun invG => fun H => fun oneH => fun mulH => fun invH => fun f => fun hom_args => fun (P : Prop) => fun mk => mk (@first_iso_phi_mul.{u,v} G oneG mulG invG H oneH mulH invH f hom_args) (@first_iso_phi_injective.{u,v} G H f) (@first_iso_phi_hits_image.{u,v} G H f) (@first_iso_phi_surj_image.{u,v} G H f)