Theorem: orthonormal_subtype_iff_ite
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [orthonormal_iff_ite]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ Orthonormal 𝕜 Subtype.val ↔ ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0) ↔ ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0

tactic: constructor
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0) ↔ ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0) → ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0

case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0) → ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0

tactic: intro h v hv w hw
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0) → ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ ⟪v, w⟫_𝕜 = if v = w then 1 else 0

tactic: convert h ⟨v, hv⟩ ⟨w, hw⟩ using 1
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ ⟪v, w⟫_𝕜 = if v = w then 1 else 0
state_after: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ (if v = w then 1 else 0) = if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0

tactic: simp
state_before: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ (if v = w then 1 else 0) = if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0
state_after: no goals

tactic: rintro h ⟨v, hv⟩ ⟨w, hw⟩
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
⊢ (∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0) → ∀ (i j : { x // x ∈ s }), ⟪↑i, ↑j⟫_𝕜 = if i = j then 1 else 0
state_after: case mpr.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ ⟪↑⟨v, hv⟩, ↑⟨w, hw⟩⟫_𝕜 = if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0

tactic: convert h v hv w hw using 1
state_before: case mpr.mk.mk
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ ⟪↑⟨v, hv⟩, ↑⟨w, hw⟩⟫_𝕜 = if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0
state_after: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ (if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0) = if v = w then 1 else 0

tactic: simp
state_before: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
ι : Type u_4
inst✝ : DecidableEq E
s : Set E
h : ∀ v ∈ s, ∀ w ∈ s, ⟪v, w⟫_𝕜 = if v = w then 1 else 0
v : E
hv : v ∈ s
w : E
hw : w ∈ s
⊢ (if ⟨v, hv⟩ = ⟨w, hw⟩ then 1 else 0) = if v = w then 1 else 0
state_after: no goals