Hi Will :-)
 

> 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.


I see two potential benefits: either an *extremely* short MK implementation 
(because MK is basically LVars plus conde minus threshold reads), or a 
better and more capable MK.

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.

 

> the concepts of lattices ... [static analysis] [...]

Oh yeah, I vaguely remember that class. Thanks for prodding at my memory.
 

> When I was looking for connections with Lindsey and Ryan, years ago ...

 
That's the repo I linked to?
 

> the LVars formalism was missing a feature or two that I wanted for 
> implementing miniKanren-in-LVars.
>

Something to do with disjunction? Or something else?
 

> I agree with Greg that there is a connection between these ideas and 
> delayed goals


Sure sounds like it to me :) One can rephrase "blocking threshold read" as "
*delay* until the value is above any one of {x, y, z}, then tell me which", 
so... yeah.
 

> 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! 
>

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 :D
 
I 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.

Cheers,

Jonas

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/minikanren.
For more options, visit https://groups.google.com/d/optout.

Reply via email to