--
You received this message because you are subscribed to the Google Groups "minikanren" group.
To unsubscribe from this group and stop receiving emails from it, send an email to minikanren+unsubscribe@googlegroups.com.
To post to this group, send email to minik...@googlegroups.com.
Visit this group at https://groups.google.com/group/minikanren.
For more options, visit https://groups.google.com/d/optout.
You've made some good observations. I haven't thought of this in terms of threshold reads before, but what you're describing sounds like the implementation of deferred goals in some MK variants.Deferred goals are resumed when the variables they depend on become known, which should be able to support dynamic interleaving, as in your interpreter/type-inferencer example.
It's not working well enough to be useful yet.
You've made some good observations. I haven't thought of this in terms of threshold reads before, but what you're describing sounds like the implementation of deferred goals in some MK variants.Deferred goals are resumed when the variables they depend on become known, which should be able to support dynamic interleaving, as in your interpreter/type-inferencer example.Yep, that sounds like a threshold read. What does "known" mean? Fully ground, or just non-fresh?
It's not working well enough to be useful yet.Interesting; what are its shortcomings?
I agree with you that there seem to be many similarities between LVars
and miniKanren! I think you could build a miniKanren-like system on
top of an LVars-like system, and also, as you point out, mix ideas
between the two systems.
the concepts of lattices ... [static analysis] [...]
When I was looking for connections with Lindsey and Ryan, years ago ...
the LVars formalism was missing a feature or two that I wanted for implementing miniKanren-in-LVars.
I agree with Greg that there is a connection between these ideas and delayed goals
This is definitely worth thinking about more! Here is my challenge to
you: using the latest version of LVish, implement miniKanren (or
microKanren) using LVars! I'll bet you can do it now!
The one thing that's not clear to me is how you do disjunction and multiple results. Can you clone the store? IIRC the Haskell library implements the key data structures backend by mutable data on the plain ol' heap, which suggests "no".The key concepts of LVars could be implemented by an alist/path-copying-HAMT/etc. backing; in that case disjunction appears easier.
I appreciate the encouragement, but it'll have to come after my current toy projects, which are (1) a miniKanren in TypeScript (working-but-messy, but for one well-understood bug); (2) a miniKanren search tree visualizer, perhaps growing out of no. 1; and (3) some kind of propositional calculus workbench, with a theorem prover, axiom independence prover and soundness checker, tautology enumerator just for shits and giggles, perhaps some flavor of datalog to query streams of formulae; all it needs is a raison d'être and plenty of time :DI think it would be interesting to combine the top-down proof search strategy of my current theorem prover with the bottom-up approach of BFS-ish iterated condensed detachment. Anyways, that's veering off topic.
These projects sound pretty interesting. I'm interested in hearing about them in more detail, if you're willing to share. A lot of it sounds on-topic for this group.