Theorem: Fin.coe_orderIso_apply
File: Mathlib/Order/Fin.lean

tactic: rcases i with ⟨i, hi⟩
state_before: m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : Fin n
⊢ ↑(e i) = ↑i
state_after: case mk
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = ↑⟨i, hi⟩

tactic: dsimp only
state_before: case mk
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = ↑⟨i, hi⟩
state_after: case mk
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = i

tactic: induction' i using Nat.strong_induction_on with i h
state_before: case mk
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = i
state_after: case mk.h
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = i

tactic: refine le_antisymm (forall_lt_iff_le.1 fun j hj => ?_) (forall_lt_iff_le.1 fun j hj => ?_)
state_before: case mk.h
m n : ℕ
p : Fin (n + 1)
i✝ j : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
⊢ ↑(e ⟨i, hi⟩) = i
state_after: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
⊢ j < i

case mk.h.refine_2
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < i
⊢ j < ↑(e ⟨i, hi⟩)

tactic: have := e.symm.lt_iff_lt.2 (mk_lt_of_lt_val hj)
state_before: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
⊢ j < i
state_after: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this : e.symm ⟨j, ⋯⟩ < e.symm (e ⟨i, hi⟩)
⊢ j < i

tactic: rw [e.symm_apply_apply] at this
state_before: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this : e.symm ⟨j, ⋯⟩ < e.symm (e ⟨i, hi⟩)
⊢ j < i
state_after: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
⊢ j < i

tactic: have : _ < i := this
state_before: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
⊢ j < i
state_after: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this✝ : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
this : ↑(e.symm ⟨j, ⋯⟩) < i
⊢ j < i

tactic: convert this
state_before: case mk.h.refine_1
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this✝ : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
this : ↑(e.symm ⟨j, ⋯⟩) < i
⊢ j < i
state_after: case h.e'_3
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this✝ : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
this : ↑(e.symm ⟨j, ⋯⟩) < i
⊢ j = ↑(e.symm ⟨j, ⋯⟩)

tactic: simpa using h _ this (e.symm _).is_lt
state_before: case h.e'_3
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < ↑(e ⟨i, hi⟩)
this✝ : e.symm ⟨j, ⋯⟩ < ⟨i, hi⟩
this : ↑(e.symm ⟨j, ⋯⟩) < i
⊢ j = ↑(e.symm ⟨j, ⋯⟩)
state_after: no goals

tactic: rwa [← h j hj (hj.trans hi), ← lt_iff_val_lt_val, e.lt_iff_lt]
state_before: case mk.h.refine_2
m n : ℕ
p : Fin (n + 1)
i✝ j✝ : Fin n
α : Type u_1
inst✝ : Preorder α
e : Fin n ≃o Fin m
i : ℕ
h : ∀ m_1 < i, ∀ (hi : m_1 < n), ↑(e ⟨m_1, hi⟩) = m_1
hi : i < n
j : ℕ
hj : j < i
⊢ j < ↑(e ⟨i, hi⟩)
state_after: no goals