[Fwd: Re: [cells-devel] Logic Programming in Cells]

Kenny Tilton ktilton at nyc.rr.com
Tue May 24 17:22:09 UTC 2005



-------- Original Message --------
Subject: 	Re: [cells-devel] Logic Programming in Cells
Date: 	Tue, 24 May 2005 12:37:50 -0400
From: 	Kenny Tilton <ktilton at nyc.rr.com>
To: 	Thomas F. Burdick <tfb at OCF.Berkeley.EDU>
References: 	<17043.19525.48820.752685 at conquest.OCF.Berkeley.EDU>



Thomas F. Burdick wrote:

>I was looking to build a Prolog-ish logic-programming layer on top of
>Cells, and looking at how to do this, it looks like basic support
>could be added to Cells itself pretty easily.  Here's what I'm
>thinking.  We add a new type of Cell, let's call it a Generator.  Data
>propogation proceeds as usual, but when we get to a Generator, we mark
>this on a stack.  If evaluation of some formula calls FAIL, we go back
>to the last Generator, evaluate it again, and resume data propogation
>from there.  Any pending inputs from code that was backtracked over
>would of course be thrown out.
>
>Any thoughts? 
>
So the generator sits there trying different values, with nested 
generators each working thru their values? The generator needs to be 
able to keep track of where it is between evaluations, including knowing 
when it is starting a fresh search (if you will).

Are you up to speed on the new propagation scheme, as featured most 
prominently in "unfinished-business"? I guess teh good news is that 
propagation to dependent cells completes before any output is done, so 
you do not have to back out outputs (and rules are not supposed to have 
side effects, tho I did just that in the Dwo Jones use case <gasp>.).

But what about the dependency propagation itself? A retry by the 
Generator may not propagate to the same population, so some positive 
mechanism must un-calculate dependencies reached during any failed 
propagation. Too bad I am not using the stack any more....Just had an 
idea. I need to look at the logic again, but what if we let dependency 
propagation take place on the stack. One nice thing here is that I was 
just about to /fake/ a stack just for debugging purposes, so I could 
figure out where problematic data pulses were originating. So either we 
do not need to do that, or that supports the backtracking you will need.

Again, have you been thinking about these issues? Either way, am I in 
the right ballpark approach-wise?

kt




-- 
Cells? Cello?: http://www.common-lisp.net/project/cells/
Cells-Gtk?: http://www.common-lisp.net/project/cells-gtk/
Why Lisp? http://lisp.tech.coop/RtL%20Highlight%20Film

"Doctor, I wrestled with reality for forty years, and I am happy to state that I finally won out over it." -- Elwood P. Dowd






More information about the cells-devel mailing list