Theorem: LO.FirstOrder.Arith.Model.Nuon.isSegmentDef_defined (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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
⊢ Defined (fun v => IsSegment (v 0) (v 1) (v 2) (v 3) (v 4)) isSegmentDef
Tactic:
intro v
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ (fun v => IsSegment (v 0) (v 1) (v 2) (v 3) (v 4)) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val isSegmentDef)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ (fun v => IsSegment (v 0) (v 1) (v 2) (v 3) (v 4)) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val isSegmentDef)
Tactic:
simp [IsSegment, isSegmentDef, ext_defined.df.iff, fbit_defined.df.iff, lt_succ_iff_le, numeral_eq_natCast]
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ (∀ i < v 3, v 4{v 0}[i + 1] = v 4{v 0}[i] + fbit (v 1) (v 2 + i)) ↔
    ∀ x < v 3,
      ∃ x_1 ≤ v 4,
        x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ (∀ i < v 3, v 4{v 0}[i + 1] = v 4{v 0}[i] + fbit (v 1) (v 2 + i)) ↔
    ∀ x < v 3,
      ∃ x_1 ≤ v 4,
        x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3
Tactic:
apply forall₂_congr
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ ∀ a < v 3,
    v 4{v 0}[a + 1] = v 4{v 0}[a] + fbit (v 1) (v 2 + a) ↔
      ∃ x ≤ v 4,
        x = v 4{v 0}[a + 1] ∧ ∃ x_1 ≤ v 4, x_1 = v 4{v 0}[a] ∧ ∃ x_2 < 2, x_2 = fbit (v 1) (v 2 + a) ∧ x = x_1 + x_2

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
⊢ ∀ a < v 3,
    v 4{v 0}[a + 1] = v 4{v 0}[a] + fbit (v 1) (v 2 + a) ↔
      ∃ x ≤ v 4,
        x = v 4{v 0}[a + 1] ∧ ∃ x_1 ≤ v 4, x_1 = v 4{v 0}[a] ∧ ∃ x_2 < 2, x_2 = fbit (v 1) (v 2 + a) ∧ x = x_1 + x_2
Tactic:
intro x _
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x) ↔
    ∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x) ↔
    ∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3
Tactic:
constructor
State after:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x) →
    ∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3

case h.mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ (∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧
        ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3) →
    v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)

State before:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x) →
    ∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3
Tactic:
intro h
State after:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ ∃ x_1 ≤ v 4,
    x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3

State before:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ ∃ x_1 ≤ v 4,
    x_1 = v 4{v 0}[x + 1] ∧ ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3
Tactic:
exact ⟨_, by simp, rfl, _, by simp, rfl, _, by simp, rfl, h⟩
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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ v 4{v 0}[x + 1] ≤ v 4
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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ v 4{v 0}[x] ≤ v 4
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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ fbit (v 1) (v 2 + x) < 2
Tactic:
simp
State after:
no goals

State before:
case h.mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
⊢ (∃ x_1 ≤ v 4,
      x_1 = v 4{v 0}[x + 1] ∧
        ∃ x_2 ≤ v 4, x_2 = v 4{v 0}[x] ∧ ∃ x_3 < 2, x_3 = fbit (v 1) (v 2 + x) ∧ x_1 = x_2 + x_3) →
    v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
Tactic:
rintro ⟨_, _, rfl, _, _, rfl, _, _, rfl, h⟩
State after:
case h.mpr.intro.intro.intro.intro.intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
left✝² : v 4{v 0}[x + 1] ≤ v 4
left✝¹ : v 4{v 0}[x] ≤ v 4
left✝ : fbit (v 1) (v 2 + x) < 2
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)

State before:
case h.mpr.intro.intro.intro.intro.intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 5 → M
x : M
b✝ : x < v 3
left✝² : v 4{v 0}[x + 1] ≤ v 4
left✝¹ : v 4{v 0}[x] ≤ v 4
left✝ : fbit (v 1) (v 2 + x) < 2
h : v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
⊢ v 4{v 0}[x + 1] = v 4{v 0}[x] + fbit (v 1) (v 2 + x)
Tactic:
exact h
State after:
no goals