grandchild(X, Z) :- child(X, Y), child(Y, Z).
child(hideyasu, ieyasu).
child(hidetada, ieyasu).
child(yoshinao, ieyasu).
child(yorinobu, ieyasu).
child(yorifusa, ieyasu).
child(iemitsu, hidetada).
child(tadanaga, hidetada).
child(masayuki, hidetada).
child(ietsuna, iemitsu).
child(tsunayoshi, iemitsu).
program :-
findall(X
, grandchild
(X
, ieyasu
), Bag
), print(Bag).
Z3JhbmRjaGlsZChYLCBaKSA6LSBjaGlsZChYLCBZKSwgY2hpbGQoWSwgWikuCgpjaGlsZChoaWRleWFzdSwgaWV5YXN1KS4KY2hpbGQoaGlkZXRhZGEsIGlleWFzdSkuCmNoaWxkKHlvc2hpbmFvLCBpZXlhc3UpLgpjaGlsZCh5b3Jpbm9idSwgaWV5YXN1KS4KY2hpbGQoeW9yaWZ1c2EsIGlleWFzdSkuCgpjaGlsZChpZW1pdHN1LCBoaWRldGFkYSkuCmNoaWxkKHRhZGFuYWdhLCBoaWRldGFkYSkuCmNoaWxkKG1hc2F5dWtpLCBoaWRldGFkYSkuCgpjaGlsZChpZXRzdW5hLCBpZW1pdHN1KS4KY2hpbGQodHN1bmF5b3NoaSwgaWVtaXRzdSkuCgpwcm9ncmFtIDotIAoJZmluZGFsbChYLCBncmFuZGNoaWxkKFgsIGlleWFzdSksIEJhZyksCglwcmludChCYWcpLgoJ