Solar System
Prolog is excellent for queries on relational data (as in the Mathematical sense of a "relation"), e.g.,
Quantification of logical variables is implicit – universal (∀) for facts and rules, existential (∃) for queries – so the quantifiers are taken as read and omitted:
| <= (also :- ) | can be read as if, or as is implied by. |
| planet(P)<=orbits(P,sun). | can be read as
∀ P, P is a planet if P orbits the sun. (That is not to say that the definition cannot be tightened.) |
| satellite(S)<=orbits(S,P) and planet(P). | ∀ S, S is a satellite if ∃ P s.t. S orbits P and P is a planet. |
| ?satellite(S) | does there exist an S such that S is a satellite? |
| And the answer, here, is yes, if S is earth's moon, or a moon of another planet. | |
There are more Prolog examples here.