Skip to content
docs
Arxo ↗

Choose a sanction amount

For LLMs6 sections

I want to bind the sanction amount to explicitly given mitigating circumstances.

Unknown mitigation does not pick a number.

Incorrect form
// Смягчающее обстоятельство неизвестно: автоматически назначают 100.

Absence of information about mitigation is not a negative fact. The numbers 100 and 40 are a synthetic unit scale chosen by the author of two rules, not a built-in tariff.

Arxo Law
language "law.core" version "0.2";
package recipes.zh.r04 version "0.1.0";
namespace "urn:recipe:zh-violation:04";
entity Person;
relation enrolled(p: Person);
relation done(p: Person);
relation mitigated(p: Person);
relation amount(p: Person, units: Integer);
relation paid(p: Person, units: Integer);
rule Ordinary strict { for p: Person; when enrolled(p) and not mitigated(p); then amount(p, 100); }
rule Reduced strict { for p: Person; when enrolled(p) and mitigated(p); then amount(p, 40); }
rule Impose strict { for p: Person; for units: Integer; when amount(p, units);
then duty Fine { bearer p; achieve paid(p, units) during [@2026-09-01, @2026-09-10]; };
}
Facts and snapshotQuestionAnswer
mitigation established; 2026-09-13truth(amount(entity_ref("urn:recipe:zh-violation:04:p"), 40))truth_status == TRUE_ONLY;
mitigation refuted; 2026-09-13truth(amount(entity_ref("urn:recipe:zh-violation:04:p"), 100))truth_status == TRUE_ONLY;
no information; 2026-09-13positions()not positions_present();
paid on the reduced scale; 2026-09-13positions()position(Fine, SATISFIED);
established mitigation selects lower tariff
Arxo Law
test "established mitigation selects lower tariff" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert enrolled(entity_ref("urn:recipe:zh-violation:04:p")); assert mitigated(entity_ref("urn:recipe:zh-violation:04:p"));
}
evaluate truth(amount(entity_ref("urn:recipe:zh-violation:04:p"), 40));
expect truth_status == TRUE_ONLY;
expect evaluation_status == COMPUTED;
}
refuted mitigation keeps base tariff
Arxo Law
test "refuted mitigation keeps base tariff" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert enrolled(entity_ref("urn:recipe:zh-violation:04:p")); assert not mitigated(entity_ref("urn:recipe:zh-violation:04:p"));
}
evaluate truth(amount(entity_ref("urn:recipe:zh-violation:04:p"), 100));
expect truth_status == TRUE_ONLY;
expect evaluation_status == COMPUTED;
}
no data creates no position
Arxo Law
test "no data creates no position" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert enrolled(entity_ref("urn:recipe:zh-violation:04:p"));
}
evaluate positions();
expect not positions_present();
expect evaluation_status == COMPUTED;
}
payment on reduced scale satisfies
Arxo Law
test "payment on reduced scale satisfies" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert enrolled(entity_ref("urn:recipe:zh-violation:04:p")); assert mitigated(entity_ref("urn:recipe:zh-violation:04:p")); assert paid(entity_ref("urn:recipe:zh-violation:04:p"), 40);
}
evaluate positions();
expect position(Fine, SATISFIED);
expect evaluation_status == COMPUTED;
}

Diagnostic mutation then amount(p, 40); → then amount(p, "forty");: LDC-E2104. Semantic differences are pinned as separate scenes.

enrolled here means an established ground for imposing a sanction; the elements and causal link are given by the previous layer. Money units, rounding and upper bounds are covered by the calculation recipes. Two opposite facts about mitigation need a separate resolution.

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

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