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