часткові функції
Специфікація всякого реалістичного прикладу, навіть такого простого як стеки, неминуче стикається з проблемами не всюди певних операцій: деякі операції застосовні не до всіх можливих елементів вихідних множин. Наприклад, це має місце для функцій remove і item: не можна видалити елемент з пустого стека, і у порожнього стека немає верхнього елементу.
Вирішення цієї проблеми, використане в наведеній вище специфікації, полягає в тому, щоб визначити ці функції як часткові. Функція з початкової множини X в результуюче безліч Y є частковою. якщо вона визначена не для всіх елементів X. Функція, яка не є частковою, називається повною. Простим прикладом часткової функції в звичайному математики є функція звернення дійсних чисел inv, значення якої на дійсне число x одно
Оскільки inv не визначена при x = 0, ми можемо визначити її як часткову функцію на множині R всіх дійсних чисел:
Щоб вказати, що функція часткова, використовується перекреслена стрілка, а звичайна стрілка буде означати, що функція свідомо повна.
Областю (визначення) часткової функції типу є підмножина тих елементів X, для яких ця функція має деяке значення. У нашому прикладі областю функції inv є R -, тобто безліч дійсних чисел, відмінних від 0.
У деяких випадках функцію put теж бажано описувати як часткову, наприклад, це потрібно в таких реалізаціях як МАССІВ_ВВЕРХ і МАССІВ_ВНІЗ, які підтримують виконання лише кінцевого числа поспіль операцій put для кожного заданого стека. Це насправді корисна вправа - пристосувати специфікацію STACK до того, щоб вона описувала обмежені стеки кінцевого обсягу, оскільки в наведеному вище вигляді вона не містить ніяких обмежень на розміри стеків.