latte-integers.minus
The subtraction (and opposite) defined on ℤ.
-
(- [n int] [m int])
(q/the (minus-unique n m))
Definition: Integer subtraction.
--
(-- [n int])
(- zero n)
Definition: The opposite of an integer.
assoc-minus-minus
(assoc-minus-minus [n int] [m int] [p int])
(= (- n (- m p)) (+ (- n m) p))
Theorem:
assoc-minus-minus-sym
(assoc-minus-minus-sym [n int] [m int] [p int])
(= (+ (- n m) p) (- n (- m p)))
Theorem:
assoc-minus-plus
(assoc-minus-plus [n int] [m int] [p int])
(= (- n (+ m p)) (- (- n m) p))
Theorem:
assoc-minus-plus-sym
(assoc-minus-plus-sym [n int] [m int] [p int])
(= (- (- n m) p) (- n (+ m p)))
Theorem:
assoc-plus-minus
(assoc-plus-minus [n int] [m int] [p int])
(= (+ n (- m p)) (- (+ n m) p))
Theorem:
assoc-plus-minus-sym
(assoc-plus-minus-sym [n int] [m int] [p int])
(= (- (+ n m) p) (+ n (- m p)))
Theorem:
minus-cancel
(minus-cancel [n int])
(= (- n n) zero)
Theorem:
minus-left-cancel
(minus-left-cancel [n int] [m int] [p int])
(==> (= (- n m) (- n p)) (= m p))
Theorem:
minus-one
(minus-one [n int])
(= (- n one) (pred n))
Theorem:
minus-opp
(minus-opp [n int] [m int])
(= (- n m) (- (-- m) (-- n)))
Theorem: A property about negation of opposites.
minus-opp-cancel
(minus-opp-cancel [n int] [m int])
(==> (= (-- n) (-- m)) (= n m))
Theorem: A cancellation law for subtraction of opposites.
minus-pos-neg
(minus-pos-neg [n int] [m int])
(==> (positive (- n m)) (negative (- m n)))
Theorem:
minus-pos-neg-conv
(minus-pos-neg-conv [n int] [m int])
(==> (negative (- m n)) (positive (- n m)))
Theorem:
minus-pos-neg-equiv
(minus-pos-neg-equiv [n int] [m int])
(<=> (positive (- n m)) (negative (- m n)))
Theorem:
minus-pred
(minus-pred [n int] [m int])
(= (- (pred n) m) (pred (- n m)))
Theorem:
minus-pred-succ
(minus-pred-succ [n int] [m int])
(= (- n (pred m)) (succ (- n m)))
Theorem:
minus-pred-succ-sym
(minus-pred-succ-sym [n int] [m int])
(= (succ (- n m)) (- n (pred m)))
Theorem:
minus-prop
(minus-prop [n int] [m int])
(= (+ (- n m) m) n)
Theorem: The defining property of subtraction.
minus-prop-cons
(minus-prop-cons [n int] [m int])
(= (- (+ n m) m) n)
Theorem: A consequence of minus-prop.
minus-right-cancel
(minus-right-cancel [n int] [m int] [p int])
(==> (= (- n p) (- m p)) (= n m))
Theorem:
minus-succ
(minus-succ [n int] [m int])
(= (- (succ n) m) (succ (- n m)))
Theorem:
minus-succ-pred
(minus-succ-pred [n int] [m int])
(= (- n (succ m)) (pred (- n m)))
Theorem:
minus-succ-pred-sym
(minus-succ-pred-sym [n int] [m int])
(= (pred (- n m)) (- n (succ m)))
Theorem:
minus-unique
(minus-unique [n int] [m int])
(q/unique (lambda [p int] (= (+ p m) n)))
Theorem: The unicity property of subtraction.
minus-zero
(minus-zero [n int])
(= (- n zero) n)
Theorem:
minus-zero-alt
(minus-zero-alt [m int] [n int])
(==> (= (- m n) zero) (= m n))
Theorem:
minus-zero-alt-conv
(minus-zero-alt-conv [m int] [n int])
(==> (= m n) (= (- m n) zero))
Theorem:
nat-split-opp
(nat-split-opp [n int])
(or (elem n nat) (elem (-- n) nat))
Theorem: A variant of nat splitting.
opp-and-zero
(opp-and-zero [n int])
(==> (and (elem n nat) (elem (-- n) nat)) (= n zero))
Theorem:
opp-eq
(opp-eq [m int] [n int])
(==> (= (-- m) n) (= m (-- n)))
Theorem:
opp-nat-split
(opp-nat-split [n int])
(==> (elem (-- n) nat) (or (= n zero) (negative n)))
Theorem:
opp-nat-split-conv
(opp-nat-split-conv [n int])
(==> (or (= n zero) (negative n)) (elem (-- n) nat))
Theorem:
opp-nat-split-equiv
(opp-nat-split-equiv [n int])
(<=> (elem (-- n) nat) (or (= n zero) (negative n)))
Theorem:
opp-neg-pos
(opp-neg-pos [n int])
(==> (negative n) (positive (-- n)))
Theorem:
opp-neg-pos-conv
(opp-neg-pos-conv [n int])
(==> (positive (-- n)) (negative n))
Theorem:
opp-neg-pos-equiv
(opp-neg-pos-equiv [n int])
(<=> (negative n) (positive (-- n)))
Theorem:
opp-neg-split
(opp-neg-split [n int])
(or (or (= n zero) (negative n)) (negative (-- n)))
Theorem: A split for integers using the opposite, using nat/negative.
opp-opp
(opp-opp [n int])
(= (-- (-- n)) n)
Theorem:
opp-plus
(opp-plus [n int] [m int])
(= (-- (+ n m)) (- (-- n) m))
Theorem:
opp-plus-opp
(opp-plus-opp [n int])
(= (+ (-- n) n) zero)
Theorem:
opp-pos-neg
(opp-pos-neg [n int])
(==> (positive n) (negative (-- n)))
Theorem:
opp-pos-neg-conv
(opp-pos-neg-conv [n int])
(==> (negative (-- n)) (positive n))
Theorem:
opp-pos-neg-equiv
(opp-pos-neg-equiv [n int])
(<=> (positive n) (negative (-- n)))
Theorem:
opp-pos-split
(opp-pos-split [n int])
(or (or (= n zero) (positive n)) (positive (-- n)))
Theorem: A split for integers using the opposite, using nat/positive.
opp-pred-succ
(opp-pred-succ [n int])
(= (-- (pred n)) (succ (-- n)))
Theorem:
opp-succ-pred
(opp-succ-pred [n int])
(= (-- (succ n)) (pred (-- n)))
Theorem:
opp-zero
(opp-zero)
(= (-- zero) zero)
Theorem:
plus-opp-minus
(plus-opp-minus [n int] [m int])
(= (+ n (-- m)) (- n m))
Theorem:
plus-zero-minus
(plus-zero-minus [n int] [m int])
(= (+ (- zero n) m) (- m n))
Theorem:
zero-opp-zero
(zero-opp-zero [n int])
(==> (= n zero) (= (-- n) zero))
Theorem:
zero-opp-zero-conv
(zero-opp-zero-conv [n int])
(==> (= (-- n) zero) (= n zero))
Theorem:
zero-opp-zero-equiv
(zero-opp-zero-equiv [n int])
(<=> (= n zero) (= (-- n) zero))
Theorem: