Как называется это обобщение идемпотентности? - PullRequest
13 голосов
/ 01 декабря 2011

Многие часто используемые свойства функций имеют краткие имена.Например, ассоциативность , коммутативность , транзитивность и т. Д.

Я создаю библиотеку для использования с 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

Что бы вы назвалиэто свойство?

1 Ответ

14 голосов
/ 01 декабря 2011

Можно сказать, что map f сохраняет length или что length инвариантен при map f ing. Так как насчет:

  • г является f-консервативным.
  • f инвариантен относительно (применяя) г.
...