Expand description
FOL → runnable Rust model-checker / temporal monitor.
Compiles a first-order (optionally temporal) formula into a self-contained,
reusable Rust module: a World you populate with individuals + facts, and a
holds(...) that evaluates the rule against it — so a rule/invariant can be
encoded once and used against your own state.
- Quantifiers: ∀→
.all, ∃→.anyoverWorld::domain. - Predicates: table lookups (
World::pred). - Events (Neo-Davidsonian, e.g. “read”):
∃e. read(e) ∧ Agent(e,x) ∧ Theme(e,y)→ an existential over the domain treating events as first-class entities. - Temporal (
always/eventually/next/until): a finite-trace monitor over&[World](Always→all states, Eventually→any, …) plus an incrementalMonitor. Pure O(trace) evaluation — no SMT, nostd::time, no randomness, WASM-safe. (The native automaton path islogicaffeine_verify::automata, which carries a Z3 crate dep; this mirrors its semantics WASM-safely.)
Functions§
- fol_
to_ model_ checker - Emit a self-contained Rust rule module for
premises ⊨ goal(emptypremises= check the single formulagoal).english/folare echoed as doc comments. - fol_
to_ model_ checker_ module - Like
fol_to_model_checker, but emits NO demofn main— the form bundled into an imperative program’smod proven(which has its ownmain). Produces only theWorld+holds(+Monitor) library items.