Back to NPA

Module

Mathlib.Algebra.Ring.FirstIsomorphism

npa-mathlib

Packages

2

Module

63

Theorems

750

Declarations

1016

Untrusted sidecar

Source text and display overlays are presentation metadata. The signed certificate and checker result are the trusted evidence.

Theorems

9

Definitions

3

Inductive types

0

Axioms

1

Declarations

RingKerQuotMul

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

definition

RingKerQuotOne

forall (R : Sort succ u), forall (oneR : R), forall (S : Sort succ v), forall (f : forall (x : R), S), @RingKerQuot.{u,v} R S f

definition

RingFirstIso

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

definition

ring_ker_quot_mul_mk

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

ring_first_iso_phi_zero

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

ring_first_iso_phi_one

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

ring_first_iso_phi_add

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

ring_first_iso_phi_mul

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

ring_first_iso_phi_injective

forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S...

theorem

ring_first_iso_phi_hits_image

forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (q : @RingKerQuot.{u,v} R S f), @RingImagePred.{succ u,succ v} R S f...

theorem

ring_first_iso_phi_surj_image

forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), forall...

theorem

ring_first_isomorphism_to_image

forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (s...

theorem

Eq.rec

axiom

Hashes

source
sha256:ae5ff402aafb79a21c3cce567f420d0a185e581ab9bb6a42d2302a9009c74250
certificateFile
sha256:cd5ed74355fac4f19568206e0b3709edad835c2f8396b7e5e54a8932c0efe094
export
sha256:9ef53bef360e0e274a73ca9ba975f66eed4296483446e0ff633520a02fab9447
axiomReport
sha256:f39c6826ea5fd04328e88ce53f46ee3da7422779015b92583cdcef2697007f68
certificate
sha256:094440c29ba32666c059099a3f94495e240872b703d1f4eb534b9b09a2e8aad4

Source

import Std.Logic.Eq
import Mathlib.Logic.EqReasoning
import Mathlib.Algebra.Ring.Basic
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.FirstIsomorphism
import Mathlib.Algebra.Ring.FirstIsomorphism.Basic

def RingKerQuotMul.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @RingKerQuot.{u,v} R S f :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => @Quotient.lift2.{u,u} R (@RingKerQuot.{u,v} R S f) (@KerSetoid.{u,v} R S f) (@RingKerQuotMulRep.{u,v} R mulR S f) (fun (a : R) => fun (a2 : R) => fun (b : R) => fun (b2 : R) => fun (ha : @Setoid.r.{u} R (@KerSetoid.{u,v} R S f) a a2) => fun (hb : @Setoid.r.{u} R (@KerSetoid.{u,v} R S f) b b2) => @ring_ker_quot_mul_rep_compat.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args a a2 b b2 ha hb)

def RingKerQuotOne.{u,v} :
  forall (R : Sort succ u), forall (oneR : R), forall (S : Sort succ v), forall (f : forall (x : R), S), @RingKerQuot.{u,v} R S f :=
  fun R => fun oneR => fun S => fun f => @RingKerQuotMk.{u,v} R S f oneR

def RingFirstIso.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (ringR_args : @RingLawArgs.{succ u} R zeroR oneR addR negR subR mulR), forall (ringS_args : @RingLawArgs.{succ v} S zeroS oneS addS negS subS mulS), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), Prop :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun ringR_args => fun ringS_args => fun hom_args => forall (P : Prop), forall (mk : forall (image_zero : @RingImagePred.{succ u,succ v} R S f zeroS), forall (image_one : @RingImagePred.{succ u,succ v} R S f oneS), forall (image_add_closed : forall (x : S), forall (y : S), forall (hx : @RingImagePred.{succ u,succ v} R S f x), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (addS x y)), forall (image_neg_closed : forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (negS y)), forall (image_mul_closed : forall (x : S), forall (y : S), forall (hx : @RingImagePred.{succ u,succ v} R S f x), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (mulS x y)), forall (zero_compat : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotZero.{u,v} R zeroR S f)) zeroS), forall (one_compat : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotOne.{u,v} R oneR S f)) oneS), forall (add_compat : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotAdd.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (addS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2))), forall (mul_compat : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (mulS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2))), forall (injective : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2)), @Eq.{succ u} (@RingKerQuot.{u,v} R S f) q1 q2), forall (hits_image : forall (q : @RingKerQuot.{u,v} R S f), @RingImagePred.{succ u,succ v} R S f (@RingKerQuotToS.{u,v} R S f q)), forall (surj_image : forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), forall (Q : Prop), forall (mk_surj : forall (q : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q) y), Q), Q), P), P

theorem ring_ker_quot_mul_mk.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), forall (a : R), forall (b : R), @Eq.{succ u} (@RingKerQuot.{u,v} R S f) (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args (@RingKerQuotMk.{u,v} R S f a) (@RingKerQuotMk.{u,v} R S f b)) (@RingKerQuotMk.{u,v} R S f (mulR a b)) :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => fun a => fun b => @Eq.refl.{succ u} (@RingKerQuot.{u,v} R S f) (@RingKerQuotMk.{u,v} R S f (mulR a b))

theorem ring_first_iso_phi_zero.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotZero.{u,v} R zeroR S f)) zeroS :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => @ring_hom_zero.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args

theorem ring_first_iso_phi_one.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotOne.{u,v} R oneR S f)) oneS :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => @ring_hom_one.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args

