(motive : Lean.Omega.Constraint → Sort u_1) →
  (x : Lean.Omega.Constraint) →
    (Unit → motive { lowerBound := none, upperBound := none }) →
      ((y : ℤ) → motive { lowerBound := none, upperBound := some y }) →
        ((x : ℤ) → motive { lowerBound := some x, upperBound := none }) →
          ((x y : ℤ) → motive { lowerBound := some x, upperBound := some y }) → motive x