Markdown for LLMs
LDC-E4109 — An interval that ends before it starts
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# LDC-E4109 — An interval that ends before it starts
## What it means
A time interval whose two bounds share one precision must run forward:
the end cannot precede the start. Such an interval covers no time at all,
so the compiler refuses the declaration carrying it.
Swap the two bounds so the start comes first. Bounds at different
precisions stay silent — their order is settled outside the statics.
## Example
```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
entity A;
relation p(a: A) kind institutional;
relation q(a: A) kind institutional;
rule r1 strict { for a: A; when p(a); effective [@2026-05-01, @2026-04-01]; then q(a); }
```
## Fix
```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
entity A;
relation p(a: A) kind institutional;
relation q(a: A) kind institutional;
rule r1 strict { for a: A; when p(a); effective [@2026-04-01, @2026-05-01]; then q(a); }
```
## Engine message
The engine reports this in its own wording:
```text
example.law:8:49: error LDC-E4109: interval ending @2026-04-01 is before start @2026-05-01 (§193)
```
## Related
- [Time](/constructs/time/) — how instants and intervals are written.