Floor 1 · 3 exhibits
The Logic Playground
Snap gates together and you've built the maths a computer is made of.
Boolean logic and truth tables — AND / OR / NOT / XOR compose into arithmetic. Then logic put to work: safety rules that must hold (a bug becomes a compile error) and one spec proven identical in three languages.
The Logic Playground
Snap AND/OR/NOT/XOR gates together, flip the switches, and build a half-adder.
Flip a switch, watch a lamp light. Snap a few gates together, and you've built the exact maths a computer is made of — everything here is genuinely computed, nothing is faked.
How deep would you like to go?
show me · the plain-English storyLoad a circuit and the truth table fills itself in — every possible setting of the switches, with the lamp value the engine computes for each. Flip a switch and watch which row you land on, and why the lamp is on or off: it always comes down to one honest rule per gate.
Wow — Every lamp lights because a real logic engine evaluated your wiring — and the truth table isn't written down anywhere: it's filled in live by running that engine over every possible combination of the switches. Build the half-adder and you've built the seed of the adder inside every CPU on Earth.
Try this — Turn the dial to 🛠️, pick “Build a Half-Adder”, then drop an XOR and an AND on the board and wire both switches into each. The moment SUM really equals A⊕B and CARRY really equals A·B, it celebrates — on the real truth table, not a scripted “well done”.
What's really happening · A genuine, from-scratch logic-circuit engine: your board is a real directed graph of INPUT switches, AND/OR/NOT/XOR/NAND/NOR gates and OUTPUT lamps. A topological evaluation computes each node's real boolean value (AND = a && b, XOR = a ≠ b, …); a wire lights only when its source genuinely evaluated to true; and the truth table is derived by enumerating every input combination and running that same evaluator — never hand-authored. A feedback loop is detected and flagged honestly, not animated or hung; an unconnected input is treated as off and surfaced, never invented. The challenges (including the half-adder) are graded by comparing your circuit's real truth-table columns to the target boolean functions across every row. It's an idealised, instantaneous model — no gate delays, no fan-out limits, no electrical timing. Local-first and free: nothing you build leaves your browser.
Read the full lab reportA Bug That Becomes a Compile Error
A real lexer + recursive-descent parser + static checker.
Break a safety rule in the code, and watch it turn red with a line number — before anything ever runs.
How deep would you like to go?
show me · the plain-English storyA real lexer and parser compile the spec on every keystroke; a set of static checks then walk the resulting tree for safety invariants a PA/announcement system has to hold — bounded durations, a mandatory fallback, no unbounded loops. Break one and it's flagged with a line number, live.
Wow — Every red diagnostic below is a real AST walk over a real parse of your exact text — not a string search looking for scary-sounding words.
Try this — Click one of the “Inject:” buttons to load a real broken spec, read its line-numbered diagnostic, then edit it yourself until the badge flips to “certifiable ✓.”
What's really happening · A small, real, invented DSL and static checker built for this demo — not the shipped rail PA/PIDS system's real (protected) validation code — grounded in the class of invariant that report names explicitly: bounded durations, a mandatory fallback on the highest-priority channel, and no unbounded loop that could starve every other emergency announcement. Every check below is a real AST walk over a real parse, not a string match.
Read the full lab reportOne Spec, Three Targets
One small typed drawing becomes SQL, TypeScript and JSON Schema — provably the same thing.
Write the truth once, and let machines write it three more times — then prove all three still say exactly the same thing.
How deep would you like to go?
show me · the plain-English storyOne small typed spec generates a real SQL table, a TypeScript interface and a JSON Schema document, live. Each is reverse-compiled back and hashed — the three hashes matching is the proof that no generator drifted from the source of truth.
Wow — The proof isn't “it looks right”: each generated target is reverse-compiled back to a canonical form and hashed — three identical hashes or it fails, loudly.
Try this — Change one field's type in the spec and watch all three generated targets — and all three hashes — update together. Then imagine a 240-line spec becoming a 50,000-line application the same way.
What's really happening · A deliberately small, faithful sibling of FBL's real mechanism: one typed spec, deterministic generators, and a round-trip hash equality check. The production FBL (17 emitters, byte-identical builds) is the lab's protected work; this demo shows the logic of it, honestly sized for a browser tab.
Read the full lab report