Path: utzoo!attcan!uunet!samsung!zaphod.mps.ohio-state.edu!mips!apple!portal!portal!cup.portal.com!pgl From: pgl@cup.portal.com (Peter G Ludemann) Newsgroups: comp.lang.prolog Subject: Re: incrementing values Message-ID: <26713@cup.portal.com> Date: 8 Feb 90 07:39:54 GMT References: <17467@megaron.cs.arizona.edu> <31462@shemp.CS.UCLA.EDU> <4884@itivax.iti.org> <2484@cs-spool.calgary.UUCP> Organization: The Portal System (TM) Lines: 29 The question is posed: > .... This is a big problem for > Logic programming ingeneral, HOW DO YOU DIRECTLY MODEL MUTATION AND UPDATE > IN LOGIC PROGRAMMING? > > I personally feel that the only way to do this is to explicitly represent > time within Logic Programming. ... It's not clear to me that a time variable is needed. If you do have a "time variable", how is it different from a "state variable" (which gets us into the "frame problem")? As an alternative, consider: For example, suppose I am writing a chess program. At each step in the game, I can assume as axioms the description of the board. I then run my program and compute the best next move. At this point, I assert the new board position (this is "destructive assignment") and start over. In other words, inside my main program (which need not even be in Prolog), I am running a series of mini-queries, each time with a different axiom set. This seems to me to be a kind of meta-programming. I haven't worked out the detailed semantics, but with backtrackable "assignment", it may even have a reasonably clean second-order logical theory. - peter ludemann sun!portal!cup.portal.com!pgl