Theorem: PiNat.res_eq_res
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: constructor <;> intro h <;> induction' n with n ih
state_before: E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n : ℕ
⊢ res x n = res y n ↔ ∀ ⦃m : ℕ⦄, m < n → x m = y m

tactic: simp only [res_succ, cons.injEq]
state_before: case mpr.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : ∀ ⦃m : ℕ⦄, m < n✝ → x m = y m
n : ℕ
ih : (∀ ⦃m : ℕ⦄, m < n → x m = y m) → res x n = res y n
h : ∀ ⦃m : ℕ⦄, m < Nat.succ n → x m = y m
⊢ res x (Nat.succ n) = res y (Nat.succ n)

tactic: refine' ⟨h (Nat.lt_succ_self _), ih fun m hm => _⟩
state_before: case mpr.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : ∀ ⦃m : ℕ⦄, m < n✝ → x m = y m
n : ℕ
ih : (∀ ⦃m : ℕ⦄, m < n → x m = y m) → res x n = res y n
h : ∀ ⦃m : ℕ⦄, m < Nat.succ n → x m = y m
⊢ x n = y n ∧ res x n = res y n

tactic: exact h (hm.trans (Nat.lt_succ_self _))
state_before: case mpr.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : ∀ ⦃m : ℕ⦄, m < n✝ → x m = y m
n : ℕ
ih : (∀ ⦃m : ℕ⦄, m < n → x m = y m) → res x n = res y n
h : ∀ ⦃m : ℕ⦄, m < Nat.succ n → x m = y m
m : ℕ
hm : m < n
⊢ x m = y m

tactic: simp
state_before: case mp.zero
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n : ℕ
h✝ : res x n = res y n
h : res x Nat.zero = res y Nat.zero
⊢ ∀ ⦃m : ℕ⦄, m < Nat.zero → x m = y m

tactic: intro m hm
state_before: case mp.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
h : res x (Nat.succ n) = res y (Nat.succ n)
⊢ ∀ ⦃m : ℕ⦄, m < Nat.succ n → x m = y m

tactic: rw [Nat.lt_succ_iff_lt_or_eq] at hm
state_before: case mp.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
h : res x (Nat.succ n) = res y (Nat.succ n)
m : ℕ
hm : m < Nat.succ n
⊢ x m = y m

tactic: simp only [res_succ, cons.injEq] at h
state_before: case mp.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
h : res x (Nat.succ n) = res y (Nat.succ n)
m : ℕ
hm : m < n ∨ m = n
⊢ x m = y m

tactic: cases' hm with hm hm
state_before: case mp.succ
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
m : ℕ
hm : m < n ∨ m = n
h : x n = y n ∧ res x n = res y n
⊢ x m = y m

tactic: rw [hm]
state_before: case mp.succ.inr
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
m : ℕ
h : x n = y n ∧ res x n = res y n
hm : m = n
⊢ x m = y m

tactic: exact h.1
state_before: case mp.succ.inr
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
m : ℕ
h : x n = y n ∧ res x n = res y n
hm : m = n
⊢ x n = y n

tactic: exact ih h.2 hm
state_before: case mp.succ.inl
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n✝ : ℕ
h✝ : res x n✝ = res y n✝
n : ℕ
ih : res x n = res y n → ∀ ⦃m : ℕ⦄, m < n → x m = y m
m : ℕ
h : x n = y n ∧ res x n = res y n
hm : m < n
⊢ x m = y m

tactic: simp
state_before: case mpr.zero
E : ℕ → Type ?u.20736
α : Type u_1
x y : ℕ → α
n : ℕ
h✝ : ∀ ⦃m : ℕ⦄, m < n → x m = y m
h : ∀ ⦃m : ℕ⦄, m < Nat.zero → x m = y m
⊢ res x Nat.zero = res y Nat.zero