One of my projects this week has been writing a road-painting game which will eventually surface in some form, largely at the prompting of my brother a few weeks ago but I am just getting to it now. Perhaps only to my own and ratxue's delights, it continues my exploration of maverick acl2. To resemble my brother's idea, I'm writing it for compilation targets that ecl matches. QUICK CLARIFICATION OF ACRONYMS acl2 is an *automatic* theorem prover; a computational logic for an applicative subset of common lisp ecl embeddable common lisp is a common lisp compiler that is just a C library, libecl. Since C is ubiquitous, this is a way of easily getting common lisp programs *anywhere* such as if one desired it, the proprietary apple store, the proprietary steam store, the proprietary google store for example if this was the only way to get the program onto a non-free device. If you wanted to embed ecl in golang, one could compile the ecl to a C lib and use the C lib in golang, which is supported. The big C dependency is the Boehm garbage collector. ECL conses quite a lot, leaning on garbage collection. END OF CLARIFICATION An idea that came to me was the reusability of theorems to infer truths you couldn't personally reach, the magical value-adding of acl2's automatic nature implying natural feature reuse. Imagine that a game is a collection of capabilities and a puzzle where the puzzle contents and capabilities imply a way of reaching the next level. defthm the idea that the player has the capability to reveal unknown locations, and has some unknown locations that if revealed allow the character to reach the next level. So I could do some higher level reasoning about a space of games using the same lemmas - imagine the memory card-flipping game, or cutting grass in a walking simulator in order to find a dropped key. This would be cooler if I had implemented these already, but this was an exciting conceptual discovery for me. Call the capabilities acl2-compatible lambda forms and the game state an acl2 single threaded object acted upon by those lambda forms. Then I could have a theorem about a permuted set of features I hadn't personally thought of putting together that the character has the capabilities to act on the level (single threaded object) to advance in the game. Single threaded objects in acl2 are a generalisation of its early von neumann state in theorems, used in some examples with a non-canonical #'seq acl2 macro which is essentially a forward pipe operator (seq stobj do-this then-this and-this finally-this) As used in :doc stobj-example-1 #|addendum If for some reason you know R, imagine magrittr (I'm not going to explain R's implementation but arbitrary strings can be new infix operators) bad analogy: > add-1 "%>%" add-2 "%>%" add-3 "%<%" 4 10 the number four was a stobj here ;p |# This pushes me to jettison non-acl2 common lisp, such as progn forms (though seq is basically that) and my dear clos. The exploration continues.