% Constantes: abraao, x22A, 'Avô' --> identificadores (átomos) % funcionais: id( arg1, ..., argn) -> aridade = n % predicados id(arg1, ..., argn) -> aridade = n % Ex: pai( pai(X), X ) :- ...: nãomrecomendo, porém legal. % Variáveis: X, _valor, _ % Numeric: 1, 2, ..., -0.43 % Termos atômicos: átomos, variáveis, numeric % termos complexos : funcional( arg1, ..., argn) % Mecanismo de computação: Unificação % ?- X = c. % ?- f(X, g(Y,Z)) = f(c, g(X,Y)). % ?- X=c, g(Y,Z) = g(X,Y). [] % ?- g(Y,Z) = g(c,Y). [X=c] % ?- Y = c, Z = Y. [X=c] % ?- Z = c. [X=c, Y=c] % true [X=c, Y=c, Z=c] pai( abraao, isac) :- true. pai( isac, jaco). pai( abraao, maria). mae(maria, epaminondas). avo(X,Y) :- pai(X,Z), mae(Z,Y). avo(X,Y) :- pai(X,Z), pai(Z,Y). p. p :- p. membro( X , [ X | _ ] ). membro( X , [ _ | Ys ] ) :- membro( X, Ys ). % implementar concat/3 tal que ?- concat( [a,b],[c,d], Xs) dá com resposta % Xs = [a,b,c,d].