Documentation

LeanPool.FormalizationOfBoundedArithmetic.IOPEN

LeanPool.FormalizationOfBoundedArithmetic.IOPEN #

class IOPENModel (num : Type u_1) extends BASICModel num :
Type (max u_1 u_2)

Models of BASIC arithmetic satisfying open induction.

Instances

    Reduce an open-induction hypothesis: clear its complexity side condition then unfold the induction sentence into base/step goals.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem IOPENModel.forall_swap_231 {α : Sort u_1} {β : Sort u_2} {γ : Sort u_3} {p : αβγProp} :
      (∀ (x : α) (y : β) (z : γ), p x y z) ∀ (z : γ) (x : α) (y : β), p x y z
      theorem IOPENModel.add_assoc {M : Type u} [iopen : IOPENModel M] (x y z : M) :
      x + y + z = x + (y + z)
      theorem IOPENModel.add_zero_comm {M : Type u} [iopen : IOPENModel M] (x : M) :
      x + 0 = 0 + x
      theorem IOPENModel.zero_add {M : Type u} [iopen : IOPENModel M] (x : M) :
      0 + x = x
      theorem IOPENModel.add_one_comm {M : Type u} [iopen : IOPENModel M] (x : M) :
      x + 1 = 1 + x
      theorem IOPENModel.add_comm {M : Type u} [iopen : IOPENModel M] (x y : M) :
      x + y = y + x
      theorem IOPENModel.mul_add {M : Type u} [iopen : IOPENModel M] (x y z : M) :
      x * (y + z) = x * y + x * z
      theorem IOPENModel.mul_one {M : Type u} [iopen : IOPENModel M] (x : M) :
      x * 1 = x
      theorem IOPENModel.mul_assoc {M : Type u} [iopen : IOPENModel M] (x y z : M) :
      x * y * z = x * (y * z)
      theorem IOPENModel.zero_mul {M : Type u} [iopen : IOPENModel M] (x : M) :
      0 * x = 0
      theorem IOPENModel.one_mul {M : Type u} [iopen : IOPENModel M] (x : M) :
      1 * x = x
      theorem IOPENModel.mul_add_1_left {M : Type u} [iopen : IOPENModel M] (x y : M) :
      (x + 1) * y = x * y + y
      theorem IOPENModel.mul_comm {M : Type u} [iopen : IOPENModel M] (x y : M) :
      x * y = y * x
      theorem IOPENModel.add_cancel_right.mp {M : Type u} [iopen : IOPENModel M] {x y z : M} :
      x + z = y + zx = y
      theorem IOPENModel.add_cancel_right {M : Type u} [iopen : IOPENModel M] {x y z : M} :
      x + z = y + z x = y
      theorem IOPENModel.add_cancel_left {M : Type u} [iopen : IOPENModel M] {x y z : M} :
      z + x = z + y x = y
      theorem IOPENModel.zero_le {M : Type u} [iopen : IOPENModel M] (x : M) :
      0 x
      theorem IOPENModel.le_zero_eq {M : Type u} [iopen : IOPENModel M] (x : M) :
      x 0x = 0
      theorem IOPENModel.ne_succ {M : Type u} [iopen : IOPENModel M] (x : M) :
      x x + 1
      theorem IOPENModel.add_mul {M : Type u} [iopen : IOPENModel M] (x y z : M) :
      (x + y) * z = x * z + y * z