Theory integer

Parents

Contents

Type operators

Constants

Definitions

EDIV_DEFEMOD_DEFINT_ABSINT_DIVIDESINT_MAXINT_MINLEAST_INT_DEFNumint_0int_1int_ABS_defint_REP_defint_TY_DEFint_addint_bijectionsint_divint_expint_geint_gtint_leint_ltint_modint_mulint_negint_of_numint_quotint_remint_subtint_0tint_1tint_addtint_eqtint_lttint_multint_negtint_of_num

Theorems

EQ_ADDLEQ_LADDFORALL_INT_CASESINFINITE_INT_UNIVINTINT_0INT_1INT_10INT_ABS_0LTINT_ABS_ABSINT_ABS_EQINT_ABS_EQ0INT_ABS_EQ_ABSINT_ABS_EQ_IDINT_ABS_LEINT_ABS_LE0INT_ABS_LTINT_ABS_LT0INT_ABS_MULINT_ABS_NEGINT_ABS_NUMINT_ABS_POSINT_ABS_QUOTINT_ABS_SUBINT_ABS_TRIANGLEINT_ADDINT_ADD2_SUB2INT_ADD_ASSOCINT_ADD_CALCULATEINT_ADD_COMMINT_ADD_DIVINT_ADD_LIDINT_ADD_LID_UNIQINT_ADD_LINVINT_ADD_REDUCEINT_ADD_RIDINT_ADD_RID_UNIQINT_ADD_RINVINT_ADD_SUBINT_ADD_SUB2INT_ADD_SYMINT_DIFFSQINT_DISCRETEINT_DIVINT_DIVIDES_0INT_DIVIDES_1INT_DIVIDES_LADDINT_DIVIDES_LMULINT_DIVIDES_LSUBINT_DIVIDES_MOD0INT_DIVIDES_MULINT_DIVIDES_MUL_BOTHINT_DIVIDES_NEGINT_DIVIDES_RADDINT_DIVIDES_REDUCEINT_DIVIDES_REFLINT_DIVIDES_RMULINT_DIVIDES_RSUBINT_DIVIDES_TRANSINT_DIVISIONINT_DIV_0INT_DIV_1INT_DIV_CALCULATEINT_DIV_EDIVINT_DIV_FORALL_PINT_DIV_IDINT_DIV_LMULINT_DIV_MUL_IDINT_DIV_NEGINT_DIV_PINT_DIV_REDUCEINT_DIV_RMULINT_DIV_UNIQUEINT_DOUBLEINT_ENTIREINT_EQ_CALCULATEINT_EQ_IMP_LEINT_EQ_LADDINT_EQ_LMULINT_EQ_LMUL2INT_EQ_LMUL_IMPINT_EQ_NEGINT_EQ_RADDINT_EQ_REDUCEINT_EQ_RMULINT_EQ_RMUL_IMPINT_EQ_SUB_LADDINT_EQ_SUB_RADDINT_EXPINT_EXP_ADD_EXPONENTSINT_EXP_CALCULATEINT_EXP_EQ0INT_EXP_MODINT_EXP_MULTIPLY_EXPONENTSINT_EXP_NEGINT_EXP_REDUCEINT_EXP_SUBTRACT_EXPONENTSINT_GEINT_GE_CALCULATEINT_GE_REDUCEINT_GTINT_GT_CALCULATEINT_GT_REDUCEINT_INJINT_INTEGRALINT_LDISTRIBINT_LEINT_LESS_MODINT_LET_ADDINT_LET_ADD2INT_LET_ANTISYMINT_LET_TOTALINT_LET_TRANSINT_LE_01INT_LE_ADDINT_LE_ADD2INT_LE_ADDLINT_LE_ADDRINT_LE_ANTISYMINT_LE_CALCULATEINT_LE_DOUBLEINT_LE_LADDINT_LE_LNEGINT_LE_LTINT_LE_LT1INT_LE_MONOINT_LE_MULINT_LE_NEGINT_LE_NEGLINT_LE_NEGRINT_LE_NEGTOTALINT_LE_RADDINT_LE_REDUCEINT_LE_REFLINT_LE_RNEGINT_LE_SQUAREINT_LE_SUB_LADDINT_LE_SUB_RADDINT_LE_TOTALINT_LE_TRANSINT_LNEG_UNIQINT_LTINT_LT2INT_LTE_ADDINT_LTE_ADD2INT_LTE_ANTSYMINT_LTE_TOTALINT_LTE_TRANSINT_LT_01INT_LT_ADDINT_LT_ADD1INT_LT_ADD2INT_LT_ADDLINT_LT_ADDNEGINT_LT_ADDNEG2INT_LT_ADDRINT_LT_ADD_SUBINT_LT_ANTISYMINT_LT_CALCULATEINT_LT_DISCRETEINT_LT_GTINT_LT_IMP_LEINT_LT_IMP_NEINT_LT_LADDINT_LT_LADD_IMPINT_LT_LEINT_LT_LE1INT_LT_MONOINT_LT_MULINT_LT_MUL2INT_LT_NEGINT_LT_NEGTOTALINT_LT_NZINT_LT_RADDINT_LT_REDUCEINT_LT_REFLINT_LT_SUB_LADDINT_LT_SUB_RADDINT_LT_TOTALINT_LT_TRANSINT_MAX_LTINT_MAX_NUMINT_MIN_LTINT_MIN_NUMINT_MODINT_MOD0INT_MOD_1INT_MOD_ADD_MULTIPLESINT_MOD_BOUNDSINT_MOD_CALCULATEINT_MOD_COMMON_FACTORINT_MOD_EMODINT_MOD_EQ0INT_MOD_FORALL_PINT_MOD_IDINT_MOD_MINUS1INT_MOD_MODINT_MOD_NEGINT_MOD_NEG_NUMERATORINT_MOD_PINT_MOD_PLUSINT_MOD_REDUCEINT_MOD_SUBINT_MOD_UNIQUEINT_MULINT_MUL_ASSOCINT_MUL_CALCULATEINT_MUL_COMMINT_MUL_DIVINT_MUL_EQ_1INT_MUL_LIDINT_MUL_LNEGINT_MUL_LZEROINT_MUL_QUOTINT_MUL_REDUCEINT_MUL_RIDINT_MUL_RNEGINT_MUL_RZEROINT_MUL_SIGN_CASESINT_MUL_SYMINT_NEGNEGINT_NEG_0INT_NEG_ADDINT_NEG_EQINT_NEG_EQ0INT_NEG_GE0INT_NEG_GT0INT_NEG_LE0INT_NEG_LMULINT_NEG_LT0INT_NEG_MINUS1INT_NEG_MUL2INT_NEG_NEGINT_NEG_RMULINT_NEG_SAME_EQINT_NEG_SUBINT_NOT_EQINT_NOT_LEINT_NOT_LTINT_NUM_CASESINT_NZ_IMP_LTINT_OF_NUMINT_OF_NUM_ADDINT_OF_NUM_EQINT_OF_NUM_LEINT_OF_NUM_LTINT_OF_NUM_MULINT_OF_NUM_POWINT_POLY_CONV_rthINT_POLY_CONV_sthINT_POSINT_POSSQINT_POS_NZINT_POWINT_POW_NEGINT_QUOTINT_QUOT_0INT_QUOT_1INT_QUOT_CALCULATEINT_QUOT_EDIVINT_QUOT_IDINT_QUOT_NEGINT_QUOT_REDUCEINT_QUOT_UNIQUEINT_RDISTRIBINT_REMINT_REM0INT_REMQUOTINT_REM_CALCULATEINT_REM_COMMON_FACTORINT_REM_EMODINT_REM_EQ0INT_REM_EQ_MODINT_REM_IDINT_REM_NEGINT_REM_REDUCEINT_REM_UNIQUEINT_RNEG_UNIQINT_SUBINT_SUB_0INT_SUB_ABS_TRIANGLEINT_SUB_ADDINT_SUB_ADD2INT_SUB_CALCULATEINT_SUB_LDISTRIBINT_SUB_LEINT_SUB_LNEGINT_SUB_LTINT_SUB_LZEROINT_SUB_NEG2INT_SUB_RDISTRIBINT_SUB_REDUCEINT_SUB_REFLINT_SUB_RNEGINT_SUB_RZEROINT_SUB_SUBINT_SUB_SUB2INT_SUB_TRIANGLEINT_SUMSQLE_NUM_OF_INTLT_ADD2LT_ADDLLT_ADDRLT_LADDNUM_EQ0NUM_INT_ADDNUM_INT_EDIVNUM_INT_EMODNUM_INT_MULNUM_INT_SUBNUM_LTNUM_NEGINT_EXISTSNUM_OF_INTNUM_OF_NEG_INTNUM_POSINTNUM_POSINT_EXNUM_POSINT_EXISTSNUM_POSTINT_EXNum_EQNum_EQ_ABSNum_negTINT_10TINT_ADD_ASSOCTINT_ADD_LIDTINT_ADD_LINVTINT_ADD_SYMTINT_ADD_WELLDEFTINT_ADD_WELLDEFRTINT_EQ_APTINT_EQ_EQUIVTINT_EQ_REFLTINT_EQ_SYMTINT_EQ_TRANSTINT_INJTINT_LDISTRIBTINT_LT_ADDTINT_LT_MULTINT_LT_REFLTINT_LT_TOTALTINT_LT_TRANSTINT_LT_WELLDEFTINT_LT_WELLDEFLTINT_LT_WELLDEFRTINT_MUL_ASSOCTINT_MUL_LIDTINT_MUL_SYMTINT_MUL_WELLDEFTINT_MUL_WELLDEFRTINT_NEG_WELLDEFint_ABS_REP_CLASSint_QUOTIENTint_calculateint_casesint_dividesint_eq_calculatenum_dividesnum_of_inttint_of_num_eq

