Theorem: AffineSubspace.inter_eq_singleton_of_nonempty_of_isCompl
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
⊢ ∃ p, ↑s1 ∩ ↑s2 = {p}
state_after: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
⊢ ∃ p, ↑s1 ∩ ↑s2 = {p}
tactic: cases' inter_nonempty_of_nonempty_of_sup_direction_eq_top h1 h2 hd.sup_eq_top with p hp
state_before: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
⊢ ∃ p, ↑s1 ∩ ↑s2 = {p}
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
⊢ ↑s1 ∩ ↑s2 = {p}
tactic: use p
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
⊢ ↑s1 ∩ ↑s2 = {p}
state_after: case h.h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q ∈ ↑s1 ∩ ↑s2 ↔ q ∈ {p}
tactic: ext q
state_before: case h.h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q ∈ ↑s1 ∩ ↑s2 ↔ q ∈ {p}
state_after: case h.h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q ∈ ↑s1 ∩ ↑s2 ↔ q = p
tactic: rw [Set.mem_singleton_iff]
state_before: case h.h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q ∈ ↑s1 ∩ ↑s2 ↔ q = p
state_after: case h.h.mp
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q ∈ ↑s1 ∩ ↑s2 → q = p

case h.h.mpr
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : IsCompl s1.direction s2.direction
p : P
hp : p ∈ ↑s1 ∩ ↑s2
q : P
⊢ q = p → q ∈ ↑s1 ∩ ↑s2
tactic: constructor