Theorem: Submodule.biSup_comap_eq_top_of_range_eq_biSup
File: Mathlib/LinearAlgebra/Span.lean

tactic: suffices ⨆ i ∈ s, (p i).comap (LinearMap.range f).subtype = ⊤ by
  rw [← biSup_comap_eq_top_of_surjective s hs _ this _ f.surjective_rangeRestrict]; rfl
state_before: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
⊢ ⨆ i ∈ s, comap f (p i) = ⊤
state_after: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
⊢ ⨆ i ∈ s, comap (LinearMap.range f).subtype (p i) = ⊤

tactic: exact hf ▸ biSup_comap_subtype_eq_top s p
state_before: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
⊢ ⨆ i ∈ s, comap (LinearMap.range f).subtype (p i) = ⊤
state_after: no goals

tactic: rw [← biSup_comap_eq_top_of_surjective s hs _ this _ f.surjective_rangeRestrict]
state_before: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
this : ⨆ i ∈ s, comap (LinearMap.range f).subtype (p i) = ⊤
⊢ ⨆ i ∈ s, comap f (p i) = ⊤
state_after: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
this : ⨆ i ∈ s, comap (LinearMap.range f).subtype (p i) = ⊤
⊢ ⨆ i ∈ s, comap f (p i) = ⨆ i ∈ s, comap f.rangeRestrict (comap (LinearMap.range f).subtype (p i))

tactic: rfl
state_before: R✝ : Type u_1
R₂✝ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝¹³ : Semiring R✝
inst✝¹² : Semiring R₂✝
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R✝ M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂✝ M₂
τ₁₂✝ : R✝ →+* R₂✝
inst✝⁷ : RingHomSurjective τ₁₂✝
F : Type u_8
inst✝⁶ : FunLike F M M₂
inst✝⁵ : SemilinearMapClass F τ₁₂✝ M M₂
R : Type u_9
R₂ : Type u_10
inst✝⁴ : Ring R
inst✝³ : Ring R₂
τ₁₂ : R →+* R₂
inst✝² : RingHomSurjective τ₁₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
ι : Type u_11
s : Set ι
hs : s.Nonempty
p : ι → Submodule R₂ M₂
f : M →ₛₗ[τ₁₂] M₂
hf : LinearMap.range f = ⨆ i ∈ s, p i
this : ⨆ i ∈ s, comap (LinearMap.range f).subtype (p i) = ⊤
⊢ ⨆ i ∈ s, comap f (p i) = ⨆ i ∈ s, comap f.rangeRestrict (comap (LinearMap.range f).subtype (p i))
state_after: no goals