Status: current source files compile without proof escape hatches.
Verification command: run targeted rocq c commands under systemd-run
with MemoryMax and MemorySwapMax=0.
The NFA layer separates executable definitions from evidence-premise contracts:
Completeness.v proves edit-sequence and acceptance contracts when an
executable acceptance witness is supplied.Soundness.v proves edit-witness contracts when an explicit edit witness or
traced path carries the operation evidence.Soundness.v now uses extract_edit_sequence_full for position-only paths
and PathEntry traces when exact operation membership is required.Operations.v proves the bounded diagonal and well-formedness properties for
the Phase 1 phonetic operation set.Automaton.v, Transitions.v, and the complexity files keep the executable
NFA state-transition model and its structural invariants.This shape is intentional: plain AutomatonPath = list Position does not store
which operation produced each edge, so exact operation-membership proofs use
traced paths.
Run this from the repository root after proof edits:
rg -n "Admitted\\.|admit\\.|Axiom|Parameter|Conjecture|Hypothesis" \
docs/verification/grammar/theories/NFA \
rocq/liblevenshtein \
-g '*.v'
Expected result: no matches.
For the NFA theory files, refresh dependencies in this order when .vo files
are stale:
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Types.v
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Operations.v
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Automaton.v
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Transitions.v
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Completeness.v
systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 \
rocq c -Q docs/verification/core/theories Liblevenshtein.Core \
-Q docs/verification/grammar/theories Liblevenshtein.Grammar.Verification \
docs/verification/grammar/theories/NFA/Soundness.v
PathEntry traces or add an
explicit witness carrying the operation.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |