let mytheory = ref [ `m + 0 = m`; `m + (SUC n) = SUC(m + n)`; `m + n = n + m`; `m + (n + p) = (m + n) + p`; `(m + n) + p = m + (n + p)`; `(m + n = 0) <=> (m = 0) /\ (n = 0)`; `(m + n = m + p) <=> (n = p)`; `(m + p = n + p) <=> (m = n)`; `(m + n = m) <=> (n = 0)`; `(m + n = n) <=> (m = 0)`; `SUC m = m + SUC(0)`; `m * 0 = 0`; `m * (SUC n) = m + (m * n)`; `(0 * n = 0) /\ (m * 0 = 0) /\ (1 * n = n) /\ (m * 1 = m) /\ ((SUC m) * n = (m * n) + n) /\ (m * (SUC n) = m + (m * n))`; `m * n = n * m`; `m * (n + p) = (m * n) + (m * p)`; `(m + n) * p = (m * p) + (n * p)`; `m * (n * p) = (m * n) * p`; `(m * n = 0) <=> (m = 0) \/ (n = 0)`; `(m * n = m * p) <=> (m = 0) \/ (n = p)`; `(m * p = n * p) <=> (m = n) \/ (p = 0)`; `SUC(SUC(0)) * n = n + n`; `(m * n = SUC(0)) <=> (m = SUC(0)) /\ (n = SUC(0))`; `(m EXP n = 0) <=> (m = 0) /\ ~(n = 0)`; `m EXP (n + p) = (m EXP n) * (m EXP p)`; `SUC(0) EXP n = SUC(0)`; `n EXP SUC(0) = n`; `n EXP SUC(SUC(0)) = n * n`; `(m * n) EXP p = m EXP p * n EXP p`; `m EXP (n * p) = (m EXP n) EXP p`; `(SUC m <= n) <=> (m < n)`; `(m < SUC n) <=> (m <= n)`; `(SUC m <= SUC n) <=> (m <= n)`; `(SUC m < SUC n) <=> (m < n)`; `0 <= n`; `0 < SUC n`; `n <= n`; `~(n < n)`; `(m <= n /\ n <= m) <=> (m = n)`; `~(m < n /\ n < m)`; `~(m <= n /\ n < m)`; `~(m < n /\ n <= m)`; `m <= n /\ n <= p ==> m <= p`; `m < n /\ n < p ==> m < p`; `m <= n /\ n < p ==> m < p`; `m < n /\ n <= p ==> m < p`; `m <= n \/ n <= m`; `(m < n) \/ (n < m) \/ (m = n)`; `m <= n \/ n < m`; `m < n \/ n <= m`; `0 < n <=> ~(n = 0)`; `(m <= n) <=> (m < n) \/ (m = n)`; `(m < n) <=> (m <= n) /\ ~(m = n)`; `~(m <= n) <=> (n < m)`; `~(m < n) <=> n <= m`; `m < n ==> m <= n`; `(m = n) ==> m <= n`; `m <= m + n`; `n <= m + n`; `(m < m + n) <=> (0 < n)`; `(n < m + n) <=> (0 < m)`; `(m + n) <= (m + p) <=> n <= p`; `(m + p) <= (n + p) <=> (m <= n)`; `(m + n) < (m + p) <=> n < p`; `(m + p) < (n + p) <=> (m < n)`; `m <= p /\ n <= q ==> m + n <= p + q`; `m <= p /\ n < q ==> m + n < p + q`; `m < p /\ n <= q ==> m + n < p + q`; `m < p /\ n < q ==> m + n < p + q`; `(0 < m * n) <=> (0 < m) /\ (0 < n)`; `m <= n /\ p <= q ==> m * p <= n * q`; `~(m = 0) /\ n < p ==> m * n < m * p`; `(m * n) <= (m * p) <=> (m = 0) \/ n <= p`; `(m * p) <= (n * p) <=> (m <= n) \/ (p = 0)`; `(m * n) < (m * p) <=> ~(m = 0) /\ n < p`; `(m * p) < (n * p) <=> (m < n) /\ ~(p = 0)`; `(SUC m = SUC n) <=> (m = n)`; `m < n /\ p < q ==> m * p < n * q`; `n <= n * n`; `(P m n <=> P n m) /\ (m <= n ==> P m n) ==> P m n`; `(P m m) /\ (P m n <=> P n m) /\ (m < n ==> P m n) ==> P m y`; `((m < n ==> P m) ==> P n) ==> P n`; `~(EVEN n) <=> ODD n`; `~(ODD n) <=> EVEN n`; `EVEN n \/ ODD n`; `~(EVEN n /\ ODD n)`; `EVEN(m + n) <=> (EVEN m <=> EVEN n)`; `EVEN(m * n) <=> EVEN(m) \/ EVEN(n)`; `EVEN(m EXP n) <=> EVEN(m) /\ ~(n = 0)`; `ODD(m + n) <=> ~(ODD m <=> ODD n)`; `ODD(m * n) <=> ODD(m) /\ ODD(n)`; `ODD(m EXP n) <=> ODD(m) \/ (n = 0)`; `EVEN(SUC(SUC(0)) * n)`; `ODD(SUC(SUC(SUC(0)) * n))`; `(0 - m = 0) /\ (m - 0 = m)`; `PRE(SUC m - n) = m - n`; `SUC m - SUC n = m - n`; `n - n = 0`; `(m + n) - n = m`; `(m + n) - m = n`; `(m - n = 0) <=> m <= n`; `m - (m + n) = 0`; `n - (m + n) = 0`; `n <= m ==> ((m - n) + n = m)`; `(m + n) - (m + p) = n - p`; `(m + p) - (n + p) = m - n`; `m * (n - p) = m * n - m * p`; `(m - n) * p = m * p - n * p`; `!n. SUC n - SUC(0) = n`; `EVEN(m - n) <=> m <= n \/ (EVEN(m) <=> EVEN(n))`; `ODD(m - n) <=> n < m /\ ~(ODD m <=> ODD n)`; `0 < FACT n`; `1 <= FACT n`; `m <= n ==> FACT m <= FACT n`; `0 < x EXP n <=> ~(x = 0) \/ (n = 0)`; `x EXP m < x EXP n <=> SUC(SUC(0)) <= x /\ m < n \/ (x = 0) /\ ~(m = 0) /\ (n = 0)`; `x EXP m <= x EXP n <=> if x = 0 then (m = 0) ==> (n = 0) else (x = 1) \/ m <= n`; `~(p = 0) /\ m <= n ==> m DIV p <= n DIV p`; `P(PRE n) <=> n = SUC m \/ m = 0 /\ n = 0 ==> P m` ]