Theorem: Lean4Axiomatic.Natural.le_inject_step (Lean4Axiomatic/Natural/Order.lean)

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
⊢ step n₁ ≤ step n₂ → n₁ ≤ n₂
Tactic:
intro (_ : step n₁ ≤ step n₂)
State after:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
⊢ n₁ ≤ n₂

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
⊢ n₁ ≤ n₂
Tactic:
have ⟨d, (_ : step n₁ + d ≃ step n₂)⟩ := le_defn.mp ‹step n₁ ≤ step n₂›
State after:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ n₁ ≤ n₂

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ n₁ ≤ n₂
Tactic:
apply le_defn.mpr
State after:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ ∃ k, n₁ + k ≃ n₂

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ ∃ k, n₁ + k ≃ n₂
Tactic:
exists d
State after:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ n₁ + d ≃ n₂

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
⊢ n₁ + d ≃ n₂
Tactic:
have : step (n₁ + d) ≃ step n₂ := calc
  step (n₁ + d) ≃ _ := Rel.symm step_add
  step n₁ + d   ≃ _ := ‹step n₁ + d ≃ step n₂›
  step n₂       ≃ _ := Rel.refl
State after:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
this : step (n₁ + d) ≃ step n₂
⊢ n₁ + d ≃ n₂

State before:
ℕ : Type
inst✝³ : Core ℕ
inst✝² : Induction ℕ
inst✝¹ : Addition ℕ
inst✝ : Sign ℕ
order_inst : Order ℕ
n₁ n₂ : ℕ
x✝ : step n₁ ≤ step n₂
d : ℕ
h✝ : step n₁ + d ≃ step n₂
this : step (n₁ + d) ≃ step n₂
⊢ n₁ + d ≃ n₂
Tactic:
exact AA.inject ‹step (n₁ + d) ≃ step n₂›
State after:
no goals