Theorem: LO.FirstOrder.Arith.Model.Nuon.seriesSegmentDef_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 => SeriesSegment (v 0) (v 1) (v 2) (v 3) (v 4) (v 5)) seriesSegmentDef
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 6 → M
⊢ (fun v => SeriesSegment (v 0) (v 1) (v 2) (v 3) (v 4) (v 5)) v ↔
    (Semiformula.Evalbm M v) (HSemiformula.val seriesSegmentDef)

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 6 → M
⊢ (fun v => SeriesSegment (v 0) (v 1) (v 2) (v 3) (v 4) (v 5)) v ↔
    (Semiformula.Evalbm M v) (HSemiformula.val seriesSegmentDef)
Tactic:
simp [SeriesSegment, seriesSegmentDef,
length_defined.df.iff, div_defined.df.iff, rem_defined.df.iff, seriesDef_defined.df.iff, segmentDef_defined.df.iff, lt_succ_iff_le]
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 6 → M
⊢ (∃ nₖ ≤ v 5,
      Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)) ↔
    ∃ x ≤ v 5,
      ∃ x_1 ≤ v 1,
        x_1 = ‖v 1‖ ∧
          ∃ x_2 ≤ v 4,
            x_2 = v 4 / x_1 ∧
              ∃ x_3 ≤ v 4,
                x_3 = v 4 % x_1 ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_2 x ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x_1 * x_2) x_3 x (v 5)

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 6 → M
⊢ (∃ nₖ ≤ v 5,
      Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)) ↔
    ∃ x ≤ v 5,
      ∃ x_1 ≤ v 1,
        x_1 = ‖v 1‖ ∧
          ∃ x_2 ≤ v 4,
            x_2 = v 4 / x_1 ∧
              ∃ x_3 ≤ v 4,
                x_3 = v 4 % x_1 ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_2 x ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x_1 * x_2) x_3 x (v 5)
Tactic:
apply exists_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 6 → M
⊢ ∀ (a : M),
    a ≤ v 5 ∧
        Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) a ∧
          Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) a (v 5) ↔
      a ≤ v 5 ∧
        ∃ x ≤ v 1,
          x = ‖v 1‖ ∧
            ∃ x_1 ≤ v 4,
              x_1 = v 4 / x ∧
                ∃ x_2 ≤ v 4,
                  x_2 = v 4 % x ∧
                    Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 a ∧
                      Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 a (v 5)

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 6 → M
⊢ ∀ (a : M),
    a ≤ v 5 ∧
        Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) a ∧
          Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) a (v 5) ↔
      a ≤ v 5 ∧
        ∃ x ≤ v 1,
          x = ‖v 1‖ ∧
            ∃ x_1 ≤ v 4,
              x_1 = v 4 / x ∧
                ∃ x_2 ≤ v 4,
                  x_2 = v 4 % x ∧
                    Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 a ∧
                      Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 a (v 5)
Tactic:
intro nₖ
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 6 → M
nₖ : M
⊢ nₖ ≤ v 5 ∧
      Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    nₖ ≤ v 5 ∧
      ∃ x ≤ v 1,
        x = ‖v 1‖ ∧
          ∃ x_1 ≤ v 4,
            x_1 = v 4 / x ∧
              ∃ x_2 ≤ v 4,
                x_2 = v 4 % x ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5)

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 6 → M
nₖ : M
⊢ nₖ ≤ v 5 ∧
      Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    nₖ ≤ v 5 ∧
      ∃ x ≤ v 1,
        x = ‖v 1‖ ∧
          ∃ x_1 ≤ v 4,
            x_1 = v 4 / x ∧
              ∃ x_2 ≤ v 4,
                x_2 = v 4 % x ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5)
Tactic:
apply and_congr_right
State after:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
⊢ nₖ ≤ v 5 →
    (Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
      ∃ x ≤ v 1,
        x = ‖v 1‖ ∧
          ∃ x_1 ≤ v 4,
            x_1 = v 4 / x ∧
              ∃ x_2 ≤ v 4,
                x_2 = v 4 % x ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5))

State before:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
⊢ nₖ ≤ v 5 →
    (Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
        Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
      ∃ x ≤ v 1,
        x = ‖v 1‖ ∧
          ∃ x_1 ≤ v 4,
            x_1 = v 4 / x ∧
              ∃ x_2 ≤ v 4,
                x_2 = v 4 % x ∧
                  Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                    Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5))
Tactic:
intros
State after:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    ∃ x ≤ v 1,
      x = ‖v 1‖ ∧
        ∃ x_1 ≤ v 4,
          x_1 = v 4 / x ∧
            ∃ x_2 ≤ v 4,
              x_2 = v 4 % x ∧
                Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                  Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5)

State before:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    ∃ x ≤ v 1,
      x = ‖v 1‖ ∧
        ∃ x_1 ≤ v 4,
          x_1 = v 4 / x ∧
            ∃ x_2 ≤ v 4,
              x_2 = v 4 % x ∧
                Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) x_1 nₖ ∧
                  Segment (v 0) (v 2) (v (Fin.succ 2)) (x * x_1) x_2 nₖ (v 5)
Tactic:
rw [bex_eq_le_iff, bex_eq_le_iff, bex_eq_le_iff]
State after:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    ‖v 1‖ ≤ v 1 ∧
      v 4 / ‖v 1‖ ≤ v 4 ∧
        v 4 % ‖v 1‖ ≤ v 4 ∧
          Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) (v 4 / ‖v 1‖) nₖ ∧
            Segment (v 0) (v 2) (v (Fin.succ 2)) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)

State before:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    ‖v 1‖ ≤ v 1 ∧
      v 4 / ‖v 1‖ ≤ v 4 ∧
        v 4 % ‖v 1‖ ≤ v 4 ∧
          Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) (v 4 / ‖v 1‖) nₖ ∧
            Segment (v 0) (v 2) (v (Fin.succ 2)) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)
Tactic:
simp
State after:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v (Fin.succ 2)) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)

State before:
case h.h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
v : Fin 6 → M
nₖ : M
a✝ : nₖ ≤ v 5
⊢ Series (v 0) (v 1) (v 2) (v 3) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v 3) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5) ↔
    Series (v 0) (v 1) (v 2) (v (Fin.succ 2)) (v 4 / ‖v 1‖) nₖ ∧
      Segment (v 0) (v 2) (v (Fin.succ 2)) (‖v 1‖ * (v 4 / ‖v 1‖)) (v 4 % ‖v 1‖) nₖ (v 5)
Tactic:
rfl
State after:
no goals