Skip to content

LoLa Language Reference — Documentation Coverage Inventory

D1 snapshot. Updated whenever the compiler changes a public surface.

This table maps every user-visible language feature to its canonical source locations and its documentation status in docs/reference/language.md.

Legend: - Lexer — defined in lola/lexer.py - Parser — recognized by lola/parser.py - Sema — enforced by lola/sema.py - SMT — encoded by lola/smt.py - Types — defined in lola/types.py - Operators — defined in lola/operators.py - Status: ✅ documented · 🔲 stub · ❌ missing


Program-structure keywords

Feature Lexer token Parser production Ref § Tutorial example Status
FUNCTION_BLOCK FUNCTION_BLOCK parse_function_block §3.2 intro §2
END_FUNCTION_BLOCK END_FUNCTION_BLOCK same §3.2
FUNCTION FUNCTION parse_function §3.3, §9 intro §8
END_FUNCTION END_FUNCTION same §3.3, §9
EXTERN FUNCTION EXTERN parse_extern_function §3.4, §12 intro §9
BY BY extern function §12.3 extern/ examples
VAR_INPUT VAR_INPUT _parse_var_block §4.1 intro §2
VAR_OUTPUT VAR_OUTPUT same §4.2 intro §2
VAR VAR same §4.3 intro §5
VAR_STATE VAR_STATE EXTERN_REAL_CONTRACT only §4.4, §3.5 t2/external_pid
END_VAR END_VAR all var blocks §4
IMPLEMENTATION IMPLEMENTATION parse_function_block §3.2 intro §2
END_IMPLEMENTATION END_IMPLEMENTATION same §3.2
CONTINUOUS_REFERENCE CONTINUOUS_REFERENCE parse_function_block §13.5 t2/lowpass.lola
END_CONTINUOUS_REFERENCE END_CONTINUOUS_REFERENCE same §13.5
EXTERN_REAL_CONTRACT EXTERN_REAL_CONTRACT parse_extern_real_contract §3.5 t2/external_pid
END_EXTERN_REAL_CONTRACT END_EXTERN_REAL_CONTRACT same §3.5
SEMANTICS SEMANTICS EXTERN_REAL_CONTRACT §3.5 t2/external_pid
END_SEMANTICS END_SEMANTICS same §3.5

Contract keywords

Feature Lexer token Parser production Ref § Tutorial example Status
INVARIANT INVARIANT FB / ERC §8.1 intro §4
ASSUME ASSUME FB §8.2 intro §7
REQUIRE REQUIRE FB / FUNCTION / ERC §8.3 guide-verified
ENSURE ENSURE FUNCTION / EXTERN FUNCTION §8.4, §9.2 guide-verified
VARIANT VARIANT FUNCTION §8.5, §9.3 algorithms/
RULE RULE FB §8.6

State-transition keywords

Feature Lexer token Parser production Ref § Tutorial example Status
ON ON _parse_output_rules §7.2 motor.lola
OFF OFF same §7.2 motor.lola
HOLD HOLD same §7.2 motor.lola
SET SET same §7.2 counter.lola
WHEN WHEN same §7.3 motor.lola
OTHERWISE OTHERWISE same §7.3 motor.lola
PRIO PRIO same §7.4 motor.lola
:= (derived) ASSIGN parse_function_block §7.5 intro §5

Expression keywords

Feature Lexer token Parser production Ref § Tutorial example Status
AND AND _parse_and §6.3 motor.lola
OR OR _parse_or §6.3 motor.lola
XOR XOR _parse_xor §6.3 bits/
NOT NOT _parse_not §6.3, §6.5 motor.lola
TRUE TRUE _parse_primary §2.3.1
FALSE FALSE _parse_primary §2.3.1
IF/THEN/ELSE IF, THEN, ELSE _parse_primary §6.6 pressure.lola
HELD HELD _parse_primary §11.1 two_timers.lola
ELAPSED ELAPSED _parse_primary §11.2
CLAMP CLAMP _parse_primary §6.13 intro §10
LEN LEN _parse_primary §6.14 strings/
DT DT _parse_primary §6.15 intro §9
MOD identifier by text _parse_mul §6.2

Primitive types

Type Width Family Lexer token Ref § Tutorial example Status
BOOL BOOL BOOL §5.1 motor.lola
SINT 8 signed INTEGER SINT §5.2 t1/sint_saturate
INT 16 signed INTEGER INT §5.2 counter.lola
DINT 32 signed INTEGER DINT §5.2 dint/dint_scale
LINT 64 signed INTEGER LINT §5.2 algorithms/
USINT 8 unsigned INTEGER USINT §5.3 t1/unsigned_counters
UINT 16 unsigned INTEGER UINT §5.3 t1/unsigned_counters
UDINT 32 unsigned INTEGER UDINT §5.3 t1/unsigned_counters
ULINT 64 unsigned INTEGER ULINT §5.3 t1/unsigned_counters
BYTE 8 bitstring BITSTRING BYTE §5.4 bits/quality_byte
WORD 16 bitstring BITSTRING WORD §5.4 bits/status_word
DWORD 32 bitstring BITSTRING DWORD §5.4 mtp/anaview
LWORD 64 bitstring BITSTRING LWORD §5.4 t1/lword_flags
REAL REAL REAL §5.5, §13 t2/lowpass
LREAL REAL LREAL §5.5, §13
TIME TIME TIME §5.6 iec/ton
WSTRING WSTRING WSTRING §5.7 strings/device_tag

