Theorem: quotDecompose'_injective (DividedPowers/ForMathlib/GradedRingQuot.lean)

State before:
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
⊢ Injective ⇑(quotDecompose' R 𝒜 rel)
Tactic:
intro x y hxy
State after:
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
x y : ⨁ (i : ι), ↥(quotSubmodule R 𝒜 rel i)
hxy : (quotDecompose' R 𝒜 rel) x = (quotDecompose' R 𝒜 rel) y
⊢ x = y

State before:
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
x y : ⨁ (i : ι), ↥(quotSubmodule R 𝒜 rel i)
hxy : (quotDecompose' R 𝒜 rel) x = (quotDecompose' R 𝒜 rel) y
⊢ x = y
Tactic:
obtain ⟨a, ha, rfl⟩ := quotDecompose_surjective2 R 𝒜 rel x
State after:
case intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
y : ⨁ (i : ι), ↥(quotSubmodule R 𝒜 rel i)
a : ⨁ (i : ι), ↥(𝒜 i)
hxy : (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) a) = (quotDecompose' R 𝒜 rel) y
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = y

State before:
case intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
y : ⨁ (i : ι), ↥(quotSubmodule R 𝒜 rel i)
a : ⨁ (i : ι), ↥(𝒜 i)
hxy : (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) a) = (quotDecompose' R 𝒜 rel) y
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = y
Tactic:
obtain ⟨b, hb, rfl⟩ := quotDecompose_surjective2 R 𝒜 rel y
State after:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) b)
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b

State before:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (quotDecompose' R 𝒜 rel) ((lmap' (quotCompMap R 𝒜 rel)) b)
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b
Tactic:
simp only [quotDecompose'_apply] at hxy
State after:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b

State before:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b
Tactic:
let hxy' := quotDecompose_injective R 𝒜 rel hrel hxy
State after:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b

State before:
case intro.refl.intro.refl
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b
Tactic:
apply DFinsupp.ext
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
⊢ ∀ (i : ι), ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
⊢ ∀ (i : ι), ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
intro i
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
i : ι
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i) :=
  quotDecompose_injective R 𝒜 rel (fun {a b} => hrel) hxy
i : ι
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
specialize hxy' i
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap 𝒜) b)) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
simp only [Decomposition.decompose'_eq] at hxy'
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
suffices ∀ a, RingQuot.mkAlgHom R rel ↑(((decompose fun i => 𝒜 i)
    ((coeLinearMap fun i => 𝒜 i) a)) i) = ((lmap' (quotCompMap R 𝒜 rel)) a) i by
  simpa only [this, SetLike.coe_eq_coe] using hxy'
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
⊢ ∀ (a : ⨁ (i : ι), ↥(𝒜 i)),
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
      ↑(((lmap' (quotCompMap R 𝒜 rel)) a) i)

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
⊢ ∀ (a : ⨁ (i : ι), ↥(𝒜 i)),
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
      ↑(((lmap' (quotCompMap R 𝒜 rel)) a) i)
Tactic:
intro a
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    ↑(((lmap' (quotCompMap R 𝒜 rel)) a) i)

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    ↑(((lmap' (quotCompMap R 𝒜 rel)) a) i)
Tactic:
simp only [lmap'_apply]
State after:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    ↑((quotCompMap R 𝒜 rel i) (a i))

State before:
case intro.refl.intro.refl.h
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    ↑((quotCompMap R 𝒜 rel i) (a i))
Tactic:
congr
State after:
case intro.refl.intro.refl.h.h.e_6.h.e_self.e_a
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a) = a

State before:
case intro.refl.intro.refl.h.h.e_6.h.e_self.e_a
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a✝ b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a✝) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a✝)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
a : ⨁ (i : ι), ↥(𝒜 i)
⊢ (decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a) = a
Tactic:
exact h𝒜.right_inv a
State after:
no goals

State before:
R : Type u_1
inst✝⁵ : CommSemiring R
ι : Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid ι
A : Type u_3
inst✝² : CommSemiring A
inst✝¹ : DecidableEq A
inst✝ : Algebra R A
𝒜 : ι → Submodule R A
rel : A → A → Prop
h𝒜 : GradedAlgebra 𝒜
hrel : Rel.IsHomogeneous 𝒜 rel
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy : (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap 𝒜) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap 𝒜) b)) i)
this :
  ∀ (a : ⨁ (i : ι), ↥(𝒜 i)),
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
      ↑(((lmap' (quotCompMap R 𝒜 rel)) a) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
simpa only [this, SetLike.coe_eq_coe] using hxy'
State after:
no goals