Trabalho Prolog
Trabalho
Construa uma base de conhecimento em Prolog que represente o esquema de blocos acima, considerando as relações sobre e acima estudadas em aula.
Escreva em Prolog as seguintes consultas, e mostre qual seria a resposta em Prolog, considerando o uso do ; para forçar todas as respostas possíveis.
O predicado acima devem ser descrito por meio de regras.
Predicados:
bloco(a). bloco(b). bloco(c). bloco(d). bloco(e). bloco(f). sobre(bloco(a),bloco(b)). sobre(bloco(b),bloco(m)). sobre(bloco(c),bloco(d)). sobre(bloco(d),bloco(e)). sobre(bloco(e),bloco(m)). sobre(bloco(f),bloco(m)). acima(bloco(X),bloco(Y)):- sobre(bloco(X),bloco(Y)); sobre(bloco(X),bloco(Z)), acima(bloco(Z),bloco(Y)).
abaixo(bloco(X),bloco(Y)):- sobre(bloco(Y),bloco(X)); sobre(bloco(Z),bloco(X)), acima(bloco(Y),bloco(Z)).
Questões:
a) b é um bloco? bloco(b). true.
b) O bloco b esta sobre o bloco a? sobre(bloco(b),bloco(a)). false.
c) Quais blocos estão sobre a mesa? sobre(bloco(X),bloco(m)).
X = b ;
X = e ;
X = f.
d) Existem blocos acima da mesa? acima(bloco(X),bloco(m)). X = b ;
X = e ;
X = f ;
X = a ;
X = c ;
X = d ;
e) O bloco a esta acima da mesa? acima(bloco(a),bloco(m)). true
f) Quais blocos estão acima de a? acima(bloco(X),bloco(a)). false.
g) A mesa está abaixo do bloco b? abaixo(bloco(m),bloco(b)). true
h) O bloco a esta sobre ele mesmo? sobre(bloco(a),bloco(m)). false.
i) Quais blocos estão abaixo do bloco c? abaixo(bloco(X),bloco(c)).
X = d ;
X = e ;
X = m ;
j) Quais blocos estão acima de algum bloco? acima(bloco(X),bloco(Y)). X = a,
Y = b ;
X = b,
Y = m ;
X = c,
Y = d ;
X = d,
Y = e ;
X = e,
Y = m ;
X = f,
Y = m ;
X = a,
Y = m ;
X = c,
Y = e ;
X = c,
Y = m ;
X = d,
Y = m ;
Entrega em sala de aula da versão escrita, continuação com entrega no moodle até o dia 12/06.
Considerações:
No trabalho feito em aula creio ter tido dificuldades em compreender o enunciado. Devido à o tempo exercido para na compreensão tive pouco tempo para