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

tactic: refine'
  le_antisymm (sup_le (prod_mono le_sup_left le_sup_left) (prod_mono le_sup_right le_sup_right)) _
state_before: R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
⊢ prod p q₁ ⊔ prod p' q₁' = prod (p ⊔ p') (q₁ ⊔ q₁')

tactic: simp [SetLike.le_def]
state_before: R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
⊢ prod (p ⊔ p') (q₁ ⊔ q₁') ≤ prod p q₁ ⊔ prod p' q₁'

tactic: intro xx yy hxx hyy
state_before: R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
⊢ ∀ (a : M) (b : M'), a ∈ p ⊔ p' → b ∈ q₁ ⊔ q₁' → (a, b) ∈ prod p q₁ ⊔ prod p' q₁'

tactic: rcases mem_sup.1 hxx with ⟨x, hx, x', hx', rfl⟩
state_before: R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
xx : M
yy : M'
hxx : xx ∈ p ⊔ p'
hyy : yy ∈ q₁ ⊔ q₁'
⊢ (xx, yy) ∈ prod p q₁ ⊔ prod p' q₁'

tactic: rcases mem_sup.1 hyy with ⟨y, hy, y', hy', rfl⟩
state_before: case intro.intro.intro.intro
R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
yy : M'
hyy : yy ∈ q₁ ⊔ q₁'
x : M
hx : x ∈ p
x' : M
hx' : x' ∈ p'
hxx : x + x' ∈ p ⊔ p'
⊢ (x + x', yy) ∈ prod p q₁ ⊔ prod p' q₁'

tactic: refine' mem_sup.2 ⟨(x, y), ⟨hx, hy⟩, (x', y'), ⟨hx', hy'⟩, rfl⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_3
R₂ : Type ?u.256035
K : Type ?u.256038
M : Type u_1
M₂ : Type ?u.256044
V : Type ?u.256047
S : Type ?u.256050
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
s t : Set M
M' : Type u_2
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
q₁ q₁' : Submodule R M'
x : M
hx : x ∈ p
x' : M
hx' : x' ∈ p'
hxx : x + x' ∈ p ⊔ p'
y : M'
hy : y ∈ q₁
y' : M'
hy' : y' ∈ q₁'
hyy : y + y' ∈ q₁ ⊔ q₁'
⊢ (x + x', y + y') ∈ prod p q₁ ⊔ prod p' q₁'