Package natural: The natural numbers

Information

namenatural
version1.51
descriptionThe natural numbers
authorJoe Hurd <joe@gilith.com>
licenseMIT
requiresbool
function
showData.Bool
Function
Number.Natural

Files

Defined Type Operator

Defined Constants

Theorems

even 0

odd 0

bit0 0 = 0

n. 0 n

n. n n

factorial 0 = 1

n. ¬(n < n)

n. 0 < suc n

n. n < suc n

n. n suc n

n. ¬(factorial n = 0)

n. ¬(suc n = 0)

n. n n * n

n. even n odd n

m. m < 0

n. pre (suc n) = n

n. 0 * n = 0

m. m * 0 = 0

n. 0 + n = n

m. m + 0 = m

m. m - 0 = m

n. n - n = 0

n. distance 0 n = n

n. distance n 0 = n

n. distance n n = 0

n. max 0 n = n

n. max n 0 = n

n. max n n = n

n. min 0 n = 0

n. min n 0 = 0

n. min n n = n

n. ¬(even n odd n)

n. even (2 * n)

n. bit1 n = suc (bit0 n)

n. ¬even n odd n

n. ¬odd n even n

m. m 0 = 1

m. m * 1 = m

n. n 1 = n

n. n div 1 = n

n. n mod 1 = 0

m. 1 * m = m

f. injective f ¬surjective f

m n. m m + n

m n. m max m n

m n. n m + n

m n. n max m n

m n. min m n m

m n. min m n n

n. odd (suc (2 * n))

m. suc m = m + 1

n. even (suc n) ¬even n

n. odd (suc n) ¬odd n

m. m 0 m = 0

n. 1 n = 1

n. suc n - 1 = n

n. 0 < n ¬(n = 0)

n. bit0 (suc n) = suc (suc (bit0 n))

m n. m > n n < m

m n. m n n m

m n. m * n = n * m

m n. m + n = n + m

m n. distance m n = distance n m

m n. max m n = max n m

m n. min m n = min n m

m n. m = n m n

m n. m < n m n

m n. m < n n m

m n. m n n < m

m n. m n n m

m n. distance m n m + n

m n. distance m (m + n) = n

m n. m + n - m = n

m n. m + n - n = m

m n. distance (m + n) m = n

m n. n * (m div n) m

n. factorial (suc n) = suc n * factorial n

n. n 2 = n * n

n. 2 * n = n + n

m n. ¬(m < n n < m)

m n. ¬(m < n n m)

m n. ¬(m n n < m)

m n. m < n ¬(m = n)

m n. ¬(m < n) n m

m n. ¬(m n) n < m

m n. m < suc n m n

m n. suc m n m < n

m. m = 0 n. m = suc n

n. even n n mod 2 = 0

n. ¬(n = 0) 0 div n = 0

n. ¬(n = 0) 0 mod n = 0

n. ¬(n = 0) n mod n = 0

m n. m < n m div n = 0

m n. m < n m mod n = m

m n. m n factorial m factorial n

m n. m + suc n = suc (m + n)

m n. suc m + n = suc (m + n)

m n. m < m + n 0 < n

m n. n < m + n 0 < m

m n. suc m = suc n m = n

m n. suc m < suc n m < n

m n. suc m suc n m n

m n. m + n = m n = 0

m n. m + n = n m = 0

m n. distance m n = 0 m = n

m n. distance (suc m) (suc n) = distance m n

n. odd n n mod 2 = 1

n. 0 n = if n = 0 then 1 else 0

n. ¬(n = 0) n div n = 1

m n. max m n = if m n then n else m

m n. min m n = if m n then m else n

m n. even (m * n) even m even n

m n. even (m + n) even m even n

m n. odd (m * n) odd m odd n

m n. m * suc n = m + m * n

m n. m suc n = m * m n

m n. suc m * n = m * n + n

m n. ¬(n = 0) m mod n < n

m n. ¬(n = 0) m div n m

m n. ¬(n = 0) m mod n m

n. even n m. n = 2 * m

m n. m n d. n = m + d

a b. (n. a * n b) a = 0

n. ¬(n = 0) pre n = n - 1

m n. m n m < n m = n

