# Re: Question from a Prolog dummy

In message <1183533482.517825.116350@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>, nowhereface@xxxxxxx writes
I'm currently reading my first book on Prolog.

The book was going over some simple examples for how Prolog searches
the tree in order to find a solution. It used an example "A happy
person is healty, wealthy, and wise," i.e.

happy(X) :- health(X), wealthy(X), wise(X). (Hope I did that right)

Then it showed all the information that had been entered, i.e.
happy(jane)... wise(jim)... etc. and traced through the whole search
thing with happy(jane) as the goal.

My question is "How does Prolog store the information in memory?" for
instance happy(jane)? The reason I ask is, the book showed it
comparing jane with jim and fred and everyone else before discarding
them and arriving at a bona-fide jane in memory to compare to. The
question that popped into my head was "if jane was stored as a hash,
we wouldn't need to compare her to everyone else, we could just go
right to her to determine if she exists or not."

"jane" as such is not stored anywhere. What is stored is the various facts such as 'happy(jane)'. And these are stored under the predicate that they are facts for - in this case, under happy/1. [They are probably stored as a linked list for happy/1 - but they might not be, and anyway it should be no concern of the programmer.]

Understanding that this could quite well be (and probably is) a stupid
question because I'm about as new to this as one could get, is jane
(and/or happy(jane), healthy(jane), etc) stored as a hash in Prolog?
Would this then eliminate having to search everything in memory one by
one until one reaches jane? I'm just trying to get a feel for the
internals of Prolog.

If you want to know if there is any mention of 'jane' anywhere among all the facts and rules known by your Prolog system, it can be done. But it's not what you want at the moment.

Nick
--
Nick Wedd nick@xxxxxxxxxxxxx
.

## Relevant Pages

• Re: prolog and recursive descent parsing?
... Time I'Ve Done anything at all involving prolog ... Does it make a graph of the parse tree or something? ... parser, but doesn't really make sense, especially given the parser ... parent(mary, jane). ...
(comp.compilers)
• Question from a Prolog dummy
... I'm currently reading my first book on Prolog. ... My question is "How does Prolog store the information in memory?" ... them and arriving at a bona-fide jane in memory to compare to. ...
(comp.lang.prolog)
• Re: Question from a Prolog dummy
... The book was going over some simple examples for how Prolog searches ... them and arriving at a bona-fide jane in memory to compare to. ... predicate definition while this executes. ... choice but generating all healthy people. ...
(comp.lang.prolog)
• Re: OO versus RDB
... There is a very simple mapping from RM to PROLOG. ... a representation based on predicates, ... 'connection' comes from the fact that PROLOG stores rules about facts ...
(comp.object)
• Re: Representing data structures in Prolog
... > the representation of knowledge with Prolog. ... I have several facts of the form. ... > object in object oriented languages. ... And create rules with multiple arguments to express more succinctly ...
(comp.lang.prolog)