Definitions

⊢ ∀i j. ediv i j = if 0 < j then i / j else -(i / -j)
⊢ ∀i j. emod i j = i % ABS j
⊢ ∀n. ABS n = if n < 0 then -n else n
⊢ ∀p q. p int_divides q ⇔ ∃m. m * p = q
⊢ ∀x y. int_max x y = if x < y then y else x
⊢ ∀x y. int_min x y = if x < y then x else y
⊢ ∀P. $LEAST_INT P = @i. P i ∧ ∀j. j < i ⇒ ¬P j
⊢ ∀i. Num i = @n. if 0 ≤ i then i = &n else i = -&n
int_0
⊢ int_0 = int_ABS tint_0
int_1
⊢ int_1 = int_ABS tint_1
int_ABS_def
⊢ ∀r. int_ABS r = int_ABS_CLASS ($tint_eq r)
int_REP_def
⊢ ∀a. int_REP a = $@ (int_REP_CLASS a)
int_TY_DEF
⊢ ∃rep. TYPE_DEFINITION (λc. ∃r. r tint_eq r ∧ c = $tint_eq r) rep
int_add
⊢ ∀T1 T2. T1 + T2 = int_ABS (int_REP T1 tint_add int_REP T2)
int_bijections
⊢ (∀a. int_ABS_CLASS (int_REP_CLASS a) = a) ∧
  ∀r. (λc. ∃r. r tint_eq r ∧ c = $tint_eq r) r ⇔
      int_REP_CLASS (int_ABS_CLASS r) = r
int_div
⊢ ∀i j.
    j ≠ 0 ⇒
    i / j =
    if 0 < j then
      if 0 ≤ i then &(Num i DIV Num j)
      else
        -&(Num (-i) DIV Num j) + if Num (-i) MOD Num j = 0 then 0 else -1
    else if 0 ≤ i then
      -&(Num i DIV Num (-j)) + if Num i MOD Num (-j) = 0 then 0 else -1
    else &(Num (-i) DIV Num (-j))
⊢ (∀p. p ** 0 = 1) ∧ ∀p n. p ** SUC n = p * p ** n
⊢ ∀x y. x ≥ y ⇔ y ≤ x
⊢ ∀x y. x > y ⇔ y < x
⊢ ∀x y. x ≤ y ⇔ ¬(y < x)
int_lt
⊢ ∀T1 T2. T1 < T2 ⇔ int_REP T1 tint_lt int_REP T2
int_mod
⊢ ∀i j. j ≠ 0 ⇒ i % j = i − i / j * j
int_mul
⊢ ∀T1 T2. T1 * T2 = int_ABS (int_REP T1 tint_mul int_REP T2)
int_neg
⊢ ∀T1. -T1 = int_ABS (tint_neg (int_REP T1))
int_of_num
⊢ ∀T1. &T1 = int_ABS (tint_of_num T1)
int_quot
⊢ ∀i j.
    j ≠ 0 ⇒
    i quot j =
    if 0 < j then
      if 0 ≤ i then &(Num i DIV Num j) else -&(Num (-i) DIV Num j)
    else if 0 ≤ i then -&(Num i DIV Num (-j))
    else &(Num (-i) DIV Num (-j))
int_rem
⊢ ∀i j. j ≠ 0 ⇒ i rem j = i − i quot j * j
int_sub
⊢ ∀x y. x − y = x + -y
⊢ tint_0 = (1,1)
⊢ tint_1 = (1 + 1,1)
tint_add
⊢ ∀x1 y1 x2 y2. (x1,y1) tint_add (x2,y2) = (x1 + x2,y1 + y2)
⊢ ∀x1 y1 x2 y2. (x1,y1) tint_eq (x2,y2) ⇔ x1 + y2 = x2 + y1
⊢ ∀x1 y1 x2 y2. (x1,y1) tint_lt (x2,y2) ⇔ x1 + y2 < x2 + y1
tint_mul
⊢ ∀x1 y1 x2 y2.
    (x1,y1) tint_mul (x2,y2) = (x1 * x2 + y1 * y2,x1 * y2 + y1 * x2)
⊢ ∀x y. tint_neg (x,y) = (y,x)
⊢ tint_of_num 0 = tint_0 ∧
  ∀n. tint_of_num (SUC n) = tint_of_num n tint_add tint_1

Theorems

⊢ ∀x y. x = x + y ⇔ y = 0
⊢ ∀x y z. x + y = x + z ⇔ y = z
⊢ ∀P. (∀x. P x) ⇔ (∀n. P (&n)) ∧ ∀n. P (-&n)
⊢ INFINITE 𝕌(:int)
⊢ ∀n. &SUC n = &n + 1
⊢ int_0 = 0
⊢ int_1 = 1
⊢ int_1 ≠ int_0
⊢ 0 < ABS p ⇔ p ≠ 0
⊢ ∀p. ABS (ABS p) = ABS p
⊢ ∀p q.
    (ABS p = q ⇔ p = q ∧ 0 < q ∨ p = -q ∧ 0 ≤ q) ∧
    (q = ABS p ⇔ p = q ∧ 0 < q ∨ p = -q ∧ 0 ≤ q)
⊢ ∀p. ABS p = 0 ⇔ p = 0
⊢ ABS x = ABS y ⇔ x = y ∨ x = -y
⊢ ∀p. ABS p = p ⇔ 0 ≤ p
⊢ ∀p q.
    (ABS p ≤ q ⇔ p ≤ q ∧ -q ≤ p) ∧ (q ≤ ABS p ⇔ q ≤ p ∨ p ≤ -q) ∧
    (-ABS p ≤ q ⇔ -q ≤ p ∨ p ≤ q) ∧ (q ≤ -ABS p ⇔ p ≤ -q ∧ q ≤ p)
