Theorem: InnerProductSpaceable.int_prop
File: Mathlib/Analysis/InnerProductSpace/OfNorm.lean

tactic: intro x y
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
⊢ InnerProductSpaceable.innerProp' E ↑n
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑n • x) y = (starRingEnd 𝕜) ↑n * inner_ 𝕜 x y

tactic: rw [← n.sign_mul_natAbs]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑n • x) y = (starRingEnd 𝕜) ↑n * inner_ 𝕜 x y
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑(n.sign * ↑n.natAbs) • x) y = (starRingEnd 𝕜) ↑(n.sign * ↑n.natAbs) * inner_ 𝕜 x y

tactic: simp only [Int.cast_natCast, map_natCast, map_intCast, Int.cast_mul, map_mul, mul_smul]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑(n.sign * ↑n.natAbs) • x) y = (starRingEnd 𝕜) ↑(n.sign * ↑n.natAbs) * inner_ 𝕜 x y
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y

tactic: obtain hn | rfl | hn := lt_trichotomy n 0
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y
state_after: case inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : n < 0
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y

case inr.inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
x y : E
⊢ inner_ 𝕜 (↑(Int.sign 0) • ↑(Int.natAbs 0) • x) y = ↑(Int.sign 0) * ↑(Int.natAbs 0) * inner_ 𝕜 x y

case inr.inr
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : 0 < n
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y

tactic: rw [Int.sign_eq_neg_one_of_neg hn, innerProp_neg_one ((n.natAbs : 𝕜) • x), nat]
state_before: case inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : n < 0
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y
state_after: case inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : n < 0
⊢ (starRingEnd 𝕜) ↑(-1) * (↑n.natAbs * inner_ 𝕜 x y) = ↑(-1) * ↑n.natAbs * inner_ 𝕜 x y

tactic: simp only [map_neg, neg_mul, one_mul, mul_eq_mul_left_iff, true_or_iff, Int.natAbs_eq_zero,
  eq_self_iff_true, Int.cast_one, map_one, neg_inj, Nat.cast_eq_zero, Int.cast_neg]
state_before: case inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : n < 0
⊢ (starRingEnd 𝕜) ↑(-1) * (↑n.natAbs * inner_ 𝕜 x y) = ↑(-1) * ↑n.natAbs * inner_ 𝕜 x y
state_after: no goals

tactic: simp only [inner_, Int.cast_zero, zero_sub, Nat.cast_zero, zero_mul,
  eq_self_iff_true, Int.sign_zero, zero_smul, zero_add, mul_zero, smul_zero,
  sub_self, norm_neg, Int.natAbs_zero]
state_before: case inr.inl
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
x y : E
⊢ inner_ 𝕜 (↑(Int.sign 0) • ↑(Int.natAbs 0) • x) y = ↑(Int.sign 0) * ↑(Int.natAbs 0) * inner_ 𝕜 x y
state_after: no goals

tactic: rw [Int.sign_eq_one_of_pos hn]
state_before: case inr.inr
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : 0 < n
⊢ inner_ 𝕜 (↑n.sign • ↑n.natAbs • x) y = ↑n.sign * ↑n.natAbs * inner_ 𝕜 x y
state_after: case inr.inr
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : 0 < n
⊢ inner_ 𝕜 (↑1 • ↑n.natAbs • x) y = ↑1 * ↑n.natAbs * inner_ 𝕜 x y

tactic: simp only [one_mul, mul_eq_mul_left_iff, true_or_iff, Int.natAbs_eq_zero, eq_self_iff_true,
  Int.cast_one, one_smul, Nat.cast_eq_zero, nat]
state_before: case inr.inr
𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
n : ℤ
x y : E
hn : 0 < n
⊢ inner_ 𝕜 (↑1 • ↑n.natAbs • x) y = ↑1 * ↑n.natAbs * inner_ 𝕜 x y
state_after: no goals