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

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
⊢ 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: apply eq_top_of_finrank_eq
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: 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 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: convert s.finrank_sup_add_finrank_inf_eq t
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: 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) + 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: rfl
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: rw [disjoint_iff_inf_le, le_bot_iff] at hdisjoint
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
⊢ finrank K ↥(s ⊓ t) = 0
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 : s ⊓ t = ⊥
⊢ finrank K ↥(s ⊓ t) = 0

tactic: 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 : s ⊓ t = ⊥
⊢ finrank K ↥(s ⊓ t) = 0
state_after: no goals