(Parte 1 de 5)

Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Informática

Curso de Bacharelado em Informática

ANDRÉ ABE VICENTE http://www.inf.unioeste.br/~abvicente

Disciplina: Inteligência Artificial (IA) Professora: Suzan Kelly Borges Piovesan

Cascavel Setembro de 2005

Prolog - Introdução3
Programação Prolog4
SINTAXE E SEMÂNTICA5
OBJETOS5
ÁTOMOS E NÚMEROS5
VARIÁVEIS6
ESTRUTURAS6
RECURSÃO8
UNIFICAÇÃO9
OPERADORES E ARITMÉTICA10
Tipos de operadores do prolog10
ARITMÉTICA1
LISTAS [Ver slides]15
Apêndice A [Slides Representação de Conhecimento]16
Apêndice B [Slides Listas]16

Este trabalho está licenciado sob uma Licença Creative Commons Atribuição. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

APOSTILA PROLOG – Inteligência Artificial André Abe Vicente

Prolog - Introdução

A programação em lógica, tal como a conhecemos hoje, tem suas raízes no cálculo de predicados, proposto por Frege em 1879. Diversos estudos posteriores foram de grande importância para sua evolução, com destaque para as investigações de Herbrand, Gödel, Tarski, Prawitz, Robinson e Green;

A primeira implementação da linguagem Prolog foi realizada por Alain Colmerauer e sua equipe, na Universidade de Aix-Marseille em 1972. A formalização semântica da programação com cláusulas de Horn é devida a Kowalski (1974) e a especificação do primeiro "standard" - o Prolog de Edimburgo - foi realizada por Warren e Pereira em 1977;

As principais características que diferenciam os programas em lógica dos programas convencionais são as seguintes:

(1) Processamento simbólico, (2) Soluções heurísticas, (3) Estruturas de controle e conhecimento separadas, (4) Fácil modificação, (5) Incluem respostas parcialmente corretas, e (6) Incluem todas as soluções possíveis;

Além disso, os sistemas de programação em lógica em geral e a linguagem Prolog em particular possuem as seguintes propriedades:

(1) Funcionam simultaneamente como linguagem de programação e de especificação, (2)Possuem capacidade dedutiva, (3)Operam de forma não-determinística, (4)Permitem a representação de relações reversíveis, (5)Permitem interpretação declarativa, procedimental e operacional, e (6)São naturalmente recursivos;

As principais aplicação da programação em lógica são: (1)Sistemas Baseados em Conhecimento SBCs), (2)Sistemas de Bases de Dados (BDs), (3)Sistemas Especialistas (SEs), (4)Processamento da Linguagem Natural (PLN), (5)Educação, e (6)Modelagem de Arquiteturas Não-Convencionais;

O projeto japonês para o desenvolvimento de Sistemas Computacionais de Quinta

Geração iniciou em 1982 e foi oficialmente concluído em maio de 1992. Apesar de ficarem aquém do esperado, os resultados produzidos permitem claramente antever o papel preponderante que a programação em lógica deverá representar nos futuros sistemas computacionais;

A crescente necessidade de garantir a qualidade do software substituindo programas por especificações formais diretamente executáveis, aliada à evolução das características do hardware, que passam a explorar cada vez mais os conceitos de concorrência e paralelismo, tornam a linguagem Prolog uma excelente porta de entrada para a informática do futuro.

APOSTILA PROLOG – Inteligência Artificial André Abe Vicente

Programação Prolog

A programação em Prolog consiste em estabelecer relações entre objetos e em formular consultas sobre tais relações de forma não numérica, mas simbólica.

Um programa Prolog é formado por cláusulas. Há três tipos de cláusulas: fatos ou assertivas, regras ou procedimentos e consultas;

Uma relação pode ser especificada por meio de: - fatos, que estabelecem as tuplas de objetos que satisfazem a relação,

- regras, que estabelecem condições para a satisfação das relações,

- combinações de fatos e regras descrevendo a relação;

Interrogar um programa acerca de suas relações por meio de uma consulta corresponde a consultar uma base de conhecimento. A resposta do sistema Prolog consiste em um conjunto de objetos que satisfazem as condições originalmente estabelecidas pela consulta;

Fatos Um fato denota uma verdade incondicional,

Todo fato é composto por um predicado que estabelece uma relação entre seus argumentos e encerrado por um ponto (.);

Exemplo: progenitor(maria, josé). progenitor(joão, josé). progenitor(joão, ana). progenitor(josé, júlia). progenitor(josé, íris).

Regras

• Definem as condições que devem ser satisfeitas para que uma certa declaração seja considerada verdadeira.

Cláusulas Prolog desse tipo são denominadas regras.

Há uma diferença importante entre regras e fatos: o Um fato é sempre verdadeiro; o Regras especificam algo que "pode ser verdadeiro se algumas condições forem satisfeitas".

o Uma parte de conclusão (o lado esquerdo da cláusula - cabeça), e uma parte de condição (o lado direito da cláusula - corpo). O símbolo ":-" significa "se" e separa a cláusula em cabeça e corpo da cláusula.

Se a condição expressa pelo corpo da cláusula - progenitor (X, Y) - é verdadeira então, segue como conseqüência lógica que a cabeça - filho(Y, X) - também o é.

APOSTILA PROLOG – Inteligência Artificial André Abe Vicente

Por outro lado, se não for possível demonstrar que o corpo da cláusula é verdadeiro, o mesmo irá se aplicar à cabeça.

Exemplo: pode-se declarar a relação de filho através de simples fatos como filho(josé, joão).

Entretanto podemos definir a relação "filho" de uma maneira muito mais elegante, fazendo o uso do fato de que ela é o inverso da relação progenitor e esta já está definida. Tal alternativa pode ser baseada na seguinte declaração lógica:

Para todo X e Y Y é filho de X se

X é progenitor de YA declaração acima, escrita em Prolog fica:

filho(Y, X) :- progenitor(X, Y). "Para todo X e Y, se X é progenitor de Y, então Y é filho de X".

OBJETOS O sistema reconhece o tipo de um objeto no programa por meio de sua forma sintática.

Variáveis sempre irão iniciar com letras maiúsculas, enquanto que as constantes nãonuméricas, ou átomos, iniciam com letras minúsculas.

Nenhuma informação adicional, tal como tipos de dados precisa ser fornecida para que o sistema reconheça a informação com a qual está lidando.

Os argumentos das relações podem ser constantes (como júlia e íris), denominados atomos, ou objetos genéricos denominados variáveis (como X e Y).

O alfabeto básico adotado aqui para a linguagem Prolog consiste dos seguintes símbolos:

• Pontuação: ( ) . ' "

• Conetivos: , (conjunção e) ; (disjunção ou) :- (implicação se)

• Letras: a, b, c,, z, A, B, C, ..., Z
• Dígitos: 0, 1, 2,, 9
• Especiais: + - * / < > = :etc.

Os átomos podem ser construídos de três maneiras distintas: a. Como cadeias de letras e/ou dígitos, podendo conter o caracter especial

APOSTILA PROLOG – Inteligência Artificial André Abe Vicente sublinhado (_), iniciando obrigatoriamente com letra minúscula. Por exemplo:

(Parte 1 de 5)

Comentários