Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!unmvax!pprg.unm.edu!hc!ames!pasteur!ucbvax!decwrl!sun!pitstop!sundc!seismo!uunet!munnari!vuwcomp!dsiramd!marcamd!aucsv!ok From: ok@aucsv.UUCP (Richard Okeefe) Newsgroups: comp.lang.prolog Subject: Re: IC-Prolog Message-ID: <187@aucsv.UUCP> Date: 3 Feb 89 05:43:20 GMT References: <587@gould.doc.ic.ac.uk> Distribution: comp Organization: Computer Science Dept.,University of Auckland,New Zealand Lines: 35 In article <587@gould.doc.ic.ac.uk>, cdsm@ivax.doc.ic.ac.uk (Chris Moss) writes: > In article gary@milo.mcs.clarkson.edu (Gary Levin) writes: > >Does anyone have access to source for IC-Prolog or any of its > >descendants? What machines will it run on? > > The answer is probably NO. I asked Frank McCabe, the author, last > year if he had the sources and he said he hadn't. When I was at the University of Edinburgh we had IC-Prolog up for a while (I think it was on the DEC-10). I had a listing, but when I left Edinburgh I'm afraid I threw it away. It was a research program, not a production tool, & was very slow indeed. PARLOG incorporates some of the IC-Prolog ideas, but not I think the ones gary@milo is interested in. One idea which IC-Prolog incorporated was to let you have several control-variants of a clause: you could include several copies of a clause which differed only in the order of the goals in the body, each to be used for a different instantiation pattern (mode) of the head. I have not seen this imitated since. Perhaps NU-Prolog may come closest? Note that having a predicate times(A, B, A_times_B) is not all joy. Successor and plus are ok, but times takes you out of the decidable fragment of arithmetic. Note that times(X, 0, 0) has *infinitely* many solutions. Such a thing in NU-Prolog would have to wait until someone else comes up with a binding for X. Even for times(X, Y, 720) --720 being a rather small number-- the number of solutions is large. In fact, if we define times/3 to have the rationals as its domain rather than the naturals, any query having more than one variable would have infinitely many solutions. This really isn't a property you want in your primitive operations! [This is being sent from a MicroVAX, courtesy of the University of Auckland. What an *atrocious* keyboard DEC have come up with!]