Множество общедоступных свойств функций имеют краткие имена. Например, ассоциативность, коммутативность, транзитивность и т.д.
Я создаю библиотеку для использования с QuickCheck, которая предоставляет сокращенные определения этих свойств и другие.
У меня есть вопрос о idempotence унарных функций. Функция f является идемпотентной iif ∀x. f x == f (f x).
Существует интересное обобщение этого свойства, для которого я изо всех сил пытаюсь найти такое же краткое имя. Чтобы избежать смещения названий людей, предложив их, я назову его P и дадим следующее определение:
Функция f обладает свойством P относительно g iif ∀x. f x == f (g x). Мы можем рассматривать это как обобщение идемпотентности путем переопределения идемпотентности в терминах P. Функция f является идемпотентной, если она обладает свойством P по отношению к себе.
Чтобы убедиться, что это полезное свойство, обратите внимание, что оно оправдывает правило перезаписи, которое может использоваться для реализации ряда общих оптимизаций. Это часто, но не всегда возникает, когда g является своего рода функцией канонизации. Некоторые примеры:
-
length
является P относительноmap
f
(для всех вариантов f) - Преобразование в CNF является P относительно преобразования в DNF (и наоборот)
- Нормализация Unicode для формирования NFC - это P относительно нормализации для формирования NFD (и наоборот)
-
minimum
является P относительно nub
Что бы вы назвали этим свойством?