data INTEGER : Typeadd : INTEGER -> INTEGER -> INTEGERmult : INTEGER -> INTEGER -> INTEGERplusZeroRightNeutral : (m : INTEGER) -> m + Z = mplusCommutative : (m : INTEGER) -> (n : INTEGER) -> m + n = n + mcastPlus : (m : Nat) -> (n : Nat) -> the INTEGER (cast (m + n)) = cast m + cast nunfoldPS : (m : Nat) -> PS m = 1 + cast munfoldNS : (m : Nat) -> NS m = -1 - cast mdifference : Nat -> Nat -> INTEGERdifferenceZeroRight : (n : Nat) -> difference n 0 = cast nminusSuccSucc : (m : Nat) -> (n : Nat) -> the INTEGER (cast (S m) - cast (S n)) = cast m - cast nunfoldDifference : (m : Nat) -> (n : Nat) -> difference m n = cast m - cast nnegateInvolutive : (m : INTEGER) -> negate (negate m) = mnegatePlus : (m : INTEGER) -> (n : INTEGER) -> negate (m + n) = negate m + negate nnegateDifference : (m : Nat) -> (n : Nat) -> negate (difference m n) = difference n mminusZeroRight : (m : INTEGER) -> m - Z = mplusInverse : (m : INTEGER) -> m - m = ZplusAssociative : (m : INTEGER) -> (n : INTEGER) -> (p : INTEGER) -> m + (n + p) = (m + n) + p