elter( Vater, Kind) :-
vater( Vater, Kind).
elter( Mutter, Kind) :-
mutter( Mutter, Kind).
eltern( Vater, Mutter, Kind) :-
vater( Vater, Kind),
mutter( Mutter, Kind).
kind( Kind, Elter) :-
elter( Elter, Kind).
sohn( S, E) :-
kind( S, E),
mann( S).
tochter( T, E) :-
kind( T, E),
frau( T).
opa( GV, Enkel) :-
elter( E, Enkel),
vater( GV, E).
oma( GM, Enkel) :-
elter( E, Enkel),
mutter( GM, E).
enkel( Enkel, G) :-
elter( E, Enkel),
elter( G, E).
bruder( Bruder, Geschwister) :-
eltern( Vater, Mutter, Bruder),
eltern( Vater, Mutter, Geschwister),
mann( Bruder),
Bruder \= Geschwister.
schwester( Schwester, Geschwister) :-
eltern( Vater, Mutter, Schwester),
eltern( Vater, Mutter, Geschwister),
frau( Schwester),
Schwester \= Geschwister.
onkel( O, N) :-
elter( E, N),
bruder( O, E).
tante( T, N) :-
elter( E, N),
schwester( T, E).
Back to example 1.1
moechte_frieden( X) :-
mensch( X).
mensch( X) :- mann( X).
mensch( X) :- frau( X).
mensch( X) :- kind( X).
mann( ich).
Back to example 1.2
moebel( schrank, 1).
moebel( buechergestell, 1).
moebel( bett, 1).
moebel( tisch, 1).
moebel( stuhl, 1).
moebel( X) :- moebel( X, N).
anzahl( X, N) :- moebel( X, N).
anzahl( tuer, 1).
anzahl( fenster, 2).
an( wand1, schrank).
an( wand1, tuer).
an( wand2, buechergestell).
an( wand2, bett).
an( wand3, bett).
an( wand3, fenster1).
an( wand3, tisch).
an( wand4, tisch).
an( wand4, fenster2).
an( wand4, schrank).
an( fenster1, bett).
an( fenster2, tisch).
in( ecke1, schrank).
in( ecke3, bett).
in( ecke4, tisch).
ort( X, P) :- an( P, X).
ort( X, P) :- in( P, X).
ort( stuhl, bei_tisch).
links( tuer, buechergestell).
links( buechergestell, bett).
links( bett, tisch).
links( tisch, schrank).
links( schrank, tuer).
rechts( X, Y) :- links( Y, X).
Back to example 1.3