docs← Back to article

Markdown for LLMs

Establish a violation

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# Establish a violation

## Intention

I want to distinguish proven non-performance from missing information.

## Incorrect form and why it stays silent

```text title="Incorrect form"
// Срок истёк, done(p) в деле нет: expect position(Main, VIOLATED).
```

A violation requires established absence of achievement. Missing a record does not give negative support; the counterfactual removes exactly the explicit negation.

## Correct form

```law
language "law.core" version "0.2";
package recipes.zh.r01 version "0.1.0";
namespace "urn:recipe:zh-violation:01";

entity Person;
relation enrolled(p: Person);
relation done(p: Person);
rule Primary defeasible { for p: Person; when enrolled(p);
    then duty Main { bearer p; achieve done(p) during [@2026-09-01, @2026-09-10]; };
}
```

## Frozen execution scene

| Facts and snapshot | Question | Answer |
|---|---|---|
| failure established; 2026-09-13 | `positions()` | `position(Main, VIOLATED);` |
| non-performance not presented; 2026-09-13 | `positions()` | `position(Main, UNDETERMINED);` |
| performance established; 2026-09-13 | `positions()` | `position(Main, SATISFIED);` |
| mistaken expectation of a violation; 2026-09-13 | `positions()` | `position(Main, VIOLATED);`; expected FAIL |

```law
test "established failure violates" {
    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:01:p")); assert not done(entity_ref("urn:recipe:zh-violation:01:p"));
    }
    evaluate positions();
    expect position(Main, VIOLATED);
    expect evaluation_status == COMPUTED;
}
```

```law
test "unclaimed non-performance stays undetermined" {
    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:01:p"));
    }
    evaluate positions();
    expect position(Main, UNDETERMINED);
    expect evaluation_status == COMPUTED;
}
```

```law
test "established performance 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:01:p")); assert done(entity_ref("urn:recipe:zh-violation:01:p"));
    }
    evaluate positions();
    expect position(Main, SATISFIED);
    expect evaluation_status == COMPUTED;
}
```

```law
test "mistaken violation expectation" {
    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:01:p"));
    }
    evaluate positions();
    expect position(Main, VIOLATED);
    expect evaluation_status == COMPUTED;
}
```

## Counterfactual

Diagnostic mutation deleting the duty-holder line: LDC-E1305. Semantic differences are pinned as separate scenes.

## Boundary

Here the explicit non-performance fact applies to the whole achievement window. Raw action records are first bound to time; absence of an event in an incomplete journal is not such a fact.