prolog# Prolog: X is the grandfather of Y

Assume that the following facts are already entered into the Prolog database:

```
father(X, Y) // X is the father of Y
mother(X, Y) // X is the mother of Y
male(X) // X is a male
female(X) // X is a female
parent(X, Y) // X is a parent of Y
diff(X, Y) // X and Y are different
```

(1) Now add a Prolog rule for grandpa_of(X, Y) where "X is the grandfather of Y"

(2) Add another rule for sibling(X, Y) where "X is the sibling of Y"

My thoughts:

Question 1:

I am confused on how I can find the parents of the parents, all I have so far is

grandpa_of(X,Y) :- male(X), ...

Question 2:

sibling(X, Y) :- parent(P, X), parent(P, Y), diff(X, Y)

Solution

I think Jason means `grandpa_of(X,Y) :- father(X,P), parent(P,Y).`

- Find the divisors of a number using Prolog by using recursion
- Prolog type definition in swi-prolog
- In SWI-Prolog, how can I find a solution that maximises or minimises some atom?
- Making prolog predicates deterministic
- Up-to-date Prolog implementation benchmarks?
- Creating a list of interleaved elements: Prolog
- What are the (perceived) shortcomings of the ISO standard for Prolog modules (ISO/IEC 13211-2)?
- Are HiLog terms still useful in modern Prolog?
- Prolog - replacing list elements
- Trouble obtaining a specific answer to a query in Prolog
- Prolog lists: combination of comma and |
- Solving a logical puzzle with Prolog gives a wrong answer
- How to identify valid bodies and convertible terms
- Find all subsequences of a list that cover the whole list in prolog
- How to flatten nested Prolog statements into a plain Horn clause
- Solving Caliban problems with prolog
- Why is there an error for the query: "query(member(one, [one,two,three]))." in Problog?
- PROLOG Make a list of words from big text file
- CLP(FD): solution number count speedup
- Why do i get : uncaught exception: error(existence_error(procedure,foggy/0),top_level/0)?
- Prolog falls into an infinite loop
- Problem with insert function into an organized list in Prolog
- Prolog Predicate for positive and negative integers
- Understanding recursive rules in Prolog
- How to collect maximal non-overlapping ascending/descending prefixes of a random sequence of numbers
- Prolog - first list is sublist of second list?
- Prolog: X is the grandfather of Y
- Why does this Prolog program not terminate?
- Blocks-World Problem in Prolog keeps oscillating between the same two states
- Moving elements in a list-of-lists in prolog