Theorem: RingHom.StableUnderBaseChange.pushout_inl
File: Mathlib/RingTheory/RingHomProperties.lean

Proof steps:
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
⊢ P (pushout.inl f g)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this : Algebra ↑R ↑S := toAlgebra f
⊢ P (pushout.inl f g)
tactic: letI := f.toAlgebra
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this : Algebra ↑R ↑S := toAlgebra f
⊢ P (pushout.inl f g)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P (pushout.inl f g)
tactic: letI := g.toAlgebra
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P (pushout.inl f g)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P
    ({ cocone := CommRingCat.pushoutCocone ↑R ↑S ↑T,
              isColimit := CommRingCat.pushoutCoconeIsColimit ↑R ↑S ↑T }.cocone.ι.app
      WalkingSpan.left)
tactic: rw [← show _ = pushout.inl f g from
      colimit.isoColimitCocone_ι_inv ⟨_, CommRingCat.pushoutCoconeIsColimit R S T⟩ WalkingSpan.left,
    hP'.cancel_right_isIso]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P
    ({ cocone := CommRingCat.pushoutCocone ↑R ↑S ↑T,
              isColimit := CommRingCat.pushoutCoconeIsColimit ↑R ↑S ↑T }.cocone.ι.app
      WalkingSpan.left)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P Algebra.TensorProduct.includeLeftRingHom
tactic: dsimp only [CommRingCat.pushoutCocone_inl, PushoutCocone.ι_app_left]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P Algebra.TensorProduct.includeLeftRingHom
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P (algebraMap ↑R ↑T)
tactic: apply hP R T S (TensorProduct R S T)
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : StableUnderBaseChange P
hP' : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : R ⟶ T
H : P g
this✝ : Algebra ↑R ↑S := toAlgebra f
this : Algebra ↑R ↑T := toAlgebra g
⊢ P (algebraMap ↑R ↑T)
state_after: no goals
tactic: exact H