m n. n m n + (m - n) = m

m n. n m m - n + n = m

m n. m < n n < m m = n

m n. odd (m + n) ¬(odd m odd n)

m n. odd (m n) odd m n = 0

m n. m n n m m = n

n. odd n m. n = suc (2 * m)

m n. m < n d. n = m + suc d

m n. m < n m n ¬(m = n)

m n. even (m n) even m ¬(n = 0)

m n. m < suc n m = n m < n

m n. ¬(m = 0) m * n div m = n

m n. ¬(m = 0) m * n mod m = 0

x y n. x y x n y n

m n p. distance m p distance m n + distance n p

m n p. m * (n * p) = n * (m * p)

m n p. m * (n * p) = m * n * p

m n p. m + (n + p) = m + n + p

m n p. m (n * p) = (m n) p

m n p. m + n = m + p n = p

m n p. m + p = n + p m = n

m n p. m + n < m + p n < p

m n p. n + m < p + m n < p

m n p. m + n m + p n p

m n p. m + p n + p m n

m n p. distance (m + n) (m + p) = distance n p

p m n. distance (m + p) (n + p) = distance m n

m n p. (m * n + p) mod n = p mod n

m n p. m < n n < p m < p

m n p. m < n n p m < p

m n p. m n n < p m < p

m n p. m n n p m p

m n. n < m m - suc n = pre (m - n)

m n. n < m suc (m - suc n) = m - n

m n. n m suc (m - n) = suc m - n

m n. n m (m - n = 0 m = n)

m n. n m pre (suc m - n) = m - n

m n. n m suc m - suc n = m - n

m n. m suc n m = suc n m n

m n. 0 < m * n 0 < m 0 < n

m n. m * n = 0 m = 0 n = 0

m n. m + n = 0 m = 0 n = 0

m n. distance (distance m n) (distance m (n + 1)) = 1

P. P 0 (n. P n P (suc n)) n. P n

m n. distance m n = if m n then n - m else m - n

m n. n m (even (m - n) even m even n)

m n. ¬(n = 0) (m div n = 0 m < n)

m n. ¬(n = 0) m mod n mod n = m mod n

m n. m = m * n m = 0 n = 1

m n. m = n * m m = 0 n = 1

n x. 0 < x n ¬(x = 0) n = 0

m n. m * n = m m = 0 n = 1

m n. n * m = m m = 0 n = 1

m n. m n = 0 m = 0 ¬(n = 0)

m n p. m * (n + p) = m * n + m * p

m n p. m * distance n p = distance (m * n) (m * p)

m n p. m (n + p) = m n * m p

m n p. (m + n) * p = m * p + n * p

p m n. distance m n * p = distance (m * p) (n * p)

p m n. (m * n) p = m p * n p

m n. n m (odd (m - n) ¬(odd m odd n))

x n. x n = 1 x = 1 n = 0

P. (n. (m. m < n P m) P n) n. P n

e f. ∃!fn. fn 0 = e n. fn (suc n) = f (fn n) n

a b c. (n. a * n b * n + c) a b

m n. ¬(n = 0) (m div n) * n + m mod n = m

m n. m * n = 1 m = 1 n = 1

P. (n. P n) n. P n m. m < n ¬P m

m n p. n m m + p - (n + p) = m - n

m n p. p n m + n - (m + p) = n - p

m n p. m * n = m * p m = 0 n = p

m n p. m * p = n * p m = n p = 0

x y n. x n = y n x = y n = 0

m n p. m * n m * p m = 0 n p

m n p. m * p n * p m n p = 0

x y n. x n y n x y n = 0

p. (n. p n) p ((minimal) p) m. m < (minimal) p ¬p m

a b n. ¬(a = 0) (n b div a a * n b)

m n p. ¬(p = 0) m * (n div p) m * n div p

m n p. m * n < m * p ¬(m = 0) n < p

m n p. m * p < n * p m < n ¬(p = 0)

x y n. x n < y n x < y ¬(n = 0)

x y n. x < y ¬(n = 0) x n < y n

m n p. ¬(m = 0) n < p m * n < m * p

m n p. ¬(p = 0) m n m div p n div p

m n p. ¬(p = 0) p m n div m n div p

