docs← Back to article

Markdown for LLMs

LDC-E1345 — Parallel state with one region

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

Download this articlePlain text ↗
# LDC-E1345 — Parallel state with one region

## What it means

A parallel state runs regions side by side, so it needs at least two:
one region is just a sequential state wearing a heavier spelling, and
the toolchain would emit a shape its own gates reject. A `parallel`
block with a single region stops the compiler at the state.

A join faces the same honesty rule from the other side: a join with no
regions joins nothing, and a quorum larger than the region count can
never be reached. Either shape stops the compiler at the join.

The repair is to give the parallel state its plural meaning — two or
more regions — or to write the sequential state plainly. Joins count
only regions that exist.

## Example

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
event Filed {
    tenant: Tenant;
}
procedure Solo(t: Tenant) {
    state Start initial;
    state Work parallel {
        region Only {
            state A initial;
            state B terminal;
            transition Go {
                from A;
                to B;
                on Filed;
            }
        }
    }
    state Done terminal;
    transition Begin {
        from Start;
        to Work;
        on Filed;
    }
    transition End {
        from Work;
        to Done;
        on Filed;
    }
}
```

## Fix

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
event Filed {
    tenant: Tenant;
}
procedure Solo(t: Tenant) {
    state Start initial;
    state Work parallel {
        region Left {
            state A initial;
            state B terminal;
            transition Go {
                from A;
                to B;
                on Filed;
            }
        }
        region Right {
            state C initial;
            state D terminal;
            transition Go2 {
                from C;
                to D;
                on Filed;
            }
        }
    }
    state Done terminal;
    transition Begin {
        from Start;
        to Work;
        on Filed;
    }
    transition End {
        from Work;
        to Done;
        on Filed;
    }
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:11:11: error LDC-E1345: состояние "Work": `parallel` с одной областью отвергается — составному состоянию нужно не меньше двух областей (§162.1); до выдачи IR не допускается
```

## Related

- [Procedures](/constructs/procedure/) — states, transitions, and how a procedure runs.
- [LDC-E1311](/diagnostics/LDC-E1311/) — a procedure needs exactly one initial state.