返回 NPA

模块

Mathlib.Algebra.Group.Image

npa-mathlib

2

模块

63

定理

750

声明

1016

非可信 sidecar

源文本和展示 overlay 属于展示元数据。可信证据是签名证书和 checker 结果。

定理

5

定义

1

归纳类型

0

公理

1

声明

哈希

source
sha256:904df4b2602b8e0a7799aaeea9e6e310e61138f497c5fcc6a44d24443c9c3b9c
certificateFile
sha256:c4efe5d45e4dc167cd9137675e993d3ffe5678f4579484814736b72cfc77fa30
export
sha256:0935f963b77bb9ed124d4b38435ad2a9a19f860e1f06de11c1ab8ca3f05cdd0e
axiomReport
sha256:0869976f857fbf07454df1db004a649ae3ee9ede0e1429dbf40af6dfaac5bfeb
certificate
sha256:6b69557ec90109fac32db07e78f35a2150dbda092294245455d1b1b00bd2f588

源文本

import Std.Logic.Eq
import Mathlib.Logic.EqReasoning
import Mathlib.Algebra.Group.Basic

def ImagePred.{u,v} :
  forall (G : Sort u), forall (H : Sort v), forall (f : forall (x : G), H), forall (y : H), Prop :=
  fun G => fun H => fun f => fun y => forall (P : Prop), forall (mk : forall (a : G), forall (h : @Eq.{v} H (f a) y), P), P

theorem image_intro.{u,v} :
  forall (G : Sort u), forall (H : Sort v), forall (f : forall (x : G), H), forall (a : G), @ImagePred.{u,v} G H f (f a) :=
  fun G => fun H => fun f => fun a => fun (P : Prop) => fun (mk : forall (b : G), forall (h : @Eq.{v} H (f b) (f a)), P) => mk a (@Eq.refl.{v} H (f a))

theorem image_elim.{u,v} :
  forall (G : Sort u), forall (H : Sort v), forall (f : forall (x : G), H), forall (y : H), forall (img : @ImagePred.{u,v} G H f y), forall (P : Prop), forall (mk : forall (a : G), forall (h : @Eq.{v} H (f a) y), P), P :=
  fun G => fun H => fun f => fun y => fun img => fun P => fun mk => img P mk

theorem image_one.{u,v} :
  forall (G : Sort u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort 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.{u,v} G oneG mulG invG H oneH mulH invH f), @ImagePred.{u,v} G H f oneH :=
  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 : forall (a : G), forall (h : @Eq.{v} H (f a) oneH), P) => mk oneG (@hom_one.{u,v} G oneG mulG invG H oneH mulH invH f hom_args)

theorem image_mul_closed.{u,v} :
  forall (G : Sort u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort 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.{u,v} G oneG mulG invG H oneH mulH invH f), forall (x : H), forall (y : H), forall (hx : @ImagePred.{u,v} G H f x), forall (hy : @ImagePred.{u,v} G H f y), @ImagePred.{u,v} G H f (mulH x y) :=
  fun G => fun oneG => fun mulG => fun invG => fun H => fun oneH => fun mulH => fun invH => fun f => fun hom_args => fun x => fun y => fun hx => fun hy => hx (@ImagePred.{u,v} G H f (mulH x y)) (fun (a : G) => fun (hax : @Eq.{v} H (f a) x) => hy (@ImagePred.{u,v} G H f (mulH x y)) (fun (b : G) => fun (hby : @Eq.{v} H (f b) y) => fun (P : Prop) => fun (mk : forall (c : G), forall (h : @Eq.{v} H (f c) (mulH x y)), P) => mk (mulG a b) (@eq_trans.{v} H (f (mulG a b)) (mulH (f a) (f b)) (mulH x y) (@hom_mul.{u,v} G oneG mulG invG H oneH mulH invH f hom_args a b) (@eq_congr2.{v,v,v} H H H mulH (f a) x (f b) y hax hby))))

theorem image_inv_closed.{u,v} :
  forall (G : Sort u), forall (oneG : G), forall (mulG : forall (a : G), forall (b : G), G), forall (invG : forall (a : G), G), forall (H : Sort 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.{u,v} G oneG mulG invG H oneH mulH invH f), forall (y : H), forall (hy : @ImagePred.{u,v} G H f y), @ImagePred.{u,v} G H f (invH y) :=
  fun G => fun oneG => fun mulG => fun invG => fun H => fun oneH => fun mulH => fun invH => fun f => fun hom_args => fun y => fun hy => hy (@ImagePred.{u,v} G H f (invH y)) (fun (a : G) => fun (hay : @Eq.{v} H (f a) y) => fun (P : Prop) => fun (mk : forall (c : G), forall (h : @Eq.{v} H (f c) (invH y)), P) => mk (invG a) (@eq_trans.{v} H (f (invG a)) (invH (f a)) (invH y) (@hom_inv.{u,v} G oneG mulG invG H oneH mulH invH f hom_args a) (@eq_congr_arg.{v,v} H H invH (f a) y hay)))