a b n. ¬(a = 0) b a * n b div a n

m n. ¬(n = 0) (m mod n = 0 q. m = q * n)

m n p q. distance m p distance (m + n) (p + q) + distance n q

m n p q. m = n + q * p m mod p = n mod p

m n p q. m < n p < q m * p < n * q

m n p q. m < p n < q m + n < p + q

m n p q. m < p n q m + n < p + q

m n p q. m n p q m * p n * q

m n p q. m p n < q m + n < p + q

m n p q. m p n q m + n p + q

m n p q. distance (m + n) (p + q) distance m p + distance n q

m n p q. distance m n + distance n p q distance m p q

m n p. n m (m - n) * p = m * p - n * p

m n p. p n m * (n - p) = m * n - m * p

m n p. distance m n = p m + p = n n + p = m

m n p. distance m n p m n + p n m + p

n. (k m. odd m n = 2 k * m) ¬(n = 0)

m n p. ¬(n = 0) m * (p mod n) mod n = m * p mod n

m n p. ¬(n = 0) (m mod n) * p mod n = m * p mod n

m n p. ¬(n = 0) (m mod n) p mod n = m p mod n

a b n. ¬(n = 0) (a * n + b) div n = a + b div n

m n p. ¬(m * p = 0) m * n div m * p = n div p

m n p. ¬(n * p = 0) m div n div p = m div n * p

m n p. ¬(n * p = 0) m mod n * p mod n = m mod n

m n p. ¬(p = 0) m + p n m div p < n div p

m n. (q. m = n * q) if n = 0 then m = 0 else m mod n = 0

m n q r. m = q * n + r r < n m div n = q

m n q r. m = q * n + r r < n m mod n = r

a b n. ¬(a = 0) (b div a n b < a * (n + 1))

p. (b. n. p n b) a b. n. n * p n a * n + b

m n p. ¬(n = 0) (m mod n) * (p mod n) mod n = m * p mod n

a b n. ¬(n = 0) (a mod n + b mod n) mod n = (a + b) mod n

m n p. ¬(m * p = 0) m * n mod m * p = m * (n mod p)

m n p. ¬(n * p = 0) m div n mod p = m mod n * p div n

x p m n. ¬(p = 0) x mod p m mod p n = x mod p min m n

p x y. p (distance x y) d. (x = y + d p d) (y = x + d p d)

P. (x. P x) (M. x. P x x M) m. P m x. P x x m

a b c d. ¬(b = 0) b * c < (a + 1) * d c div d a div b

p q. (b. i. p i q i + b) b n. i. n i p i q i + b

x m n. x m = x n if x = 0 then m = 0 n = 0 else x = 1 m = n

x m n. x m x n if x = 0 then m = 0 n = 0 else x = 1 m n

m n p q r s.
    distance m n r distance p q s
    distance m p distance n q + (r + s)

x m n. x m < x n 2 x m < n x = 0 ¬(m = 0) n = 0

a b c d. b * c < (a + 1) * d a * d < (c + 1) * b a div b = c div d

a b n.
    ¬(n = 0)
    ((a + b) mod n = a mod n + b mod n (a + b) div n = a div n + b div n)

p a b.
    p 0 0 = 0 (m n. p m n a * (m + n) + b)
    c. m n. p m n c * (m + n)

Input Type Operators

Input Constants

Assumptions

¬

¬

t. t t

p. p

t. t ¬t

(¬) = λp. p

() = λp. p ((select) p)

a. x. x = a

a. ∃!x. x = a

t. (x. t) t

t. (x. t) t

t. (λx. t x) = t

(λp. p) = λp. p

() = λp. p = λx.

t. ¬¬t t

t. ( t) t

t. (t ) t

t. t

t. t t

t. t

t. t t

t. t t t

t. t

t. t t

t. t

t. t t

t. t

t. t t

t. t

t. t t t

t. ( t) ¬t

t. (t ) ¬t

t. t ¬t

() = λp q. p q p

t. (t ) (t )

t1 t2. (if then t1 else t2) = t2

t1 t2. (if then t1 else t2) = t1

p x. p x p ((select) p)

f y. (let x y in f x) = f y

x y. x = y y = x

