Skip to content

lawref.amend_guards

Структурные шаблоны amend: типизация и разбиение окна §87, DECISION-0179.

Значения условий исполняет обычный evaluate. Здесь только проверка формы операции и построение канонического CLIR; алиасы типов не разворачиваются.

Attributes

NameDescription
GUARD_OPSNo description.
OPPOSITENo description.
ORDEREDNo description.
TEMPORAL_OPNo description.

Functions

NameDescription
guard_ruleNo description.
split_exclusion¬(A∧B) → две непересекающиеся strict-ветви: ¬A; A∧¬B.
split_fromУзкий шаблон: strict без входящих ссылок, конечное полуоткрытое окно.
valid_conditionNo description.

GUARD_OPSattributemodule attribute#

GUARD_OPS = {'compare_threshold', 'restrict_interval', 'exclude_conjunction'}

OPPOSITEattributemodule attribute#

OPPOSITE = {'eq': 'ne', 'ne': 'eq', 'lt': 'ge', 'ge': 'lt', 'le': 'gt', 'gt': 'le'}

ORDEREDattributemodule attribute#

ORDERED = {
  urn:law:std#{n} for n in ('Integer', 'Natural', 'Decimal', 'Money', 'Quantity', 'Date', 'Instant', 'Rational')
}

TEMPORAL_OPattributemodule attribute#

TEMPORAL_OP = 'exclude_enum_value_from'

guard_rulefunction#

def guard_rule(rule: dict, edits: list[dict], enums: dict) -> dict | None

split_exclusionfunction#

def split_exclusion(document: dict, rule: dict, edit: dict, enums: dict) -> list[dict] | None

¬(A∧B) → две непересекающиеся strict-ветви: ¬A; A∧¬B.

Прямой body/or не входит в исполнимый срез. Для N условий строим N ветвей с общим прежним телом; не меняем движковую семантику формул.

split_fromfunction#

def split_from(document: dict, rule: dict, edit: dict, enums: dict) -> list[dict] | None

Узкий шаблон: strict без входящих ссылок, конечное полуоткрытое окно.

Старый id сохраняется до D, новый id с исключением — с D. Оба узла сохраняют scope/anchors/interpretations и лежат внутри прежнего окна.

valid_conditionfunction#

def valid_condition(rule: dict, condition: dict, enums: dict) -> bool

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.