Markdown for LLMs
Two incompatible duties
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Two incompatible duties
## Intention
I want to name the incompatibility of the goals of two duties of one person.
## Incorrect form and why it stays silent
```text title="Incorrect form"
// Разные имена целей first и second доказывают несовместимость.
```
A difference of text is not a proof. A scene with explicit incompatible on the templates yields a conflict; without it both duties exist without established incompatibility.
## Correct form
```law
language "law.core" version "0.2";
package recipes.a.r15 version "0.1.0";
namespace "urn:recipe:a-positions:15";
entity Person;
relation registered(p: Person);
relation done(p: Person);
relation first(p: Person);
relation second(p: Person);
rule A strict { for p: Person; when registered(p); then duty First { bearer p; achieve first(p) during [@2026-09-01, @2026-09-10]; }; }
rule B strict { for p: Person; when registered(p); then duty Second { bearer p; achieve second(p) during [@2026-09-01, @2026-09-10]; }; }
```
## Frozen execution scene
| Facts and snapshot | Question | Answer |
|---|---|---|
| different goals without a proof; 2026-09-05 | `positions()` | `position(First, ACTIVE); expect position(Second, ACTIVE);` / `COMPUTED` |
| explicit incompatibility; 2026-09-05 | `positions()` | `position(First, ACTIVE); expect position(Second, ACTIVE);` / `UNRESOLVED_NORMATIVE_CONFLICT` |
```law
test "different goals coexist without proof" {
given {
context {
legal_time @2026-09-05;
decision_time @2026-09-05T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert registered(entity_ref("urn:recipe:a-positions:15:p"));
}
evaluate positions();
expect position(First, ACTIVE); expect position(Second, ACTIVE);
expect evaluation_status == COMPUTED;
}
```
```law
test "explicit incompatibility conflicts" {
given {
context {
legal_time @2026-09-05;
decision_time @2026-09-05T09:00:00+05:00;
knowledge_time @2026-09-30T09:00:00+05:00;
timezone "Asia/Almaty";
}
assert registered(entity_ref("urn:recipe:a-positions:15:p"));
}
evaluate positions();
expect position(First, ACTIVE); expect position(Second, ACTIVE);
expect evaluation_status == UNRESOLVED_NORMATIVE_CONFLICT;
expect issue(UNRESOLVED_NORMATIVE_CONFLICT);
}
```
The case of the second scene is passed in full through `caseJson`; the standard incompatibility relation is given by its full StableId, not by a same-named local predicate.
```json
{
"assertions": [
{
"evidence": [],
"id": "urn:recipe:a-positions:15#assert-h14a3223b85ac0852ce472da8ca121bb261291552e0839ad764dff592b0631586",
"kind": "assertion",
"literal": {
"args": [
{
"id": "urn:recipe:a-positions:15:p",
"kind": "entity_ref"
}
],
"kind": "literal",
"polarity": "positive",
"predicate": "urn:recipe:a-positions:15#registered"
},
"origin": "source_asserted",
"package": "urn:recipe:a-positions:15"
},
{
"evidence": [],
"id": "urn:recipe:a-positions:15#assert-h29a06e0bbdfbbe1f4a5d94530230aec295c75efb75b5e9963f1cbada2325261a",
"kind": "assertion",
"literal": {
"args": [
{
"id": "urn:recipe:a-positions:15#First",
"kind": "const_ref"
},
{
"id": "urn:recipe:a-positions:15#Second",
"kind": "const_ref"
}
],
"kind": "literal",
"polarity": "positive",
"predicate": "urn:law:std#incompatible"
},
"origin": "source_asserted",
"package": "urn:recipe:a-positions:15"
}
],
"context": {
"decisionTime": "2026-09-05T09:00:00+05:00",
"knowledgeTime": "2026-09-30T09:00:00+05:00",
"legalTime": "2026-09-05",
"timezone": "Asia/Almaty"
},
"options": {}
}
```
## Counterfactual
Mutation: `bearer p;` → ``; rejection LDC-E1305. Additional counterfactuals are shown as separate scenes.
## Boundary
Incompatibility applies only with one bearer and overlapping windows. A solver needs a pinned profile and a checkable certificate; here an explicit relation is used.