x y. x = y y = x

t1 t2. t1 t2 t2 t1

t1 t2. t1 t2 t2 t1

() = λp q. (λf. f p q) = λf. f

f. surjective f y. x. y = f x

p. ¬(x. p x) x. ¬p x

p. ¬(x. p x) x. ¬p x

() = λp. q. (x. p x q) q

t1 t2. ¬(t1 t2) t1 ¬t2

t1 t2. ¬t1 ¬t2 t2 t1

t1 t2. ¬(t1 t2) ¬t1 ¬t2

t1 t2. ¬(t1 t2) ¬t1 ¬t2

f g. (x. f x = g x) f = g

p a. (x. x = a p x) p a

p a. (x. a = x p x) p a

() = λp q. r. (p r) (q r) r

p. (x y. p x y) y x. p x y

p q. (x. p q x) p x. q x

p q. (x. p q x) p x. q x

p q. p (x. q x) x. p q x

p q. p (x. q x) x. p q x

p q. (x. p x q) (x. p x) q

p q. (x. p x q) (x. p x) q

p q. (x. p x) q x. p x q

p q. (x. p x) q x. p x q

p q. (x. p x) q x. p x q

p q. (x. p x) q x. p x q

x y z. x = y y = z x = z

t1 t2 t3. (t1 t2) t3 t1 t2 t3

p. (x. y. p x y) y. x. p x (y x)

f. injective f x1 x2. f x1 = f x2 x1 = x2

(∃!) = λp. () p x y. p x p y x = y

p q. (x. p x q x) (x. p x) x. q x

p q. (x. p x q x) (x. p x) x. q x

p q. (x. p x q x) (x. p x) x. q x

p q. (x. p x) (x. q x) x. p x q x

p q. (x. p x) (x. q x) x. p x q x

p1 p2 q1 q2. (p1 p2) (q1 q2) p1 q1 p2 q2

p1 p2 q1 q2. (p1 p2) (q1 q2) p1 q1 p2 q2

p1 p2 q1 q2. (p2 p1) (q1 q2) (p1 q1) p2 q2

p. (x. ∃!y. p x y) f. x y. p x y f x = y

p c x y. p (if c then x else y) (c p x) (¬c p y)

p. (∃!x. p x) (x. p x) x x'. p x p x' x = x'

let a o
      (let h
           let p r
               let p s
                   (let f o r = o s in
                    λg.
                      (let h f in
                       λi.
                         (λj. j h i) =
                         λk. k ((λd. d) = λd. d) ((λd. d) = λd. d)) g f)
                     (r = s) in
               p = (λq. (λd. d) = λd. d) in
           p = (λq. (λd. d) = λd. d) in
       λi. (λj. j h i) = λk. k ((λd. d) = λd. d) ((λd. d) = λd. d))
        (let t
             let p u
                 let v y u = o y in
                 let b w
                     (let f
                          let p x
                              (let f v x in
                               λg.
                                 (let h f in
                                  λi.
                                    (λj. j h i) =
                                    λk.
                                      k ((λd. d) = λd. d)
                                        ((λd. d) = λd. d)) g f) w in
                          p = (λq. (λd. d) = λd. d) in
                      λg.
                        (let h f in
                         λi.
                           (λj. j h i) =
                           λk. k ((λd. d) = λd. d) ((λd. d) = λd. d)) g
                        f) w in
                 b = (λc. (λd. d) = λd. d) in
             p = (λq. (λd. d) = λd. d) in
         (let f t in
          λg.
            (let h f in
             λi. (λj. j h i) = λk. k ((λd. d) = λd. d) ((λd. d) = λd. d))
              g f) (let b d d in b = λc. (λd. d) = λd. d)) in
  let b e
      (let f
           let l n
               (let f a n in
                λg.
                  (let h f in
                   λi.
                     (λj. j h i) =
                     λk. k ((λd. d) = λd. d) ((λd. d) = λd. d)) g f) e in
           l = (λm. (λd. d) = λd. d) in
       λg.
         (let h f in
          λi. (λj. j h i) = λk. k ((λd. d) = λd. d) ((λd. d) = λd. d)) g
         f) e in
  b = λc. (λd. d) = λd. d