

For programmers:
Write a function once. Run it forward, backward, or with missing inputs. My language lets you write ordinary Scheme-style pure functions and automatically reinterpret them as constraint relations. The same definition can compute outputs, solve for inputs, or fill in partial computations.
For PL researchers:
A relational reinterpretation of a pure Scheme subset. Programs are written in a functional style using integers, arithmetic, predicates, and and/or control flow. The compiler derives a constraint representation that supports inversion, partial evaluation, and relational execution without requiring a separate logic-language encoding.

lean->prolog->scheme
CURIOSITY -> PAPER.BOOK / PAPERWHITE.KINDLE / MP3.KINDLE / PHONE.KINDLE -> DRAWING.TABLET -> PAPER -> TYPEWRITER -> EMAIL -> PDF -> MINDKASTEN -> KINDLE ->
Combat
speed or size every effectiveness
The Story Engine
A Mix-and-Match Storytelling Game
How to Play
Choose a mechanic from the menu.
Follow its rule to test your new story detail.
Add the accepted detail to the story.
Pass play to the next player.
The Mechanics Menu
------------------
Wordprocessor
Speak your phrase aloud.
Count syllables on your fingers in groups of 3.
If the final syllable = 1 or 2 → Accepted.
If the final syllable = 3 → Rejected. Try again.
Begin always from the finger position you ended on the last time you used this mechanic.
Luckflow
Start with 3 luck.
Make a detail. Roll any die.
Odd → Change detail and roll again, or pay 4 luck to force it through.
Even → Detail accepted.
If accepted (even or forced), roll the die again. On a result of 1, roll once more to determine how much luck you gain.
What If...
Say "What if..." and add a twist.
The next player must adapt the story accordingly.
Threadweaver
Choose a past story detail.
Add a new one that connects by shared noun, cause-effect, or location.
If the new detail shares at least two elements (e.g. same character + same place), gain 1 luck.
If it shares three or more, gain 2 luck.