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 ⇑(coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
Tactic:
have hφ : ∀ i, Surjective (quotCompMap R 𝒜 rel i) := by
  rintro i ⟨x, ⟨a, ha, rfl⟩ ⟩
  exact ⟨⟨a, ha⟩, rfl⟩
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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
⊢ Injective ⇑(coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))

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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
⊢ Injective ⇑(coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
x y : ⨁ (i : ι), ↥(Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) x =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
x y : ⨁ (i : ι), ↥(Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) x =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) y
⊢ x = y
Tactic:
obtain ⟨a, ha, rfl⟩ := lmap'_surjective (quotCompMap R 𝒜 rel) hφ 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
y : ⨁ (i : ι), ↥(Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
a : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
y : ⨁ (i : ι), ↥(Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i))
a : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) y
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = y
Tactic:
obtain ⟨b, hb, rfl⟩ := lmap'_surjective (quotCompMap R 𝒜 rel) hφ 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((lmap' (quotCompMap R 𝒜 rel)) a) =
    (coeLinearMap fun i => Submodule.map (RingQuot.mkAlgHom R rel) (𝒜 i)) ((lmap' (quotCompMap R 𝒜 rel)) b)
⊢ (lmap' (quotCompMap R 𝒜 rel)) a = (lmap' (quotCompMap R 𝒜 rel)) b
Tactic:
simp only [quotDecompose_left_inv'_aux_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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
hxy' : ∀ (i : ι),
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑((Decomposition.decompose' ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) 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
hφ : ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
a b : ⨁ (i : ι), ↥(𝒜 i)
hxy :
  (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) a) = (RingQuot.mkAlgHom R rel) ((coeLinearMap fun i => 𝒜 i) b)
i : ι
hxy' :
  (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) a)) i) =
    (RingQuot.mkAlgHom R rel) ↑(((decompose fun i => 𝒜 i) ((coeLinearMap fun i => 𝒜 i) b)) i)
⊢ ((lmap' (quotCompMap R 𝒜 rel)) a) i = ((lmap' (quotCompMap R 𝒜 rel)) b) i
Tactic:
simpa only [lmap'_quotCompMap_apply, SetLike.coe_eq_coe] using hxy'
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
⊢ ∀ (i : ι), Surjective ⇑(quotCompMap R 𝒜 rel i)
Tactic:
rintro i ⟨x, ⟨a, ha, rfl⟩ ⟩
State after:
case mk.intro.intro
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
i : ι
a : A
ha : a ∈ ↑(𝒜 i)
⊢ ∃ a_1, (quotCompMap R 𝒜 rel i) a_1 = ⟨(RingQuot.mkAlgHom R rel) a, ⋯⟩

State before:
case mk.intro.intro
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
i : ι
a : A
ha : a ∈ ↑(𝒜 i)
⊢ ∃ a_1, (quotCompMap R 𝒜 rel i) a_1 = ⟨(RingQuot.mkAlgHom R rel) a, ⋯⟩
Tactic:
exact ⟨⟨a, ha⟩, rfl⟩
State after:
no goals