Named constants

Constant Value Ref § Status
SINT_MIN −128 §2.3.4
SINT_MAX 127 §2.3.4
INT_MIN −32768 §2.3.4
INT_MAX 32767 §2.3.4
DINT_MIN −2147483648 §2.3.4
DINT_MAX 2147483647 §2.3.4
LINT_MIN −9223372036854775808 §2.3.4
LINT_MAX 9223372036854775807 §2.3.4
USINT_MIN 0 §2.3.4
USINT_MAX 255 §2.3.4
UINT_MIN 0 §2.3.4
UINT_MAX 65535 §2.3.4
UDINT_MIN 0 §2.3.4
UDINT_MAX 4294967295 §2.3.4
ULINT_MIN 0 §2.3.4
ULINT_MAX 18446744073709551615 §2.3.4

Type conversion builtins

Function src → dst Ref § Status
SINT_TO_INT SINT → INT §5.10
INT_TO_SINT INT → SINT §5.10
INT_TO_DINT INT → DINT §5.10
DINT_TO_INT DINT → INT §5.10
INT_TO_LINT INT → LINT §5.10
LINT_TO_INT LINT → INT §5.10
DINT_TO_LINT DINT → LINT §5.10
LINT_TO_DINT LINT → DINT §5.10
SINT_TO_USINT SINT → USINT §5.10
USINT_TO_SINT USINT → SINT §5.10
INT_TO_UINT INT → UINT §5.10
UINT_TO_INT UINT → INT §5.10
DINT_TO_UDINT DINT → UDINT §5.10
UDINT_TO_DINT UDINT → DINT §5.10
LINT_TO_ULINT LINT → ULINT §5.10
ULINT_TO_LINT ULINT → LINT §5.10
USINT_TO_UINT USINT → UINT §5.10
UINT_TO_USINT UINT → USINT §5.10
UINT_TO_UDINT UINT → UDINT §5.10
UDINT_TO_UINT UDINT → UINT §5.10
UDINT_TO_ULINT UDINT → ULINT §5.10
ULINT_TO_UDINT ULINT → UDINT §5.10

Binary operators (operator matrix)

Operator Permitted types Ref § Status
+ signed int, unsigned int, REAL/LREAL, bitstring (exp.) §6.2
- same §6.2
* same §6.2
/ same §6.2
MOD signed int, unsigned int, bitstring (exp.) — NOT REAL §6.2
AND BOOL, bitstrings §6.3
OR BOOL, bitstrings §6.3
XOR BOOL, bitstrings §6.3
= all primitives §6.4
<> all primitives §6.4
< numeric (not BOOL, not WSTRING) §6.4
<= numeric §6.4
> numeric §6.4
>= numeric §6.4

Unary operators

Operator Permitted types Ref § Status
NOT BOOL, bitstrings §6.3, §6.5
unary - signed int, REAL/LREAL §6.5

Aggregate and constructor expressions

Feature Syntax Ref § Example Status
SUM SUM(i IN lo..hi : body) §6.10 arrays/threshold_stats
COUNT COUNT(i IN lo..hi : body) §6.10 arrays/
ALL ALL(i IN lo..hi : body) §6.10 arrays/
ANY ANY(i IN lo..hi : body) §6.10 arrays/
EXISTS EXISTS(i IN lo..hi : body) §6.10
MIN (agg) MIN(i IN lo..hi : body) §6.10 arrays/
MAX (agg) MAX(i IN lo..hi : body) §6.10 arrays/
ARRAY (ctor) ARRAY(i IN lo..hi : body) §6.11 arrays/
SORT SORT(array-name) §6.12 algorithms/decl_sort
CLAMP CLAMP(x, lo, hi) §6.13 analog/
LEN LEN(wstr) §6.14 strings/
DT DT §6.15 intro §9
HELD HELD(cond, pt) §11.1 iec/ton
ELAPSED ELAPSED(cond, pt) §11.2
IF expr IF c THEN a ELSE b §6.6 pressure.lola

Profiles

Profile CLI flag Ref § Status
DEFAULT --profile default §17.1
PILOT --profile pilot §17.2
FLOAT64_REPR --profile float64 §17.3

SSFC keywords

Added in D7 (2026-08-17). These keywords extend the language surface covered by §21 of reference/language.md and by the docs/concepts/ and docs/how-to/ pages below.

