docs← Back to article

Markdown for LLMs

Liberty of one's own action

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

Download this articlePlain text ↗
# Liberty of one's own action

## Intention

I want to permit an action of the liberty holder themselves.

## Incorrect form and why it stays silent

```text title="Incorrect form"
then liberty Apply { holder p; window [@2026-09-01, @2026-09-10]; };
```

Without action it is not named what is permitted. If the content of the right is another person's action, a duty with a beneficiary is needed, not liberty.

## Correct form

```law
language "law.core" version "0.2";
package recipes.a.r05 version "0.1.0";
namespace "urn:recipe:a-positions:05";

entity Person;
relation registered(p: Person);
relation done(p: Person);
relation apply(p: Person);
rule R strict { for p: Person; when registered(p);
    then liberty Apply { holder p; action apply(p); window [@2026-09-01, @2026-09-10]; };
}
```

## Frozen execution scene

| Facts and snapshot | Question | Answer |
|---|---|---|
| liberty active; 2026-09-05 | `positions()` | `position(Apply, ACTIVE);` / `COMPUTED` |
| the action did not follow from the permission; 2026-09-05 | `truth(apply(entity_ref("urn:recipe:a-positions:05:p")))` | `truth_status == NEITHER;` / `COMPUTED` |
| the window ended; 2026-09-13 | `positions()` | `position(Apply, EXPIRED);` / `COMPUTED` |

```law
test "liberty active inside window" {
    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:05:p"));
    }
    evaluate positions();
    expect position(Apply, ACTIVE);
    expect evaluation_status == COMPUTED;

}
```

```law
test "permission grants no action fact" {
    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:05:p"));
    }
    evaluate truth(apply(entity_ref("urn:recipe:a-positions:05:p")));
    expect truth_status == NEITHER;
    expect evaluation_status == COMPUTED;

}
```

```law
test "liberty expires after window" {
    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 registered(entity_ref("urn:recipe:a-positions:05:p"));
    }
    evaluate positions();
    expect position(Apply, EXPIRED);
    expect evaluation_status == COMPUTED;

}
```

## Counterfactual

Mutation: `action apply(p);` → ``; rejection LDC-E1305. Additional counterfactuals are shown as separate scenes.

## Boundary

An explicit liberty is a strong permission. Absence of a prohibition is a separate query — see [Not prohibited as a query](/recipes/a-positions/weak-permission/); this position does not derive the fact apply and does not create someone else's duty.