theorem ring_first_iso_phi_add.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotAdd.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (addS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2)) :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => @first_iso_phi_mul.{u,v} R zeroR addR negR S zeroS addS negS f (@ring_hom_as_additive_group_hom.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args)

theorem ring_first_iso_phi_mul.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (mulS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2)) :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun hom_args => @Quotient.indProp.{u} R (@KerSetoid.{u,v} R S f) (fun (q1 : @RingKerQuot.{u,v} R S f) => forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (mulS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2))) (fun (a : R) => @Quotient.indProp.{u} R (@KerSetoid.{u,v} R S f) (fun (q2 : @RingKerQuot.{u,v} R S f) => @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args (@RingKerQuotMk.{u,v} R S f a) q2)) (mulS (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMk.{u,v} R S f a)) (@RingKerQuotToS.{u,v} R S f q2))) (fun (b : R) => @ring_hom_mul.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args a b))

theorem ring_first_iso_phi_injective.{u,v} :
  forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2)), @Eq.{succ u} (@RingKerQuot.{u,v} R S f) q1 q2 :=
  fun R => fun S => fun f => @first_iso_phi_injective.{u,v} R S f

theorem ring_first_iso_phi_hits_image.{u,v} :
  forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (q : @RingKerQuot.{u,v} R S f), @RingImagePred.{succ u,succ v} R S f (@RingKerQuotToS.{u,v} R S f q) :=
  fun R => fun S => fun f => @first_iso_phi_hits_image.{u,v} R S f

theorem ring_first_iso_phi_surj_image.{u,v} :
  forall (R : Sort succ u), forall (S : Sort succ v), forall (f : forall (x : R), S), forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), forall (P : Prop), forall (mk : forall (q : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q) y), P), P :=
  fun R => fun S => fun f => @first_iso_phi_surj_image.{u,v} R S f

theorem ring_first_isomorphism_to_image.{u,v} :
  forall (R : Sort succ u), forall (zeroR : R), forall (oneR : R), forall (addR : forall (a : R), forall (b : R), R), forall (negR : forall (a : R), R), forall (subR : forall (a : R), forall (b : R), R), forall (mulR : forall (a : R), forall (b : R), R), forall (S : Sort succ v), forall (zeroS : S), forall (oneS : S), forall (addS : forall (a : S), forall (b : S), S), forall (negS : forall (a : S), S), forall (subS : forall (a : S), forall (b : S), S), forall (mulS : forall (a : S), forall (b : S), S), forall (f : forall (x : R), S), forall (ringR_args : @RingLawArgs.{succ u} R zeroR oneR addR negR subR mulR), forall (ringS_args : @RingLawArgs.{succ v} S zeroS oneS addS negS subS mulS), forall (hom_args : @RingHomLawArgs.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f), @RingFirstIso.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f ringR_args ringS_args hom_args :=
  fun R => fun zeroR => fun oneR => fun addR => fun negR => fun subR => fun mulR => fun S => fun zeroS => fun oneS => fun addS => fun negS => fun subS => fun mulS => fun f => fun ringR_args => fun ringS_args => fun hom_args => fun (P : Prop) => fun (mk : forall (image_zero : @RingImagePred.{succ u,succ v} R S f zeroS), forall (image_one : @RingImagePred.{succ u,succ v} R S f oneS), forall (image_add_closed : forall (x : S), forall (y : S), forall (hx : @RingImagePred.{succ u,succ v} R S f x), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (addS x y)), forall (image_neg_closed : forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (negS y)), forall (image_mul_closed : forall (x : S), forall (y : S), forall (hx : @RingImagePred.{succ u,succ v} R S f x), forall (hy : @RingImagePred.{succ u,succ v} R S f y), @RingImagePred.{succ u,succ v} R S f (mulS x y)), forall (zero_compat : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotZero.{u,v} R zeroR S f)) zeroS), forall (one_compat : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotOne.{u,v} R oneR S f)) oneS), forall (add_compat : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotAdd.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (addS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2))), forall (mul_compat : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f (@RingKerQuotMul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args q1 q2)) (mulS (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2))), forall (injective : forall (q1 : @RingKerQuot.{u,v} R S f), forall (q2 : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q1) (@RingKerQuotToS.{u,v} R S f q2)), @Eq.{succ u} (@RingKerQuot.{u,v} R S f) q1 q2), forall (hits_image : forall (q : @RingKerQuot.{u,v} R S f), @RingImagePred.{succ u,succ v} R S f (@RingKerQuotToS.{u,v} R S f q)), forall (surj_image : forall (y : S), forall (hy : @RingImagePred.{succ u,succ v} R S f y), forall (Q : Prop), forall (mk_surj : forall (q : @RingKerQuot.{u,v} R S f), forall (h : @Eq.{succ v} S (@RingKerQuotToS.{u,v} R S f q) y), Q), Q), P) => mk (@ring_image_zero.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_image_one.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_image_add_closed.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_image_neg_closed.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_image_mul_closed.{succ u,succ v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_first_iso_phi_zero.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_first_iso_phi_one.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_first_iso_phi_add.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_first_iso_phi_mul.{u,v} R zeroR oneR addR negR subR mulR S zeroS oneS addS negS subS mulS f hom_args) (@ring_first_iso_phi_injective.{u,v} R S f) (@ring_first_iso_phi_hits_image.{u,v} R S f) (@ring_first_iso_phi_surj_image.{u,v} R S f)