This should be compiled to a flat list of facts:
(declare hilyan-hope)
(declare footnote-constraint)
(let [t universal-timestamp]
(said AndrewOMartin t
(status hoping hilyan
(- t (minutes 37))
hilyan-hope))
(said google (undefined-past)
(let [knol (gensym)]
(not (unit knol))))
(let [knol (gensym)]
(single-atomic-fact knol)))
(def hilyan-hope
(let [next-wiki-generation (gensym)
fact-unit (gensym)
article (gensyn)]
(introduces next-wiki-generation fact-unit)
(underlies next-wiki-generation fact-unit)
(footnote-constraint fact-unit)
(underlies fact-unit article)
(cause fact-unit (separate verification-wars edit-wars))))
(def footnote-constraint [fact-unit]
(let [knol (gensym)]
(!= knol fact-unit)))
The DSL could be improved :)
Edit: So a couple of things about this exercise: yes, it took me more time (and space) than your phrase. On the other hand, I specified some extra information. Some ambiguities about your phrase needed to be explicit, so that's a win for a more formal language. Also, there's some more effort involved, so I could have the time to think more about what I say. It would be great to have an interactive tool to think and write in a more formal language, even if it is not meant to be compiled to assembler.
I have a side project that touches this tangentially (the code is made up, though!), but I can't find a lot of time for it :(
Does anybody know if something like this exist? Somethig like a wiki/REPL/mindmap sandbox for concepts.