The code is scanned into facts and read by the ROFL model of JavaScript. Every formal cell is part of one book that runs over it. A formal cell is written in sentences, the way a .rofl.md is; a rofl cell takes plain Datalog. ? S lists answers, never S is an invariant that holds when nothing answers, unsure S under it says what the invariant could not see, why S explains one. Files import each other with import ... from './x.js'. A natural cell is translated into a formal one when you run it. Shift+Enter runs.
No code: this notebook draws its own facts.