⊢ ∀p. ABS p ≤ 0 ⇔ p = 0
⊢ ∀p q.
    (ABS p < q ⇔ p < q ∧ -q < p) ∧ (q < ABS p ⇔ q < p ∨ p < -q) ∧
    (-ABS p < q ⇔ -q < p ∨ p < q) ∧ (q < -ABS p ⇔ p < -q ∧ q < p)
⊢ ∀p. ¬(ABS p < 0)
⊢ ∀p q. ABS p * ABS q = ABS (p * q)
⊢ ∀p. ABS (-p) = ABS p
⊢ ∀n. ABS (&n) = &n
⊢ ∀p. 0 ≤ ABS p
⊢ ∀p q. q ≠ 0 ⇒ ABS (p quot q * q) ≤ ABS p
⊢ ABS (i − j) = ABS (j − i)
⊢ ABS (i + j) ≤ ABS i + ABS j
⊢ ∀m n. &m + &n = &(m + n)
⊢ ∀a b c d. a + b − (c + d) = a − c + (b − d)
⊢ ∀z y x. x + (y + z) = x + y + z
⊢ ∀p n m.
    0 + p = p ∧ p + 0 = p ∧ &n + &m = &(n + m) ∧
    &n + -&m = (if m ≤ n then &(n − m) else -&(m − n)) ∧
    -&n + &m = (if n ≤ m then &(m − n) else -&(n − m)) ∧
    -&n + -&m = -&(n + m)
⊢ ∀y x. x + y = y + x
⊢ ∀i j k. k ≠ 0 ∧ (i % k = 0 ∨ j % k = 0) ⇒ (i + j) / k = i / k + j / k
⊢ ∀x. 0 + x = x
⊢ ∀x y. x + y = y ⇔ x = 0
⊢ ∀x. -x + x = 0
⊢ ∀p n m.
    0 + p = p ∧ p + 0 = p ∧ -0 = 0 ∧ --p = p ∧
    &NUMERAL n + &NUMERAL m = &NUMERAL (numeral$iZ (n + m)) ∧
    &NUMERAL n + -&NUMERAL m =
    (if m ≤ n then &NUMERAL (n − m) else -&NUMERAL (m − n)) ∧
    -&NUMERAL n + &NUMERAL m =
    (if n ≤ m then &NUMERAL (m − n) else -&NUMERAL (n − m)) ∧
    -&NUMERAL n + -&NUMERAL m = -&NUMERAL (numeral$iZ (n + m))
⊢ ∀x. x + 0 = x
⊢ ∀x y. x + y = x ⇔ y = 0
⊢ ∀x. x + -x = 0
⊢ ∀x y. x + y − x = y
⊢ ∀x y. x − (x + y) = -y
⊢ ∀y x. x + y = y + x
⊢ ∀x y. (x + y) * (x − y) = x * x − y * y
⊢ ∀x y. ¬(x < y ∧ y < x + 1)
⊢ ∀n m. m ≠ 0 ⇒ &n / &m = &(n DIV m)
⊢ (∀x. x int_divides 0) ∧ ∀x. 0 int_divides x ⇔ x = 0
⊢ ∀x. 1 int_divides x ∧ (x int_divides 1 ⇔ x = 1 ∨ x = -1)
⊢ ∀p q r. p int_divides q ⇒ (p int_divides q + r ⇔ p int_divides r)
⊢ ∀p q r. p int_divides q ⇒ p int_divides q * r
⊢ ∀p q r. p int_divides q ⇒ (p int_divides q − r ⇔ p int_divides r)
⊢ ∀p q. p int_divides q ⇔ q % p = 0 ∧ p ≠ 0 ∨ p = 0 ∧ q = 0
⊢ ∀p q. p int_divides p * q ∧ p int_divides q * p
⊢ ∀p q r. p ≠ 0 ⇒ (p * q int_divides p * r ⇔ q int_divides r)
⊢ ∀p q.
    (p int_divides -q ⇔ p int_divides q) ∧
    (-p int_divides q ⇔ p int_divides q)
⊢ ∀p q r. p int_divides q ⇒ (p int_divides r + q ⇔ p int_divides r)
⊢ ∀n m p.
    (0 int_divides 0 ⇔ T) ∧ (0 int_divides &NUMERAL (BIT1 n) ⇔ F) ∧
    (0 int_divides &NUMERAL (BIT2 n) ⇔ F) ∧ (p int_divides 0 ⇔ T) ∧
    (&NUMERAL (BIT1 n) int_divides &NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT1 n) = 0) ∧
    (&NUMERAL (BIT2 n) int_divides &NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT2 n) = 0) ∧
    (&NUMERAL (BIT1 n) int_divides -&NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT1 n) = 0) ∧
    (&NUMERAL (BIT2 n) int_divides -&NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT2 n) = 0) ∧
    (-&NUMERAL (BIT1 n) int_divides &NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT1 n) = 0) ∧
    (-&NUMERAL (BIT2 n) int_divides &NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT2 n) = 0) ∧
    (-&NUMERAL (BIT1 n) int_divides -&NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT1 n) = 0) ∧
    (-&NUMERAL (BIT2 n) int_divides -&NUMERAL m ⇔
     NUMERAL m MOD NUMERAL (BIT2 n) = 0)
⊢ ∀x. x int_divides x
⊢ ∀p q r. p int_divides q ⇒ p int_divides r * q
⊢ ∀p q r. p int_divides q ⇒ (p int_divides r − q ⇔ p int_divides r)
⊢ ∀x y z. x int_divides y ∧ y int_divides z ⇒ x int_divides z
⊢ ∀q. q ≠ 0 ⇒
      ∀p. p = p / q * q + p % q ∧
          if q < 0 then q < p % q ∧ p % q ≤ 0 else 0 ≤ p % q ∧ p % q < q
⊢ ∀q. q ≠ 0 ⇒ 0 / q = 0
⊢ ∀p. p / 1 = p
⊢ (∀n m. m ≠ 0 ⇒ &n / &m = &(n DIV m)) ∧ (∀p q. q ≠ 0 ⇒ p / -q = -p / q) ∧
  (∀m n. &m = &n ⇔ m = n) ∧ (∀x. -x = 0 ⇔ x = 0) ∧ ∀x. --x = x
⊢ ∀i j. j ≠ 0 ⇒ i / j = if 0 < j then ediv i j else -ediv (-i) j
⊢ ∀P x c.
    c ≠ 0 ⇒
    (P (x / c) ⇔
     ∀k r.
       x = k * c + r ∧ (c < 0 ∧ c < r ∧ r ≤ 0 ∨ ¬(c < 0) ∧ 0 ≤ r ∧ r < c) ⇒
       P k)
⊢ ∀p. p ≠ 0 ⇒ p / p = 1
⊢ ∀i j. i ≠ 0 ⇒ i * j / i = j
⊢ ∀p q. q ≠ 0 ∧ p % q = 0 ⇒ p / q * q = p
⊢ ∀p q. q ≠ 0 ⇒ p / -q = -p / q
⊢ ∀P x c.
    c ≠ 0 ⇒
    (P (x / c) ⇔
     ∃k r.
       x = k * c + r ∧ (c < 0 ∧ c < r ∧ r ≤ 0 ∨ ¬(c < 0) ∧ 0 ≤ r ∧ r < c) ∧
       P k)
