Documentation

LeanPool.FormalizationOfBoundedArithmetic.IDelta0

LeanPool.FormalizationOfBoundedArithmetic.IDelta0 #

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

Models of open induction extended with induction for delta-zero formulas.

Instances
    theorem IDelta0Model.pred_exists {M : Type u_1} [idelta0 : IDelta0Model M] {x : M} :
    x ≠ 0 → ∃ y ≤ x, x = y + 1
    theorem IDelta0Model.ex_of_bdEx {a : Type u_2} [LE a] {t : a} {P : a → Prop} :
    (∃ x ≤ t, P x) → ∃ (x : a), P x
    theorem IDelta0Model.zero_add {M : Type u_1} [idelta0 : IDelta0Model M] (x : M) :
    0 + x = x
    @[instance_reducible]
    instance IDelta0Model.instAddZeroClass {M : Type u_1} [idelta0 : IDelta0Model M] :
    Equations
    theorem IDelta0Model.add_diff_exists {M : Type u_1} [idelta0 : IDelta0Model M] (x y : M) :
    ∃ (z : M), x + z = y ∨ y + z = x
    theorem IDelta0Model.le_iff_exists_add {M : Type u_1} [idelta0 : IDelta0Model M] (x y : M) :
    x ≤ y ↔ ∃ (z : M), x + z = y
    theorem IDelta0Model.le_trans {M : Type u_1} [idelta0 : IDelta0Model M] {x y z : M} :
    x ≤ y → y ≤ z → x ≤ z
    @[instance_reducible]
    instance IDelta0Model.instPreorder {M : Type u_1} [idelta0 : IDelta0Model M] :
    Equations
    theorem IDelta0Model.le_total {M : Type u_1} [idelta0 : IDelta0Model M] (x y : M) :
    x ≤ y ∨ y ≤ x
    theorem IDelta0Model.add_rotate {M : Type u_1} [idelta0 : IDelta0Model M] {a b c : M} :
    a + b + c = b + c + a
    theorem IDelta0Model.add_le_add_right {M : Type u_1} [idelta0 : IDelta0Model M] {x y z : M} :
    x ≤ y ↔ x + z ≤ y + z
    theorem IDelta0Model.le_cancel_left {M : Type u_1} [idelta0 : IDelta0Model M] {x y z : M} :
    x ≤ y → z + x ≤ z + y
    theorem IDelta0Model.le_mul_right {M : Type u_1} [idelta0 : IDelta0Model M] {x y z : M} :
    x ≤ y → x * z ≤ y * z
    theorem IDelta0Model.le_succ_iff {M : Type u_1} [idelta0 : IDelta0Model M] {x y : M} :
    x ≤ y + 1 ↔ x ≤ y ∨ x = y + 1
    @[instance_reducible]
    instance IDelta0Model.instPartialOrder {M : Type u_1} [idelta0 : IDelta0Model M] :
    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    noncomputable instance IDelta0Model.instLinearOrder {M : Type u_1} [idelta0 : IDelta0Model M] :
    Equations
    • One or more equations did not get rendered due to their size.
    theorem IDelta0Model.le_of_eq {M : Type u_1} [idelta0 : IDelta0Model M] {x y : M} :
    x = y → x ≤ y
    theorem IDelta0Model.zero_if_sum_zero {M : Type u_1} [idelta0 : IDelta0Model M] {x y : M} :
    x + y = 0 → x = 0 ∧ y = 0
    theorem IDelta0Model.lt_one_eq_zero {M : Type u_1} [idelta0 : IDelta0Model M] {x : M} :
    x < 1 → x = 0
    theorem IDelta0Model.lt_iff_succ_le {M : Type u_1} [idelta0 : IDelta0Model M] {x y : M} :
    x < y ↔ x + 1 ≤ y
    theorem IDelta0Model.mul_eq_zero_iff_left {M : Type u_1} [idelta0 : IDelta0Model M] {x y : M} :
    x ≠ 0 → (x * y = 0 ↔ y = 0)
    theorem IDelta0Model.mul_cancel_right {M : Type u_1} [idelta0 : IDelta0Model M] (x y z : M) :
    x * z = y * z ∧ z ≠ 0 → x = y