constructor
n : ℕ
i j : Fin n
F : Vector ℕ (n + 1) → ℕ :=
  fun v =>
    ((v.head + v.get j.succ).isEqNat (v.get i.succ)).or (((v.get i.succ).isLtNat (v.get j.succ)).and (v.head.isEqNat 0))
this : Arith₁ F
v : Vector ℕ n
⊢ true =
      (decide (v.get i - v.get j + v.get j = v.get i) || decide (v.get i < v.get j) && decide (v.get i - v.get j = 0)) ∧
    ∀ {m : ℕ},
      m < v.get i - v.get j → false = (decide (m + v.get j = v.get i) || decide (v.get i < v.get j) && decide (m = 0))
case left
n : ℕ
i j : Fin n
F : Vector ℕ (n + 1) → ℕ :=
  fun v =>
    ((v.head + v.get j.succ).isEqNat (v.get i.succ)).or (((v.get i.succ).isLtNat (v.get j.succ)).and (v.head.isEqNat 0))
this : Arith₁ F
v : Vector ℕ n
⊢ true =
    (decide (v.get i - v.get j + v.get j = v.get i) || decide (v.get i < v.get j) && decide (v.get i - v.get j = 0))

case right
n : ℕ
i j : Fin n
F : Vector ℕ (n + 1) → ℕ :=
  fun v =>
    ((v.head + v.get j.succ).isEqNat (v.get i.succ)).or (((v.get i.succ).isLtNat (v.get j.succ)).and (v.head.isEqNat 0))
this : Arith₁ F
v : Vector ℕ n
⊢ ∀ {m : ℕ},
    m < v.get i - v.get j → false = (decide (m + v.get j = v.get i) || decide (v.get i < v.get j) && decide (m = 0))