A specification of the abstract datatype natural numbers. | Lecture 1 - slide 10 : 22 Program 2 |
Type natnum [] declare constructors null () -> natnum; succ (natnum) -> natnum; others plus(natnum,natnum) -> natnum; minus(natnum, natnum) -> natnum; leq(natnum,natnum) -> bool; for all i,j in natnum; let plus(null(),j) = j; plus(succ(i),j) = succ(plus(i,j)); leq(null(),j) = true; leq(succ(i), null()) = false; leq(succ(i), succ(j)) = leq(i,j); minus(i, null()) = i; minus(null() , succ(j)) = error; minus(succ(i), succ(j)) = minus(i,j); end end natnum. |