0.2 – Raciocinio e Inferencia
0.2.1 – Programacao Logica
fatos: a base do conhecimento
Em Prolog, fatos são declarações simples que estabelecem verdades sobre o mundo. Eles sempre são considerados verdadeiros e servem como ponto de partida para o raciocínio. Por exemplo, “gosta(maria, chocolate).” declara que Maria gosta de chocolate. Similarmente, “pai(joao, carlos).” estabelece que João é pai de Carlos. Cada fato termina com um ponto final e usa letras minúsculas para nomes. Essas unidades básicas formam a base de conhecimento sobre a qual o sistema opera. O programador não precisa explicar como usar esses fatos; ele apenas os declara.
regras: construindo relações complexas
Regras permitem derivar novos fatos a partir de fatos existentes usando lógica condicional. Uma regra possui uma cabeça (conclusão) e um corpo (condições) separados por “:-“. Por exemplo, “avo(X, Y) :- pai(X, Z), pai(Z, Y).” define quem é avô de quem. Nesse caso, a regra afirma: X é avô de Y se X é pai de Z e Z é pai de Y. Regras podem combinar múltiplas condições usando vírgula para representar “e”. Além disso, elas também usam ponto e vírgula para representar “ou” em condições alternativas. Dessa forma, construímos hierarquias de conhecimento complexas a partir de elementos simples.
consultas: conversando com o sistema
Consultas são perguntas que fazemos ao Prolog para descobrir o que é verdadeiro. O usuário digita uma consulta e o sistema tenta encontrar respostas usando fatos e regras. Por exemplo, “?- gosta(maria, chocolate).” retorna “true” se o fato existe. Já “?- gosta(maria, O que).” retorna todas as coisas que Maria gosta. Consultas podem conter variáveis, identificadas por letras maiúsculas no início. O sistema unifica essas variáveis com valores encontrados durante a busca. Se múltiplas respostas existem, o usuário pode solicitar “;” para ver a próxima solução disponível.
variáveis e unificação em ação
Variáveis em Prolog não armazenam valores fixos como em outras linguagens de programação. Elas são espaços reservados que recebem valores durante o processo de unificação. Quando uma consulta “?- pai(joao, Filho).” é executada, Filho unifica com “carlos” se esse fato existe. A unificação pode ocorrer em múltiplos níveis, combinando estruturas complexas e variáveis aninhadas. Se a unificação falha, o sistema retrocede para tentar outras combinações automaticamente. Esse mecanismo permite encontrar todas as soluções sem programar loops manualmente. É como ter um assistente que experimenta possibilidades até encontrar o que você procura.
aplicações reais do prolog
Prolog foi utilizado extensivamente em sistemas especialistas durante o boom da IA simbólica. Sistemas de diagnóstico médico empregavam Prolog para correlacionar sintomas com doenças possíveis. Processamento de linguagem natural também utilizava Prolog para análise gramatical e extração de significado. Sistemas legais usavam Prolog para representar leis e verificar conformidade com regulamentações. Embora menos comum em aplicações comerciais modernas, seu legado permanece forte na pesquisa acadêmica. Muitos sistemas de regras atuais receberam forte influência dos conceitos pioneiros do Prolog. Para iniciantes, estudar Prolog é entender uma forma radicalmente diferente de pensar sobre programação e raciocínio.