OPERATIONS:Durch diese rekursive Definition ist die Funktion vollständig festgelegt; ihr Ergebnis läßt sich immer auf Grundterme reduzieren. Nach dem gleichen Schema lassen sich weitere nützliche Funktionen aufbauen.
append: list list list
RULES:
append(newlist, l) = l
append(cons(x, l1), l2) = cons(x, append(l1, l2))
Algebraische Spezifikationen sind schon lange bekannt. So sind die Grundterme des folgenden abstrakten Datentyps
ADT Nat ISgerade die natürlichen Zahlen; dieses System hat darüberhinaus noch andere Modelle. Die Forderung, daß die Zahl 1 nicht Nachfolger ist, und auch das Induktionsaxiom, das wir in unserem Formalismus nicht formulieren können, ergeben sich gerade durch die Beschränkung auf die Grundterme. Die arithmetischen Operationen erhalten wir in gewohnter Weise durch
SORTS: Nat
OPERATIONS:
eins: Nat
nach: Nat Nat
RULES:
nach(x) = nach(y) x = y
END Nat .
OPERATIONS:
add: Nat Nat Nat
mult: Nat Nat Nat
RULES:
add(x, eins) = nach(x)
add(x, nach(y)) = nach(add(x, y))
add(x, y) = add(y, x)
mult(x, eins) = x
mult(x, nach(y)) = add(mult(x, y), x)
mult(x, y) = mult(y, x)