Theorem: CommRingCat.KaehlerDifferential.map_d
File: Mathlib/Algebra/Category/ModuleCat/Differentials/Basic.lean

Proof steps:
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this : Algebra ↑A ↑B := RingHom.toAlgebra f
⊢ (map fac) (d b) = d (g' b)
tactic: letI := f.toAlgebra
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this : Algebra ↑A ↑B := RingHom.toAlgebra f
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝ : Algebra ↑A ↑B := RingHom.toAlgebra f
this : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
⊢ (map fac) (d b) = d (g' b)
tactic: letI := f'.toAlgebra
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝ : Algebra ↑A ↑B := RingHom.toAlgebra f
this : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝¹ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this : Algebra ↑A ↑A' := RingHom.toAlgebra g
⊢ (map fac) (d b) = d (g' b)
tactic: letI := g.toAlgebra
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝¹ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this : Algebra ↑A ↑A' := RingHom.toAlgebra g
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝² : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝¹ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this : Algebra ↑B ↑B' := RingHom.toAlgebra g'
⊢ (map fac) (d b) = d (g' b)
tactic: letI := g'.toAlgebra
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝² : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝¹ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this : Algebra ↑B ↑B' := RingHom.toAlgebra g'
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝³ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝² : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝¹ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝ : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
⊢ (map fac) (d b) = d (g' b)
tactic: letI := (f'.comp g).toAlgebra
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝³ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝² : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝¹ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝ : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝⁴ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝³ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝² : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝¹ : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this✝ : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
this : IsScalarTower ↑A ↑A' ↑B'
⊢ (map fac) (d b) = d (g' b)
tactic: have : IsScalarTower A A' B' := IsScalarTower.of_algebraMap_eq' rfl
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝⁴ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝³ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝² : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝¹ : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this✝ : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
this : IsScalarTower ↑A ↑A' ↑B'
⊢ (map fac) (d b) = d (g' b)
state_after: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝⁵ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝⁴ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝³ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝² : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this✝¹ : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
this✝ : IsScalarTower ↑A ↑A' ↑B'
this : IsScalarTower ↑A ↑B ↑B'
⊢ (map fac) (d b) = d (g' b)
tactic: have := IsScalarTower.of_algebraMap_eq' fac
state_before: A B A' B' : CommRingCat
f : A ⟶ B
f' : A' ⟶ B'
g : A ⟶ A'
g' : B ⟶ B'
fac : g ≫ f' = f ≫ g'
b : ↑B
this✝⁵ : Algebra ↑A ↑B := RingHom.toAlgebra f
this✝⁴ : Algebra ↑A' ↑B' := RingHom.toAlgebra f'
this✝³ : Algebra ↑A ↑A' := RingHom.toAlgebra g
this✝² : Algebra ↑B ↑B' := RingHom.toAlgebra g'
this✝¹ : Algebra ↑A ↑B' := (RingHom.comp f' g).toAlgebra
this✝ : IsScalarTower ↑A ↑A' ↑B'
this : IsScalarTower ↑A ↑B ↑B'
⊢ (map fac) (d b) = d (g' b)
state_after: no goals
tactic: exact _root_.KaehlerDifferential.map_D A A' B B' b