lawref.evaluator.defeasible
L1: defeasible/defeater, приоритеты и defeat — SPEC §104–§115.
Кандидаты по стратам §110/§111, defeat §107, surviving support §108
(candidate-level team §109), ambiguity-preserving BOTH §112, отчёты §115.
В конце каждой страты дозапускается strict closure (§111 шаг 1) — отсюда
единственная дуга к strict, обратной нет.
Functions
| Name | Description |
|---|---|
defeasible_closure | L1 (§104–§112): кандидаты defeasible/defeater по стратам §110/§111, |
prepare_defeasible | Установка поражаемого слоя — чистая функция от узлов программы: |
rule_ranks | Ранги §110 по одному CLIR-документу — вход для ворот. |
stratify | Ранг правила §110 (v1): глубина цепочки через defeasible-головы. |
META_STDattributemodule attribute#
META_STD = 'urn:law:std#'NORM_STDattributemodule attribute#
NORM_STD = 'urn:law:std#'defeasible_closurefunction#
def defeasible_closure(store: SupportStore, nodes: list[dict], legal_time: str, registry: ProofRegistry, issues: list[dict], limits: dict | None = None, env: Any = None, program_hash: str = '', input_hash: str = '', prepared: dict[str, Any] | None = None, prepared_strict: Any = None, state: dict | None = None, emit_prepared_issues: bool = True) -> list[dict]L1 (§104–§112): кандидаты defeasible/defeater по стратам §110/§111, defeat §107, surviving support §108 (candidate-level team §109), ambiguity-preserving BOTH §112; отчёты о конфликтах §115.
V1-объём: приоритеты — rule-level (§106) с транзитивным замыканием и детекцией цикла (PRIORITY_CONFLICT, без tie-break); тела — established- конъюнкты (default negation §113 — следующий срез); стратификация — по глубине цепочек defeasible-голов (цикл — NON_EXECUTABLE_UNSTRATIFIED).
prepare_defeasiblefunction#
def prepare_defeasible(nodes: list[dict]) -> dict[str, Any]Установка поражаемого слоя — чистая функция от узлов программы:
кандидаты §104 с конъюнктами и их предупреждения, замыкание приоритетов
§106, условные приоритеты, ранги §110 и их issues. Вид программы
(evaluator.prepared) считает её один раз на дату права; issues
воспроизводятся defeasible_closure в прежнем порядке и числе.
rule_ranksfunction#
def rule_ranks(nodes: list[dict]) -> dict[str, int]Ранги §110 по одному CLIR-документу — вход для ворот.
Повторяет отбор правил, который делает defeasible_closure
(_rule_filter_l1 отсеивает то, что v1 не исполняет), и потому видит
ровно то множество, которое участвует в конфликтных группах §111.
Диагностики отбора глушатся: ворота спрашивают о рангах, а о мёртвых
правилах докладывает verify/ci/gates/silence/check_dead_rules.py.
stratifyfunction#
def stratify(drules: list[tuple[dict, list]], issues: list[dict], derived: set[str] | frozenset[str] = frozenset(), chain: list[tuple[str, list[str]]] = ()) -> dict[str, int] | NoneРанг правила §110 (v1): глубина цепочки через defeasible-головы.
Извлечено из тела defeasible_closure БЕЗ изменения поведения, чтобы у
рангов был один носитель. Вторая копия этого цикла разошлась бы с первой
молча — тот же довод, по которому verify/ci/gates/silence/check_dead_rules.py переиспользует
rules.rule_execution_status, а не повторяет её.
Читатель снаружи один и важный: verify/ci/gates/silence/check_stratum_barrier.py. Приоритет
§116 разрешает конфликт ТОЛЬКО внутри страты (§111 собирает конфликтные
группы для каждой страты отдельно), поэтому объявленное ребро между
правилами РАЗНЫХ рангов не применяется никогда — и молчит при чистых
check, lower и воротах мёртвых правил. Считать ранги воротам
приходится теми же, что считает вывод, иначе они докладывали бы о
несуществующих дефектах либо молчали о настоящих.
None — программа нестратифицируема (§110): цикл через defeasible-
зависимости, вывод не выполняется.
chain — строго-позитивные рёбра программы (rules.strict_positive_chain),
errata E-0172: предикат, который строгая цепочка выводит из головы
поражаемого правила страты k, полон лишь к шагу 1 страты k + 1 §111, и
правило, читающее его в теле или выводящее его голову, стоит там же.
Пустой chain — прежние ранги.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.