Every .lino file in this folder is a self-contained Relative Meta-Logic (RML)
knowledge base. They are language-agnostic: the same file is executed by
both the JavaScript and the Rust implementations and is required to produce
identical output.
The canonical expected output for each file lives in
expected.lino, itself written in Links Notation so the
contract between implementations is expressed in the same language as the
examples. Both implementations have automated tests that walk this folder
and assert their results against that file, so any implementation drift
fails CI in both languages.
# JavaScript
node js/src/rml-links.mjs examples/classical-logic.lino
# Rust (debug)
cargo run --manifest-path rust/Cargo.toml -- examples/classical-logic.lino
# Rust (release)
cargo build --release --manifest-path rust/Cargo.toml
./rust/target/release/rml examples/classical-logic.lino| File | Topic |
|---|---|
classical-logic.lino |
Standard Boolean (2-valued) logic |
automatic-sequences.lino |
Pecan-style automatic-sequence theorem decision |
propositional-logic.lino |
Probabilistic propositional logic with independent events |
fuzzy-logic.lino |
Continuous-valued (Zadeh) fuzzy logic |
ternary-kleene.lino |
Three-valued Kleene logic |
belnap-four-valued.lino |
Belnap four-valued logic with both/neither |
liar-paradox.lino |
Liar paradox in [0, 1] (resolves to 0.5) |
liar-paradox-balanced.lino |
Liar paradox in [-1, 1] (resolves to 0) |
bayesian-inference.lino |
Bayes' theorem on a medical-test scenario |
bayesian-network.lino |
Directed acyclic Bayesian network |
markov-chain.lino |
Weather-state Markov chain |
markov-network.lino |
Cyclic Markov network with three-way cliques |
self-reasoning.lino |
Meta-logic reasoning about its own logic system |
dependent-types.lino |
Dependent type system with universes, Π-types, λ |
lambda-calculus.lino |
Lambda calculus via HOAS, with forall desugaring to Pi |
demo.lino |
Custom operator configuration (avg-based AND) |
flipped-axioms.lino |
Arbitrary probability assignments |
If you intentionally change an example or fix a real difference between the two implementations, regenerate the canonical fixtures:
node examples/generate-expected.mjsThen rerun both test suites:
(cd js && npm test)
(cd rust && cargo test)Both must pass before the change can be merged.