Theorem: LO.FirstOrder.Arith.Model.Nuon.IsSegment.le_add (Arithmetization/OmegaOne/Nuon.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ ∀ i ≤ intv, S{L}[i] ≤ S{L}[0] + i
Tactic:
intro i
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
⊢ i ≤ intv → S{L}[i] ≤ S{L}[0] + i

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
⊢ i ≤ intv → S{L}[i] ≤ S{L}[0] + i
Tactic:
induction i using induction_iSigmaZero
State after:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ 𝚺₀-Predicate fun i => i ≤ intv → S{L}[i] ≤ S{L}[0] + i

case zero
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ 0 ≤ intv → S{L}[0] ≤ S{L}[0] + 0

case succ
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
x✝ : M
a✝ : x✝ ≤ intv → S{L}[x✝] ≤ S{L}[0] + x✝
⊢ x✝ + 1 ≤ intv → S{L}[x✝ + 1] ≤ S{L}[0] + (x✝ + 1)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ 0 ≤ intv → S{L}[0] ≤ S{L}[0] + 0
Tactic:
case zero => simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
⊢ i + 1 ≤ intv → S{L}[i + 1] ≤ S{L}[0] + (i + 1)
Tactic:
case succ i IH =>
  intro h
  have IH : S{L}[i] ≤ S{L}[0] + i := IH (le_trans (by simp) h)
  calc
    S{L}[i + 1] = S{L}[i] + fbit A (start + i) := H i (succ_le_iff_lt.mp h)
    _           ≤ S{L}[i] + 1                  := by simp
    _           ≤ S{L}[0] + (i + 1)            := by simp [←add_assoc, IH]
State after:
no goals

State before:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ 𝚺₀-Predicate fun i => i ≤ intv → S{L}[i] ≤ S{L}[0] + i
Tactic:
definability
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
⊢ 0 ≤ intv → S{L}[0] ≤ S{L}[0] + 0
Tactic:
simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
⊢ i + 1 ≤ intv → S{L}[i + 1] ≤ S{L}[0] + (i + 1)
Tactic:
intro h
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
⊢ S{L}[i + 1] ≤ S{L}[0] + (i + 1)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
⊢ S{L}[i + 1] ≤ S{L}[0] + (i + 1)
Tactic:
have IH : S{L}[i] ≤ S{L}[0] + i := IH (le_trans (by simp) h)
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH✝ : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
IH : S{L}[i] ≤ S{L}[0] + i
⊢ S{L}[i + 1] ≤ S{L}[0] + (i + 1)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH✝ : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
IH : S{L}[i] ≤ S{L}[0] + i
⊢ S{L}[i + 1] ≤ S{L}[0] + (i + 1)
Tactic:
calc
  S{L}[i + 1] = S{L}[i] + fbit A (start + i) := H i (succ_le_iff_lt.mp h)
  _           ≤ S{L}[i] + 1                  := by simp
  _           ≤ S{L}[0] + (i + 1)            := by simp [←add_assoc, IH]
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
⊢ i ≤ i + 1
Tactic:
simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH✝ : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
IH : S{L}[i] ≤ S{L}[0] + i
⊢ S{L}[i] + fbit A (start + i) ≤ S{L}[i] + 1
Tactic:
simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
L✝ A✝ L A start intv S : M
H : IsSegment L A start intv S
i : M
IH✝ : i ≤ intv → S{L}[i] ≤ S{L}[0] + i
h : i + 1 ≤ intv
IH : S{L}[i] ≤ S{L}[0] + i
⊢ S{L}[i] + 1 ≤ S{L}[0] + (i + 1)
Tactic:
simp [←add_assoc, IH]
State after:
no goals