⊢ ∀m n.
    0 / &NUMERAL (BIT1 n) = 0 ∧ 0 / &NUMERAL (BIT2 n) = 0 ∧
    &NUMERAL m / &NUMERAL (BIT1 n) = &(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    &NUMERAL m / &NUMERAL (BIT2 n) = &(NUMERAL m DIV NUMERAL (BIT2 n)) ∧
    -&NUMERAL m / &NUMERAL (BIT1 n) =
    -&(NUMERAL m DIV NUMERAL (BIT1 n)) +
    (if NUMERAL m MOD NUMERAL (BIT1 n) = 0 then 0 else -1) ∧
    -&NUMERAL m / &NUMERAL (BIT2 n) =
    -&(NUMERAL m DIV NUMERAL (BIT2 n)) +
    (if NUMERAL m MOD NUMERAL (BIT2 n) = 0 then 0 else -1) ∧
    &NUMERAL m / -&NUMERAL (BIT1 n) =
    -&(NUMERAL m DIV NUMERAL (BIT1 n)) +
    (if NUMERAL m MOD NUMERAL (BIT1 n) = 0 then 0 else -1) ∧
    &NUMERAL m / -&NUMERAL (BIT2 n) =
    -&(NUMERAL m DIV NUMERAL (BIT2 n)) +
    (if NUMERAL m MOD NUMERAL (BIT2 n) = 0 then 0 else -1) ∧
    -&NUMERAL m / -&NUMERAL (BIT1 n) = &(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    -&NUMERAL m / -&NUMERAL (BIT2 n) = &(NUMERAL m DIV NUMERAL (BIT2 n))
⊢ ∀i j. i ≠ 0 ⇒ j * i / i = j
⊢ ∀i j q.
    (∃r. i = q * j + r ∧ if j < 0 then j < r ∧ r ≤ 0 else 0 ≤ r ∧ r < j) ⇒
    i / j = q
⊢ ∀x. x + x = 2 * x
⊢ ∀x y. x * y = 0 ⇔ x = 0 ∨ y = 0
⊢ (∀m n. &m = &n ⇔ m = n) ∧ (∀x y. -x = -y ⇔ x = y) ∧
  ∀n m. (&n = -&m ⇔ n = 0 ∧ m = 0) ∧ (-&n = &m ⇔ n = 0 ∧ m = 0)
⊢ ∀x y. x = y ⇒ x ≤ y
⊢ ∀x y z. x + y = x + z ⇔ y = z
⊢ ∀x y z. x * y = x * z ⇔ x = 0 ∨ y = z
⊢ ∀x y z. x ≠ 0 ⇒ (y = z ⇔ x * y = x * z)
⊢ ∀x y z. x ≠ 0 ∧ x * y = x * z ⇒ y = z
⊢ ∀x y. -x = -y ⇔ x = y
⊢ ∀x y z. x + z = y + z ⇔ x = y
⊢ ∀n m.
    (0 = 0 ⇔ T) ∧ (0 = &NUMERAL (BIT1 n) ⇔ F) ∧
    (0 = &NUMERAL (BIT2 n) ⇔ F) ∧ (0 = -&NUMERAL (BIT1 n) ⇔ F) ∧
    (0 = -&NUMERAL (BIT2 n) ⇔ F) ∧ (&NUMERAL (BIT1 n) = 0 ⇔ F) ∧
    (&NUMERAL (BIT2 n) = 0 ⇔ F) ∧ (-&NUMERAL (BIT1 n) = 0 ⇔ F) ∧
    (-&NUMERAL (BIT2 n) = 0 ⇔ F) ∧ (&NUMERAL n = &NUMERAL m ⇔ n = m) ∧
    (&NUMERAL (BIT1 n) = -&NUMERAL m ⇔ F) ∧
    (&NUMERAL (BIT2 n) = -&NUMERAL m ⇔ F) ∧
    (-&NUMERAL (BIT1 n) = &NUMERAL m ⇔ F) ∧
    (-&NUMERAL (BIT2 n) = &NUMERAL m ⇔ F) ∧
    (-&NUMERAL n = -&NUMERAL m ⇔ n = m)
⊢ ∀x y z. x * z = y * z ⇔ z = 0 ∨ x = y
⊢ ∀x y z. z ≠ 0 ∧ x * z = y * z ⇒ x = y
⊢ ∀x y z. x = y − z ⇔ x + z = y
⊢ ∀x y z. x − y = z ⇔ x = z + y
⊢ ∀n m. &n ** m = &(n ** m)
⊢ ∀n m p. p ** n * p ** m = p ** (n + m)
⊢ ∀p n m.
    p ** 0 = 1 ∧ &n ** m = &(n ** m) ∧
    -&n ** NUMERAL (BIT1 m) = -&NUMERAL (n ** NUMERAL (BIT1 m)) ∧
    -&n ** NUMERAL (BIT2 m) = &NUMERAL (n ** NUMERAL (BIT2 m))
⊢ ∀p n. p ** n = 0 ⇔ p = 0 ∧ n ≠ 0
⊢ ∀m n p. n ≤ m ∧ p ≠ 0 ⇒ p ** m % p ** n = 0
⊢ ∀m n p. (p ** n) ** m = p ** (n * m)
⊢ ∀n m. (EVEN n ⇒ -&m ** n = &(m ** n)) ∧ (ODD n ⇒ -&m ** n = -&(m ** n))
⊢ ∀n m p.
    p ** 0 = 1 ∧ &NUMERAL n ** NUMERAL m = &NUMERAL (n ** m) ∧
    -&NUMERAL n ** NUMERAL (BIT1 m) = -&NUMERAL (n ** BIT1 m) ∧
    -&NUMERAL n ** NUMERAL (BIT2 m) = &NUMERAL (n ** BIT2 m)
⊢ ∀m n p. n ≤ m ∧ p ≠ 0 ⇒ p ** m / p ** n = p ** (m − n)
⊢ ∀x y. x ≥ y ⇔ y ≤ x
⊢ ∀x y. x ≥ y ⇔ y ≤ x
⊢ ∀n m.
    (0 ≥ 0 ⇔ T) ∧ (&NUMERAL n ≥ 0 ⇔ T) ∧ (-&NUMERAL (BIT1 n) ≥ 0 ⇔ F) ∧
    (-&NUMERAL (BIT2 n) ≥ 0 ⇔ F) ∧ (0 ≥ &NUMERAL (BIT1 n) ⇔ F) ∧
    (0 ≥ &NUMERAL (BIT2 n) ⇔ F) ∧ (0 ≥ -&NUMERAL (BIT1 n) ⇔ T) ∧
    (0 ≥ -&NUMERAL (BIT2 n) ⇔ T) ∧ (&NUMERAL m ≥ &NUMERAL n ⇔ n ≤ m) ∧
    (-&NUMERAL (BIT1 m) ≥ &NUMERAL n ⇔ F) ∧
    (-&NUMERAL (BIT2 m) ≥ &NUMERAL n ⇔ F) ∧
    (&NUMERAL m ≥ -&NUMERAL n ⇔ T) ∧ (-&NUMERAL m ≥ -&NUMERAL n ⇔ m ≤ n)
⊢ ∀x y. x > y ⇔ y < x
⊢ ∀x y. x > y ⇔ y < x
⊢ ∀n m.
    (&NUMERAL (BIT1 n) > 0 ⇔ T) ∧ (&NUMERAL (BIT2 n) > 0 ⇔ T) ∧
    (0 > 0 ⇔ F) ∧ (-&NUMERAL n > 0 ⇔ F) ∧ (0 > &NUMERAL n ⇔ F) ∧
    (0 > -&NUMERAL (BIT1 n) ⇔ T) ∧ (0 > -&NUMERAL (BIT2 n) ⇔ T) ∧
    (&NUMERAL m > &NUMERAL n ⇔ n < m) ∧
    (&NUMERAL m > -&NUMERAL (BIT1 n) ⇔ T) ∧
    (&NUMERAL m > -&NUMERAL (BIT2 n) ⇔ T) ∧
    (-&NUMERAL m > &NUMERAL n ⇔ F) ∧ (-&NUMERAL m > -&NUMERAL n ⇔ m < n)
⊢ ∀m n. &m = &n ⇔ m = n
⊢ (∀x. 0 * x = 0) ∧ (∀x y z. x + y = x + z ⇔ y = z) ∧
  ∀w x y z. w * y + x * z = w * z + x * y ⇔ w = x ∨ y = z
⊢ ∀z y x. x * (y + z) = x * y + x * z
⊢ ∀m n. &m ≤ &n ⇔ m ≤ n
⊢ ∀i j. 0 ≤ i ∧ i < j ⇒ i % j = i
⊢ ∀x y. 0 ≤ x ∧ 0 < y ⇒ 0 < x + y
⊢ ∀w x y z. w ≤ x ∧ y < z ⇒ w + y < x + z
⊢ ∀x y. ¬(x < y ∧ y ≤ x)
⊢ ∀x y. x ≤ y ∨ y < x
⊢ ∀x y z. x ≤ y ∧ y < z ⇒ x < z
⊢ 0 ≤ 1
⊢ ∀x y. 0 ≤ x ∧ 0 ≤ y ⇒ 0 ≤ x + y
⊢ ∀w x y z. w ≤ x ∧ y ≤ z ⇒ w + y ≤ x + z
⊢ ∀x y. y ≤ x + y ⇔ 0 ≤ x
⊢ ∀x y. x ≤ x + y ⇔ 0 ≤ y
⊢ ∀x y. x ≤ y ∧ y ≤ x ⇔ x = y
⊢ ∀x y. x ≤ y ⇔ x < y ∨ x = y
⊢ ∀x. 0 ≤ x + x ⇔ 0 ≤ x
⊢ ∀x y z. x + y ≤ x + z ⇔ y ≤ z
⊢ ∀x y. -x ≤ y ⇔ 0 ≤ x + y
⊢ ∀x y. x ≤ y ⇔ x < y ∨ x = y
⊢ x ≤ y ⇔ x < y + 1
⊢ ∀x y z. 0 < x ⇒ (x * y ≤ x * z ⇔ y ≤ z)
⊢ ∀x y. 0 ≤ x ∧ 0 ≤ y ⇒ 0 ≤ x * y
⊢ ∀x y. -x ≤ -y ⇔ y ≤ x
⊢ ∀x. -x ≤ x ⇔ 0 ≤ x
⊢ ∀x. x ≤ -x ⇔ x ≤ 0
⊢ ∀x. 0 ≤ x ∨ 0 ≤ -x
⊢ ∀x y z. x + z ≤ y + z ⇔ x ≤ y
⊢ ∀n m.
    (0 ≤ 0 ⇔ T) ∧ (0 ≤ &NUMERAL n ⇔ T) ∧ (0 ≤ -&NUMERAL (BIT1 n) ⇔ F) ∧
    (0 ≤ -&NUMERAL (BIT2 n) ⇔ F) ∧ (&NUMERAL (BIT1 n) ≤ 0 ⇔ F) ∧
    (&NUMERAL (BIT2 n) ≤ 0 ⇔ F) ∧ (-&NUMERAL (BIT1 n) ≤ 0 ⇔ T) ∧
    (-&NUMERAL (BIT2 n) ≤ 0 ⇔ T) ∧ (&NUMERAL n ≤ &NUMERAL m ⇔ n ≤ m) ∧
    (&NUMERAL n ≤ -&NUMERAL (BIT1 m) ⇔ F) ∧
    (&NUMERAL n ≤ -&NUMERAL (BIT2 m) ⇔ F) ∧
    (-&NUMERAL n ≤ &NUMERAL m ⇔ T) ∧ (-&NUMERAL n ≤ -&NUMERAL m ⇔ m ≤ n)
⊢ ∀x. x ≤ x
⊢ ∀x y. x ≤ -y ⇔ x + y ≤ 0
⊢ ∀x. 0 ≤ x * x
⊢ ∀x y z. x ≤ y − z ⇔ x + z ≤ y
⊢ ∀x y z. x − y ≤ z ⇔ x ≤ z + y
⊢ ∀x y. x ≤ y ∨ y ≤ x
⊢ ∀x y z. x ≤ y ∧ y ≤ z ⇒ x ≤ z
⊢ ∀x y. x + y = 0 ⇔ x = -y
⊢ ∀m n. &m < &n ⇔ m < n
⊢ ∀x y. x < y ⇔ ¬(y ≤ x)
⊢ ∀x y. 0 < x ∧ 0 ≤ y ⇒ 0 < x + y
⊢ ∀w x y z. w < x ∧ y ≤ z ⇒ w + y < x + z
⊢ ∀x y. ¬(x ≤ y ∧ y < x)
⊢ ∀x y. x < y ∨ y ≤ x
⊢ ∀x y z. x < y ∧ y ≤ z ⇒ x < z
⊢ 0 < 1
⊢ ∀x y. 0 < x ∧ 0 < y ⇒ 0 < x + y
⊢ ∀x y. x ≤ y ⇒ x < y + 1
⊢ ∀w x y z. w < x ∧ y < z ⇒ w + y < x + z
⊢ ∀x y. y < x + y ⇔ 0 < x
⊢ ∀x y z. y < x + -z ⇔ y + z < x
⊢ ∀x y z. x + -y < z ⇔ x < z + y
⊢ ∀x y. x < x + y ⇔ 0 < y
⊢ ∀x y z. x + y < z ⇔ x < z − y
⊢ ∀x y. ¬(x < y ∧ y < x)
⊢ ∀n m.
    (&n < &m ⇔ n < m) ∧ (-&n < -&m ⇔ m < n) ∧ (-&n < &m ⇔ n ≠ 0 ∨ m ≠ 0) ∧
    (&n < -&m ⇔ F)
⊢ ∀x y. x < y ⇔ x + 1 ≤ y
⊢ ∀x y. x < y ⇒ ¬(y < x)
⊢ ∀x y. x < y ⇒ x ≤ y
⊢ ∀x y. x < y ⇒ x ≠ y
⊢ ∀x y z. x + y < x + z ⇔ y < z
⊢ ∀x y z. y < z ⇒ x + y < x + z
⊢ ∀x y. x < y ⇔ x ≤ y ∧ x ≠ y
⊢ x < y ⇔ x + 1 ≤ y
⊢ ∀x y z. 0 < x ⇒ (x * y < x * z ⇔ y < z)
⊢ ∀x y. int_0 < x ∧ int_0 < y ⇒ int_0 < x * y
⊢ ∀x1 x2 y1 y2. 0 ≤ x1 ∧ 0 ≤ y1 ∧ x1 < x2 ∧ y1 < y2 ⇒ x1 * y1 < x2 * y2
⊢ ∀x y. -x < -y ⇔ y < x
⊢ ∀x. x = 0 ∨ 0 < x ∨ 0 < -x
⊢ ∀n. &n ≠ 0 ⇔ 0 < &n
⊢ ∀x y z. x + z < y + z ⇔ x < y
⊢ ∀n m.
    (0 < &NUMERAL (BIT1 n) ⇔ T) ∧ (0 < &NUMERAL (BIT2 n) ⇔ T) ∧
    (0 < 0 ⇔ F) ∧ (0 < -&NUMERAL n ⇔ F) ∧ (&NUMERAL n < 0 ⇔ F) ∧
    (-&NUMERAL (BIT1 n) < 0 ⇔ T) ∧ (-&NUMERAL (BIT2 n) < 0 ⇔ T) ∧
    (&NUMERAL n < &NUMERAL m ⇔ n < m) ∧
    (-&NUMERAL (BIT1 n) < &NUMERAL m ⇔ T) ∧
    (-&NUMERAL (BIT2 n) < &NUMERAL m ⇔ T) ∧
    (&NUMERAL n < -&NUMERAL m ⇔ F) ∧ (-&NUMERAL n < -&NUMERAL m ⇔ m < n)
⊢ ∀x. ¬(x < x)
⊢ ∀x y z. x < y − z ⇔ x + z < y
⊢ ∀x y z. x − y < z ⇔ x < z + y
⊢ ∀x y. x = y ∨ x < y ∨ y < x
⊢ ∀x y z. x < y ∧ y < z ⇒ x < z
⊢ ∀x y z. int_max x y < z ⇒ x < z ∧ y < z
⊢ ∀m n. int_max (&m) (&n) = &MAX m n
⊢ ∀x y z. x < int_min y z ⇒ x < y ∧ x < z
⊢ ∀m n. int_min (&m) (&n) = &MIN m n
⊢ ∀n m. m ≠ 0 ⇒ &n % &m = &(n MOD m)
⊢ ∀p. p ≠ 0 ⇒ 0 % p = 0
⊢ ∀i. i % 1 = 0
⊢ k ≠ 0 ⇒ (q * k + r) % k = r % k
⊢ ∀p q.
    q ≠ 0 ⇒ if q < 0 then q < p % q ∧ p % q ≤ 0 else 0 ≤ p % q ∧ p % q < q
⊢ (∀n m. m ≠ 0 ⇒ &n % &m = &(n MOD m)) ∧
  (∀p q. q ≠ 0 ⇒ p % -q = -(-p % q)) ∧ (∀x. --x = x) ∧
  (∀m n. &m = &n ⇔ m = n) ∧ ∀x. -x = 0 ⇔ x = 0
⊢ ∀p. p ≠ 0 ⇒ ∀q. (q * p) % p = 0
⊢ ∀i j. j ≠ 0 ⇒ i % j = if 0 < j then emod i j else -emod (-i) j
⊢ ∀q. q ≠ 0 ⇒ ∀p. p % q = 0 ⇔ ∃k. p = k * q
⊢ ∀P x c.
    c ≠ 0 ⇒
    (P (x % c) ⇔
     ∀q r.
       x = q * c + r ∧ (c < 0 ∧ c < r ∧ r ≤ 0 ∨ ¬(c < 0) ∧ 0 ≤ r ∧ r < c) ⇒
       P r)
⊢ ∀i. i ≠ 0 ⇒ i % i = 0
⊢ ∀n. 0 < n ⇒ -1 % n = n − 1
⊢ k ≠ 0 ⇒ j % k % k = j % k
⊢ ∀p q. q ≠ 0 ⇒ p % -q = -(-p % q)
⊢ k ≠ 0 ⇒ -x % k = (k − x) % k
⊢ ∀P x c.
    c ≠ 0 ⇒
    (P (x % c) ⇔
     ∃k r.
       x = k * c + r ∧ (c < 0 ∧ c < r ∧ r ≤ 0 ∨ ¬(c < 0) ∧ 0 ≤ r ∧ r < c) ∧
       P r)
⊢ k ≠ 0 ⇒ (i % k + j % k) % k = (i + j) % k
⊢ ∀m n.
    0 % &NUMERAL (BIT1 n) = 0 ∧ 0 % &NUMERAL (BIT2 n) = 0 ∧
    0 % -&NUMERAL (BIT1 n) = 0 ∧ 0 % -&NUMERAL (BIT2 n) = 0 ∧
    &NUMERAL m % &NUMERAL (BIT1 n) = &(NUMERAL m MOD NUMERAL (BIT1 n)) ∧
    &NUMERAL m % &NUMERAL (BIT2 n) = &(NUMERAL m MOD NUMERAL (BIT2 n)) ∧
    &NUMERAL m % -&NUMERAL (BIT1 n) = -(-&NUMERAL m % &NUMERAL (BIT1 n)) ∧
    &NUMERAL m % -&NUMERAL (BIT2 n) = -(-&NUMERAL m % &NUMERAL (BIT2 n)) ∧
    x % &NUMERAL (BIT1 n) = x − x / &NUMERAL (BIT1 n) * &NUMERAL (BIT1 n) ∧
    x % &NUMERAL (BIT2 n) = x − x / &NUMERAL (BIT2 n) * &NUMERAL (BIT2 n) ∧
    x % -&NUMERAL (BIT1 n) = -x / &NUMERAL (BIT1 n) * &NUMERAL (BIT1 n) + x ∧
    x % -&NUMERAL (BIT2 n) = -x / &NUMERAL (BIT2 n) * &NUMERAL (BIT2 n) + x
⊢ k ≠ 0 ⇒ (i % k − j % k) % k = (i − j) % k
⊢ ∀i j m.
    (∃q. i = q * j + m ∧ if j < 0 then j < m ∧ m ≤ 0 else 0 ≤ m ∧ m < j) ⇒
    i % j = m
⊢ ∀m n. &m * &n = &(m * n)
⊢ ∀z y x. x * (y * z) = x * y * z
⊢ (∀m n. &m * &n = &(m * n)) ∧ (∀x y. -x * y = -(x * y)) ∧
  (∀x y. x * -y = -(x * y)) ∧ ∀x. --x = x
⊢ ∀y x. x * y = y * x
⊢ ∀p q k. q ≠ 0 ∧ p % q = 0 ⇒ k * p / q = k * (p / q)
⊢ ∀x y. x * y = 1 ⇔ x = 1 ∧ y = 1 ∨ x = -1 ∧ y = -1
⊢ ∀x. 1 * x = x
⊢ ∀x y. -x * y = -(x * y)
⊢ ∀x. 0 * x = 0
⊢ ∀p q k. q ≠ 0 ∧ p rem q = 0 ⇒ k * p quot q = k * (p quot q)
⊢ ∀m n p.
    p * 0 = 0 ∧ 0 * p = 0 ∧ &NUMERAL m * &NUMERAL n = &NUMERAL (m * n) ∧
    -&NUMERAL m * &NUMERAL n = -&NUMERAL (m * n) ∧
    &NUMERAL m * -&NUMERAL n = -&NUMERAL (m * n) ∧
    -&NUMERAL m * -&NUMERAL n = &NUMERAL (m * n)
⊢ ∀x. x * 1 = x
⊢ ∀x y. x * -y = -(x * y)
⊢ ∀x. x * 0 = 0
⊢ ∀p q.
    (0 < p * q ⇔ 0 < p ∧ 0 < q ∨ p < 0 ∧ q < 0) ∧
    (p * q < 0 ⇔ 0 < p ∧ q < 0 ∨ p < 0 ∧ 0 < q)
⊢ ∀y x. x * y = y * x
⊢ ∀x. --x = x
⊢ -0 = 0
⊢ ∀x y. -(x + y) = -x + -y
⊢ ∀x y. -x = y ⇔ x = -y
⊢ ∀x. -x = 0 ⇔ x = 0
⊢ ∀x. 0 ≤ -x ⇔ x ≤ 0
⊢ ∀x. 0 < -x ⇔ x < 0
⊢ ∀x. -x ≤ 0 ⇔ 0 ≤ x
⊢ ∀x y. -(x * y) = -x * y
⊢ ∀x. -x < 0 ⇔ 0 < x
⊢ ∀x. -x = -1 * x
⊢ ∀x y. -x * -y = x * y
⊢ ∀x. --x = x
⊢ ∀x y. -(x * y) = x * -y
⊢ ∀p. p = -p ⇔ p = 0
⊢ ∀x y. -(x − y) = y − x
⊢ ∀x y. x ≠ y ⇔ x < y ∨ y < x
⊢ ∀x y. ¬(x ≤ y) ⇔ y < x
⊢ ∀x y. ¬(x < y) ⇔ y ≤ x
⊢ ∀p. (∃n. p = &n ∧ n ≠ 0) ∨ (∃n. p = -&n ∧ n ≠ 0) ∨ p = 0
⊢ ∀n. n ≠ 0 ⇒ 0 < &n
⊢ ∀i. &Num i = i ⇔ 0 ≤ i
⊢ ∀m n. &m + &n = &(m + n)
⊢ ∀m n. &m = &n ⇔ m = n
⊢ ∀m n. &m ≤ &n ⇔ m ≤ n
⊢ ∀m n. &m < &n ⇔ m < n
⊢ ∀m n. &m * &n = &(m * n)
⊢ ∀n m. &n ** m = &(n ** m)
⊢ (∀x. -x = -1 * x) ∧ ∀x y. x − y = x + -1 * y
⊢ 1 * x = x ∧ a * m + b * m = (a + b) * m ∧ a * m + m = (a + 1) * m ∧
  m + a * m = (a + 1) * m ∧ m + m = (1 + 1) * m ∧ 0 * m = 0 ∧ 0 + a = a ∧
  a + 0 = a ∧ a * b = b * a ∧ (a + b) * c = a * c + b * c ∧ 0 * a = 0 ∧
  a * 0 = 0 ∧ 1 * a = a ∧ a * 1 = a ∧
  lx * ly * (rx * ry) = lx * rx * (ly * ry) ∧
  lx * ly * (rx * ry) = lx * (ly * (rx * ry)) ∧
  lx * ly * (rx * ry) = rx * (lx * ly * ry) ∧ lx * ly * rx = lx * rx * ly ∧
  lx * ly * rx = lx * (ly * rx) ∧ lx * rx = rx * lx ∧
  lx * (rx * ry) = lx * rx * ry ∧ lx * (rx * ry) = rx * (lx * ry) ∧
  a + b + (c + d) = a + c + (b + d) ∧ a + b + c = a + (b + c) ∧
  a + (c + d) = c + (a + d) ∧ a + b + c = a + c + b ∧ a + c = c + a ∧
  a + (c + d) = a + c + d ∧ x ** p * x ** q = x ** (p + q) ∧
  x * x ** q = x ** SUC q ∧ x ** q * x = x ** SUC q ∧ x * x = x ** 2 ∧
  (x * y) ** q = x ** q * y ** q ∧ (x ** p) ** q = x ** (p * q) ∧
  x ** 0 = 1 ∧ x ** 1 = x ∧ x * (y + z) = x * y + x * z ∧
  x ** SUC q = x * x ** q
⊢ ∀n. 0 ≤ &n
⊢ ∀x. 0 < x * x ⇔ x ≠ 0
⊢ ∀x. 0 < x ⇒ x ≠ 0
⊢ x ** 0 = 1 ∧ ∀n. x ** SUC n = x * x ** n
⊢ ∀x n. -x ** n = if EVEN n then x ** n else -(x ** n)
⊢ ∀p q. q ≠ 0 ⇒ &p quot &q = &(p DIV q)
⊢ ∀q. q ≠ 0 ⇒ 0 quot q = 0
⊢ ∀p. p quot 1 = p
⊢ (∀p q. q ≠ 0 ⇒ &p quot &q = &(p DIV q)) ∧
  (∀p q. q ≠ 0 ⇒ -p quot q = -(p quot q) ∧ p quot -q = -(p quot q)) ∧
  (∀m n. &m = &n ⇔ m = n) ∧ (∀x. -x = 0 ⇔ x = 0) ∧ ∀x. --x = x
⊢ ∀i j. j ≠ 0 ⇒ i quot j = if 0 ≤ i then ediv i j else ediv (-i) (-j)
⊢ ∀p. p ≠ 0 ⇒ p quot p = 1
⊢ ∀p q. q ≠ 0 ⇒ -p quot q = -(p quot q) ∧ p quot -q = -(p quot q)
⊢ ∀m n.
    0 quot &NUMERAL (BIT1 n) = 0 ∧ 0 quot &NUMERAL (BIT2 n) = 0 ∧
    &NUMERAL m quot &NUMERAL (BIT1 n) = &(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    &NUMERAL m quot &NUMERAL (BIT2 n) = &(NUMERAL m DIV NUMERAL (BIT2 n)) ∧
    -&NUMERAL m quot &NUMERAL (BIT1 n) = -&(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    -&NUMERAL m quot &NUMERAL (BIT2 n) = -&(NUMERAL m DIV NUMERAL (BIT2 n)) ∧
    &NUMERAL m quot -&NUMERAL (BIT1 n) = -&(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    &NUMERAL m quot -&NUMERAL (BIT2 n) = -&(NUMERAL m DIV NUMERAL (BIT2 n)) ∧
    -&NUMERAL m quot -&NUMERAL (BIT1 n) = &(NUMERAL m DIV NUMERAL (BIT1 n)) ∧
    -&NUMERAL m quot -&NUMERAL (BIT2 n) = &(NUMERAL m DIV NUMERAL (BIT2 n))
⊢ ∀p q k.
    (∃r. p = k * q + r ∧ (if 0 < p then 0 ≤ r else r ≤ 0) ∧ ABS r < ABS q) ⇒
    p quot q = k
⊢ ∀x y z. (x + y) * z = x * z + y * z
⊢ ∀p q. q ≠ 0 ⇒ &p rem &q = &(p MOD q)
⊢ ∀q. q ≠ 0 ⇒ 0 rem q = 0
⊢ ∀q. q ≠ 0 ⇒
      ∀p. p = p quot q * q + p rem q ∧
          (if 0 < p then 0 ≤ p rem q else p rem q ≤ 0) ∧
          ABS (p rem q) < ABS q
⊢ (∀p q. q ≠ 0 ⇒ &p rem &q = &(p MOD q)) ∧
  (∀p q. q ≠ 0 ⇒ -p rem q = -(p rem q) ∧ p rem -q = p rem q) ∧
  (∀x. --x = x) ∧ (∀m n. &m = &n ⇔ m = n) ∧ ∀x. -x = 0 ⇔ x = 0
⊢ ∀p. p ≠ 0 ⇒ ∀q. (q * p) rem p = 0
⊢ ∀i j. j ≠ 0 ⇒ i rem j = if 0 ≤ i then emod i j else -emod (-i) j
⊢ ∀q. q ≠ 0 ⇒ ∀p. p rem q = 0 ⇔ ∃k. p = k * q
⊢ ∀i n. 0 < n ⇒ i rem n = if i < 0 then (i − 1) % n − n + 1 else i % n
⊢ ∀p. p ≠ 0 ⇒ p rem p = 0
⊢ ∀p q. q ≠ 0 ⇒ -p rem q = -(p rem q) ∧ p rem -q = p rem q
⊢ ∀m n.
    0 rem &NUMERAL (BIT1 n) = 0 ∧ 0 rem &NUMERAL (BIT2 n) = 0 ∧
    &NUMERAL m rem &NUMERAL (BIT1 n) = &(NUMERAL m MOD NUMERAL (BIT1 n)) ∧
    &NUMERAL m rem &NUMERAL (BIT2 n) = &(NUMERAL m MOD NUMERAL (BIT2 n)) ∧
    -&NUMERAL m rem &NUMERAL (BIT1 n) = -&(NUMERAL m MOD NUMERAL (BIT1 n)) ∧
    -&NUMERAL m rem &NUMERAL (BIT2 n) = -&(NUMERAL m MOD NUMERAL (BIT2 n)) ∧
    &NUMERAL m rem -&NUMERAL (BIT1 n) = &(NUMERAL m MOD NUMERAL (BIT1 n)) ∧
    &NUMERAL m rem -&NUMERAL (BIT2 n) = &(NUMERAL m MOD NUMERAL (BIT2 n)) ∧
    -&NUMERAL m rem -&NUMERAL (BIT1 n) = -&(NUMERAL m MOD NUMERAL (BIT1 n)) ∧
    -&NUMERAL m rem -&NUMERAL (BIT2 n) = -&(NUMERAL m MOD NUMERAL (BIT2 n))
⊢ ∀p q r.
    ABS r < ABS q ∧ (if 0 < p then 0 ≤ r else r ≤ 0) ∧ (∃k. p = k * q + r) ⇒
    p rem q = r
⊢ ∀x y. x + y = 0 ⇔ y = -x
⊢ ∀n m. m ≤ n ⇒ &n − &m = &(n − m)
⊢ ∀x y. x − y = 0 ⇔ x = y
⊢ ABS i − ABS j ≤ ABS (i − j)
⊢ ∀x y. x − y + y = x
⊢ ∀x y. y + (x − y) = x
⊢ ∀x y. x − y = x + -y
⊢ ∀x y z. x * (y − z) = x * y − x * z
⊢ ∀x y. 0 ≤ x − y ⇔ y ≤ x
⊢ ∀x y. -x − y = -(x + y)
⊢ ∀x y. 0 < x − y ⇔ y < x
⊢ ∀x. 0 − x = -x
⊢ ∀x y. -x − -y = y − x
⊢ ∀x y z. (x − y) * z = x * z − y * z
⊢ ∀m n p.
    p − 0 = p ∧ 0 − p = -p ∧
    &NUMERAL m − &NUMERAL n = &NUMERAL m + -&NUMERAL n ∧
    -&NUMERAL m − &NUMERAL n = -&NUMERAL m + -&NUMERAL n ∧
    &NUMERAL m − -&NUMERAL n = &NUMERAL m + &NUMERAL n ∧
    -&NUMERAL m − -&NUMERAL n = -&NUMERAL m + &NUMERAL n
⊢ ∀x. x − x = 0
⊢ ∀x y. x − -y = x + y
⊢ ∀x. x − 0 = x
⊢ ∀x y. x − y − x = -y
⊢ ∀x y. x − (x − y) = y
⊢ ∀a b c. a − b + (b − c) = a − c
⊢ ∀x y. x * x + y * y = 0 ⇔ x = 0 ∧ y = 0
⊢ ∀n i. &n ≤ i ⇒ n ≤ Num i
⊢ ∀x1 x2 y1 y2. x1 < y1 ∧ x2 < y2 ⇒ x1 + x2 < y1 + y2
⊢ ∀x y. x < x + y ⇔ 0 < y
⊢ ∀x y. ¬(x + y < x)
⊢ ∀x y z. x + y < x + z ⇔ y < z
⊢ Num i = 0 ⇔ i = 0
⊢ ∀m n. m + n = Num (&m + &n)
⊢ ∀n m. n DIV m = if m = 0 then 0 else Num (ediv (&n) (&m))
⊢ ∀n m. n MOD m = if m = 0 then n else Num (emod (&n) (&m))
⊢ ∀m n. m * n = Num (&m * &n)
⊢ ∀m n. m − n = if &m ≤ &n then 0 else Num (&m − &n)
⊢ 0 ≤ x ∧ 0 ≤ y ⇒ (Num x < Num y ⇔ x < y)
⊢ ∀i. i ≤ 0 ⇒ ∃n. i = -&n
⊢ ∀n. Num (&n) = n
⊢ ∀n. Num (-&n) = n
⊢ ∀i. 0 ≤ i ⇒ ∃!n. i = &n
⊢ ∀t. ¬(t < int_0) ⇒ ∃n. t = &n
⊢ ∀i. 0 ≤ i ⇒ ∃n. i = &n
⊢ ∀t. ¬(t tint_lt tint_0) ⇒ ∃n. t tint_eq tint_of_num n
⊢ Num a = Num b ⇔ a = b ∨ a = -b
⊢ ∀i. &Num i = ABS i
⊢ Num (-a) = Num a
⊢ ¬(tint_1 tint_eq tint_0)
⊢ ∀z y x. x tint_add (y tint_add z) = x tint_add y tint_add z
⊢ ∀x. tint_0 tint_add x tint_eq x
⊢ ∀x. tint_neg x tint_add x tint_eq tint_0
⊢ ∀y x. x tint_add y = y tint_add x
⊢ ∀x1 x2 y1 y2.
    x1 tint_eq x2 ∧ y1 tint_eq y2 ⇒ x1 tint_add y1 tint_eq x2 tint_add y2
⊢ ∀x1 x2 y. x1 tint_eq x2 ⇒ x1 tint_add y tint_eq x2 tint_add y
⊢ ∀p q. p = q ⇒ p tint_eq q
⊢ ∀p q. p tint_eq q ⇔ $tint_eq p = $tint_eq q
⊢ ∀x. x tint_eq x
⊢ ∀x y. x tint_eq y ⇔ y tint_eq x
⊢ ∀x y z. x tint_eq y ∧ y tint_eq z ⇒ x tint_eq z
⊢ ∀m n. tint_of_num m tint_eq tint_of_num n ⇔ m = n
⊢ ∀z y x. x tint_mul (y tint_add z) = x tint_mul y tint_add x tint_mul z
⊢ ∀x y z. y tint_lt z ⇒ x tint_add y tint_lt x tint_add z
⊢ ∀x y. tint_0 tint_lt x ∧ tint_0 tint_lt y ⇒ tint_0 tint_lt x tint_mul y
⊢ ∀x. ¬(x tint_lt x)
⊢ ∀x y. x tint_eq y ∨ x tint_lt y ∨ y tint_lt x
⊢ ∀x y z. x tint_lt y ∧ y tint_lt z ⇒ x tint_lt z
⊢ ∀x1 x2 y1 y2.
    x1 tint_eq x2 ∧ y1 tint_eq y2 ⇒ (x1 tint_lt y1 ⇔ x2 tint_lt y2)
⊢ ∀x y1 y2. y1 tint_eq y2 ⇒ (x tint_lt y1 ⇔ x tint_lt y2)
⊢ ∀x1 x2 y. x1 tint_eq x2 ⇒ (x1 tint_lt y ⇔ x2 tint_lt y)
⊢ ∀z y x. x tint_mul (y tint_mul z) = x tint_mul y tint_mul z
⊢ ∀x. tint_1 tint_mul x tint_eq x
⊢ ∀y x. x tint_mul y = y tint_mul x
⊢ ∀x1 x2 y1 y2.
    x1 tint_eq x2 ∧ y1 tint_eq y2 ⇒ x1 tint_mul y1 tint_eq x2 tint_mul y2
⊢ ∀x1 x2 y. x1 tint_eq x2 ⇒ x1 tint_mul y tint_eq x2 tint_mul y
⊢ ∀x1 x2. x1 tint_eq x2 ⇒ tint_neg x1 tint_eq tint_neg x2
int_ABS_REP_CLASS
⊢ (∀a. int_ABS_CLASS (int_REP_CLASS a) = a) ∧
  ∀c. (∃r. r tint_eq r ∧ c = $tint_eq r) ⇔
      int_REP_CLASS (int_ABS_CLASS c) = c
int_QUOTIENT
⊢ QUOTIENT $tint_eq int_ABS int_REP
⊢ &n + &m = &(n + m) ∧ -&n + &m = (if n ≤ m then &(m − n) else -&(n − m)) ∧
  &n + -&m = (if m ≤ n then &(n − m) else -&(m − n)) ∧
  -&n + -&m = -&(n + m) ∧ &n * &m = &(n * m) ∧ -&n * &m = -&(n * m) ∧
  &n * -&m = -&(n * m) ∧ -&n * -&m = &(n * m) ∧ (&n = &m ⇔ n = m) ∧
  (&n = -&m ⇔ n = 0 ∧ m = 0) ∧ (-&n = &m ⇔ n = 0 ∧ m = 0) ∧
  (-&n = -&m ⇔ n = m) ∧ --x = x ∧ -0 = 0
⊢ ∀x. (∃n. x = &n) ∨ ∃n. n ≠ 0 ∧ x = -&n
⊢ ∀b a. a int_divides b ⇔ ∃x. b = a * x
⊢ ∀n m. (&n = -&m ⇔ n = 0 ∧ m = 0) ∧ (-&n = &m ⇔ n = 0 ∧ m = 0)
⊢ a divides b ⇔ &a int_divides &b
⊢ ∀i. Num i = @n. if 0 ≤ i then i = &n else i = -&n
⊢ ∀n. FST (tint_of_num n) = SND (tint_of_num n) + n