Feature Lexer token Parser production Ref § Tutorial example Status
SSFC SSFC parse_ssfc §21 intro §21.1
END_SSFC END_SSFC same §21
INITIAL STATE INITIAL, STATE _parse_state §21.1 intro §21.1
STATE … END_STATE STATE, END_STATE same §21.1 intro §21.1
TERMINAL STATE TERMINAL same §21.6 intro §21.6
SUPERSTATE … END_SUPERSTATE SUPERSTATE _parse_superstate §21.4 intro §21.4
TRANSITION TO … WHEN TRANSITION, TO, WHEN _parse_transition §21.1 intro §21.1
EN: / DU: / EX: EN, DU, EX _parse_lifecycle §21.2 intro §21.2
PARALLEL … END_PARALLEL PARALLEL _parse_parallel §21.5 intro §21.5
REGION … END_REGION REGION same §21.5 intro §21.5
JOIN FROM … TO JOIN, FROM same §21.5 intro §21.5
WIRING … END_WIRING WIRING _parse_wiring §21.7 intro §21.7
inst* (star-wiring) _parse_wiring §21.7 how-to/compose-components
State.X .X field sema §21.3 intro §21.3
State.T_elapsed .T_elapsed field sema §21.3 intro §21.3
__ssfc_dt identifier _parse_wiring §21.7 how-to/compose-components
ASSUME (SSFC) ASSUME parse_ssfc §21.6 intro §21.9
INVARIANT (state) INVARIANT _parse_state §21.6

A1 ownership analysis terms

These terms appear in lola/ssfc_ownership.py and are documented in reference/assurance.md and concepts/ownership-and-effects.md.

Term Source Concepts page How-to Assurance ref Status
OwnershipClass ssfc_ownership.py concepts/ownership-and-effects.md how-to/audit-signal-ownership.md reference/assurance.md
SINGLE_WRITER same same same same
EXCLUSIVE_MULTI_WRITER same same same same
COMPATIBLE_MULTI_WRITER same same same same
CONFLICTING same same same same
UNKNOWN same same same same
analyze_ownership() same same same same
OwnershipReport same same same same
ComponentEffect same same same same
conflict_free() same same same same
analysis_complete() same same same same
is_clean() same same same same

A2 recovery analysis terms

These terms appear in lola/ssfc_recovery.py and are documented in reference/assurance.md and concepts/recovery-and-progress.md.

Term Source Concepts page How-to Assurance ref Status
EvidenceStrength ssfc_taxonomy.py concepts/recovery-and-progress.md reference/assurance.md
PROVED same same same
PROVED-CONDITIONAL same same same
NOT-PROVED same same same
NOT-REFUTED same same same
UNKNOWN same same same
ASSUMED same same same
analyze_recovery() ssfc_recovery.py same how-to/prove-safe-recovery.md same
RecoveryClaim same same same same
RecoveryEvidence same same same same
RecoveryReport same same same same
PossibleSucc(M) same same same
no_stall(M) same same same
Universal attractor same same same
Attractor rank / bound_scans same same same same
Deletion test (assumptions_used) same same same same

D7 documentation files

Pages added in the D7 documentation track (2026-08-17).

File Type Covers
reference/assurance.md Reference EvidenceStrength, all T4.5–T7 structural claims, A1 OwnershipClass + API + policy gates, A2 claim levels + formulas + RecoveryClaim fields
concepts/component-model.md Explanation FB/SSFC equal-rank composition, WIRING block, persistent semantics, dt forwarding
concepts/ownership-and-effects.md Explanation A1: lifecycle co-activation, OwnershipClass meanings, transitive component effects, conflict_free() vs analysis_complete()
concepts/recovery-and-progress.md Explanation A2: four claim levels, PossibleSucc, universal attractor construction and soundness, BOUNDED rank, deletion test
how-to/compose-components.md How-to FB-in-FB, FB-in-SSFC WIRING, star-wiring, SSFC-in-SSFC with __ssfc_dt
how-to/audit-signal-ownership.md How-to Run A1, read classifications, fix CONFLICTING, transitive effects, CI gate
how-to/prove-safe-recovery.md How-to 7-step: choose states, declare ASSUME, run A2, read four levels, inspect assumptions_used, BOUNDED for WCRT, NOT_PROVED as design finding

Known gaps

All previously-listed gaps were closed in the post-T2 documentation pass (2026-08-14):

Feature Section Status
Composition (VAR, instance, wiring) §10 ✅ documented (§10.1–10.6)
Array OF FB §10.4 ✅ documented
WSTRING capacity constraint proof §4.5 ✅ Z3-axiom semantics added
Physical unit validation §4.7 ✅ text was complete; stub label removed
Grammar BNF §18 ✅ full BNF derived from parser
REAL overflow analysis / gate §13.4 ✅ gate table + fail-closed semantics
Engineering Error Report §13.6 ✅ new section with budget decomposition
Definedness obligations (div/mod) §6.2 ✅ table + path-sensitivity
PERMUTATION_OF proof obligations §9.5 ✅ four forms + comprehension proof