latte-nats.plus

The addition defined on ℕ.

+

(+ [m nat] [n nat])
((plus m) n)

Definition: The function that adds m to n.

add-prop

(add-prop [m nat])
(lambda
 [g (==> nat nat)]
 (and (= (g zero) m) (forall [n nat] (= (g (succ n)) (succ (g n))))))

Definition: The property of the addition of m to a natural integer.

add-unique

(add-unique [m nat])
(q/unique (add-prop m))

Theorem: The unicity of the addition function, through add-prop.

associative-plus

(associative-plus)
(alg/associative +)

Theorem:

cancel-left-plus

(cancel-left-plus)
(alg/cancel-left +)

Theorem:

cancel-right-plus

(cancel-right-plus)
(alg/cancel-right +)

Theorem:

commutative-plus

(commutative-plus)
(alg/commutative +)

Theorem:

identity-left-plus

(identity-left-plus)
(alg/identity-left + zero)

Theorem:

identity-plus

(identity-plus)
(alg/identity + zero)

Theorem:

identity-right-plus

(identity-right-plus)
(alg/identity-right + zero)

Theorem:

monoid-plus

(monoid-plus)
(alg/monoid + zero)

Theorem:

plus

(plus [m nat])
(q/the (add-unique m))

Definition: The function that adds m to a natural integer

plus-any-zero-left

(plus-any-zero-left [m nat] [n nat])
(==> (= (+ m n) zero) (= m zero))

Theorem:

plus-any-zero-right

(plus-any-zero-right [m nat] [n nat])
(==> (= (+ m n) zero) (= n zero))

Theorem:

plus-assoc

(plus-assoc [m nat] [n nat] [p nat])
(= (+ m (+ n p)) (+ (+ m n) p))

Theorem:

plus-comm-assoc

(plus-comm-assoc [m nat] [n nat] [p nat])
(= (+ (+ m n) p) (+ (+ m p) n))

Theorem:

plus-commute

(plus-commute [m nat] [n nat])
(= (+ m n) (+ n m))

Theorem:

plus-left-cancel

(plus-left-cancel [m nat] [n nat] [p nat])
(==> (= (+ m n) (+ m p)) (= n p))

Theorem:

plus-left-cancel-conv

(plus-left-cancel-conv [m nat] [n nat] [p nat])
(==> (= m n) (= (+ p m) (+ p n)))

Theorem:

plus-prop

(plus-prop [m nat])
(and
 (= ((plus m) zero) m)
 (forall [n nat] (= ((plus m) (succ n)) (succ ((plus m) n)))))

Theorem:

plus-refl-zero

(plus-refl-zero [n nat] [k nat])
(==> (= (+ n k) n) (= k zero))

Theorem:

plus-right-cancel

(plus-right-cancel [m nat] [n nat] [p nat])
(==> (= (+ m p) (+ n p)) (= m n))

Theorem:

plus-right-cancel-conv

(plus-right-cancel-conv [m nat] [n nat] [p nat])
(==> (= m n) (= (+ m p) (+ n p)))

Theorem:

plus-succ

(plus-succ [m nat] [n nat])
(= (+ m (succ n)) (succ (+ m n)))

Theorem:

plus-succ-swap

(plus-succ-swap [m nat] [n nat])
(= (+ (succ m) n) (succ (+ m n)))

Theorem:

plus-succ-sym

(plus-succ-sym [m nat] [n nat])
(= (succ (+ m n)) (+ m (succ n)))

Theorem:

plus-zero

(plus-zero [m nat])
(= (+ m zero) m)

Theorem:

plus-zero-swap

(plus-zero-swap [m nat])
(= (+ zero m) m)

Theorem:

unique-identity-plus

(unique-identity-plus)
(q/unique (alg/identity-def nat +))

Theorem: