Перейти к содержанию

Политика конечных скалярных входных данных

Статус

Реализованный скалярный контракт. Задача #62 определила политику, а задача #63 устранила неявные значения-сигналы и преобразование исключений в ноль в публичных скалярных операторах и встроенных вычислителях функций принадлежности.

Правило

Каждое проверяемое скалярное входное значение должно быть конечным; степень принадлежности дополнительно должна находиться в замкнутом интервале [0, 1]. Логические значения никогда не принимаются как скалярные числа. Исторический фасад принимает встроенные int и float. Современный API использует более широкий контракт numbers.Real, включая Fraction, и не преобразует допустимый ввод только ради проверки типа. Его публичный псевдоним типа — MembershipScalar.

Недопустимый ввод включает NaN, положительную и отрицательную бесконечность, True, False и нечисловые значения. Исторические операторы и вычислители функций принадлежности выбрасывают ValueError с понятным диагностическим сообщением. Современная скалярная проверка различает InvalidParameterTypeError (также TypeError) и InvalidParameterError (также ValueError); конструкторы аналитических семейств сохраняют документированную проверку параметров, совместимую с ValueError. Недопустимый ввод никогда не приводит к NaN, бесконечности или неявному сигналу None.

Область действия

  • FuzzyNOT, FuzzyNOTParabolic, FuzzyAND, FuzzyOR, TNorm и SCoNorm применяют правило для степени принадлежности.
  • Вспомогательные функции композиции проверяют каждую переданную степень принадлежности до вычисления.
  • Функции принадлежности принимают конечные вещественные координаты и конечные параметры, специфичные для семейства; ограничения области определяются отдельными контрактами функций.
  • Политика не преобразует строки, логические значения, Decimal или массивы. Прямой вызов пользовательского вычислителя сохраняет его собственное поведение; ScalarFuzzySet.Membership проверяет вход и возвращённую степень принадлежности. Исключения внутри пользовательских функций распространяются без изменений.

Проверяемые свидетельства

Тесты в tests/test_finite_number_policy.py проверяют границы публичных операторов и функций принадлежности, явное поведение ошибок, крайние конечные координаты и распространение внутренних программных ошибок. Проверки композиции находятся в tests/test_composition_validation.py. Современные контракты, зарегистрированные вещественные скаляры и категории ошибок покрыты в tests/test_public_typing_runtime.py, tests/test_fuzzy_set_operations.py и tests/test_domain_exceptions.py.