docs← Back to article

Markdown for LLMs

Apply a default after producers

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

Download this articlePlain text ↗
# Apply a default after producers

## Intention

I want to apply the ordinary order until the exception has positive support.

## Incorrect form and why it stays silent

A strict reader cannot wait for a defeated producer by the same path:

```law title="Incorrect form"
rule Produce defeasible { for p: Person; when proof_ready(p); then exception(p); }
rule Default strict { for p: Person; when registered(p) and not_known(exception(p)); then ordinary(p); }
```

That is E4103: a hard error, not silent blindness to a strict producer.

## Correct form

```law
language "law.core" version "0.2";
package recipes.v.r03 version "0.1.0";
namespace "urn:recipe:v-negation:03";

entity Person;
relation registered(p: Person);
relation proof_ready(p: Person);
relation exception(p: Person);
relation ordinary(p: Person);
rule Produce strict {
    for p: Person;
    when proof_ready(p);
    then exception(p);
}
rule Default strict {
    for p: Person;
    when registered(p) and not_known(exception(p));
    then ordinary(p);
}
```

## Frozen execution scene

| Facts | Question | Answer |
|---|---|---|
| registered(a) | ordinary(a) | TRUE_ONLY |
| registered(a), proof_ready(a) | ordinary(a) | NEITHER |
| registered(a), not exception(a) | ordinary(a) | TRUE_ONLY |
| registered(a), exception(a) and not exception(a) | ordinary(a) | NEITHER |
| registered(a) | exception(a) | NEITHER |

## Counterfactual

teaches changes the producer's strength and requires E4103; adding a reverse producer of exception from ordinary forms a default cycle and yields E4102. Strict Produce in the correct scene finishes before Default.

## Boundary

`not_known` does not produce `not exception`. A complete registry is [Establish the absence of a registry record](/recipes/v-negation/registry-absence/). A late producer is rejected.

## Pitfall

The barrier lifts the reader above the strict producer of the same stratum, and proof_ready suppresses the default. A late producer is rejected.