Theorem: Submodule.eq_top_of_disjoint
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

Proof steps:
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
⊢ s ⊔ t = ⊤
state_after: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ s ⊔ t = ⊤
tactic: have h_finrank_inf : finrank K ↑(s ⊓ t) = 0 := by
    rw [disjoint_iff_inf_le, le_bot_iff] at hdisjoint
    rw [hdisjoint, finrank_bot]
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ s ⊔ t = ⊤
state_after: case h
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K V
tactic: apply eq_top_of_finrank_eq
state_before: case h
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K V
state_after: case h
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥s + finrank K ↥t
tactic: rw [← hdim]
state_before: case h
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥s + finrank K ↥t
state_after: case h.e'_2
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥(s ⊔ t) + finrank K ↥(s ⊓ t)
tactic: convert s.finrank_sup_add_finrank_inf_eq t
state_before: case h.e'_2
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥(s ⊔ t) + finrank K ↥(s ⊓ t)
state_after: case h.e'_2
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥(s ⊔ t) + 0
tactic: rw [h_finrank_inf]
state_before: case h.e'_2
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdim : finrank K ↥s + finrank K ↥t = finrank K V
hdisjoint : Disjoint s t
h_finrank_inf : finrank K ↥(s ⊓ t) = 0
⊢ finrank K ↥(s ⊔ t) = finrank K ↥(s ⊔ t) + 0
state_after: no goals
tactic: rfl