Elsa Carvalho 1 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Prolog.

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

Capítulo 8 A linguagem da Lógica de Predicados
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Elsa Carvalho 241 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Interpretação.
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Linguagens de Programação
Lógica de Predicados Sintaxe. O que não é possível expressar em Lógica Prop. Todo tricolor é um campeão. Roberto é tricolor. Logo Roberto é um campeão.
Introdução à Programação Lógica
Introdução à Linguagem Prolog
Cálculo Relacional Datalog não-recursivo
Programação para Engenharia I
Universidade Federal do Espírito Santo Programação II Professora: Norminda Luiza.
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
2. A Linguagem Prolog.
3. Sintaxe e Semântica.
Introdução à Modelagem Conceitual 3. Prolog
Programação em Lógica Augusto Marks Batista Guilherme dos Santos Fujiyoshi Marlon Bill Santos.
Lógica de Primeira Ordem -2
Linguagem de 1ª ordem da teoria de conjuntos
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Conceitos Básicos.
FUNDAMENTOS MATEMÁTICOS
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Sintaxe e Semântica do PROLOG.
Aula Prática - Prolog Sistemas Inteligentes /~if684
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Prolog Programação Lógica Ícaro A. Souza.
Conceitos de Linguagem de Programação
Aula Prática - Prolog Sistemas Inteligentes /~if684
Estruturas e Subestruturas Por: Jefferson de Menezes (jmmf) Ricardo Salomão (rssj2) Ciência da Computação
Linguagem de Programação II Parte V
Conceitos e Linguagens de Programação
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Cássio Cristo Dawyson Guerra Matheu Santos
INF 1771 – Inteligência Artificial
Lógica de Predicados Sintaxe.
Algoritmo e Programação
André Luiz da Costa Carvalho
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
Lógica matemática.
Sistemas Especialistas Podem ser definidos como programas de computador desenvolvidos para representar o conhecimento humano num dado domínio específico.
Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição.
Princípios da Programação em Prolog
Algumas notas sobre a linguagem de programação C
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
Inteligência Artificial: Lógica Proposicional e Prolog
94 Elsa Carvalho Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
INE Fundamentos de Matemática Discreta para a Computação
Banco de Dados Dedutivos
Programação Declarativa 2 INTRODUZIR REGRAS Relação X é descendente de Y (denotada pelo predicado offspring (X,Y)) Aproximação 1 (definição exaustiva)
Programação Lógica com Prolog
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Elsa Carvalho 262 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Com os.
Elsa Carvalho 203 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com.
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação recursiva.
1 Provas e Proposições Anjolina Grisi de Oliveira Fonte:
Lógica para Computação
Lógica matemática.
Vinicius Ponte Machado
Tipos de Dados, Variáveis, Expressões Lógicas e Aritméticas
SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG.
1 Lógica de Predicados BCC101 Matemática Discreta I.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Elsa Carvalho 1 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Prolog = PROgramming in LOGic Origens: anos 70 Linguagem baseada na lógica de predicados de 1ª ordem, ou melhor, no seu subconjunto da lógica clausal (Horn). Ideias principais programa = conjunto de axiomas (cláusulas) computação = prova construtiva de uma afirmação a partir dos axiomas.

Elsa Carvalho 2 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Motivação das cláusulas A :- A1,..., An. A se A1e... e An. ( A é verdadeiro se A1,..., An forem verdadeiros) Exemplo: passar a uma disciplina da LEI passar(D, X) :- disciplina(D, lei), inscrito(D,X), positiva(D,X). O Prolog é uma linguagem essencialmente declarativa, em que o problema a resolver é exposto através de cláusulas. Estão no entanto envolvidos igualmente aspectos procedimentais. A :- A1,..., An. Uma maneira de resolver A é resolver A1,..., An.

Elsa Carvalho 3 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Termos em Prolog Termos Termos simples Termos compostos ConstantesVariáveis Átomos Números

Elsa Carvalho 4 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Átomos Os átomos podem ser strings de letras, dígitos e o caracter _, começando com uma letra minúscula strings de caracteres especiais (, -, =, :), etc. Ex., ====>, ::== strings de caracteres entre plicas Ex. ‘Funchal’, ‘323-ABS’ Números Os números em Prolog podem ser inteiros ou reais (estes últimos não são muito utilizados). Ex.1, 1990, 0, -80, 3.14,

Elsa Carvalho 5 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Variáveis As variáveis são strings de letras, dígitos e o caracter _, começando com uma letra maiúscula ou com _. Ex. X, Resultado, List, _objecto1 Termos compostos Os termos compostos são formados a partir de uma função aplicada a um conjunto de argumentos. A função segue a sintaxe dos átomos e os argumentos são também termos. Ex.aluno(ricardo, departamento(universidade_madeira, matematica), )

Elsa Carvalho 6 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Os termos compostos são o correspondente em Prolog das estruturas noutras linguagens de programação. A identificação de termos baseia-se em duas características: o nome e a aridade. O mesmo nome pode estar associado a diferentes funções. Ex. ponto(X,Y)corresponde à função ponto/2 ponto(X, Y, Z)corresponde à função ponto/3 Um termo diz-se chão se nele não intervêm quaisquer variáveis.

Elsa Carvalho 7 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Cláusulas: Factos e Regras Uma cláusula é uma fórmula A :- A1,..., An quantificada universalmente constituída pela cabeça A e pelo corpo (A1,..., An), neste caso a conjunção de diversos objectivos. Os As são literais (predicados aplicados a termos). (Pontuação: as cláusulas são sempre sucedidas de um ponto ‘.’; a conjunção de objectivos expressa-se através da vírgula ‘,’) No caso do corpo ser vazio as cláusulas chamam-se usualmente factos, exprimindo relações universais.

Elsa Carvalho 8 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe pais e maes pai(antonio, rui).(o antónio é pai do rui) pai(antonio, sandra). mae(maria, rui).(a maria é mae do rui) mae(maria, sandra). feminino(maria). feminino(sandra). masculino(antonio). masculino(rui).

Elsa Carvalho 9 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Quando o corpo não é vazio as cláusulas designam-se por regras, definindo relações à custa de outras relações. filhos e filhas filho(X,Y) :- pai(Y,X), masculino(X). filho(X,Y) :- mae(Y,X), masculino(X). filha(X,Y) :- pai(Y,X), feminino(X). filha(X,Y) :- mae(Y,X), feminino(X). ou

Elsa Carvalho 10 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe progenitor(X,Y) :- pai(X,Y). progenitor(X,Y) :- mae(X,Y). filho(X,Y) :- progenitor(Y,X), masculino(X). filha(X,Y) :- progenitor(Y,X), feminino(X). irmaos irmao(X,Y) :- masculino(X), progenitor(F, X), progenitor(F,Y), not(X==Y). irma(X,Y) :- feminino(X), progenitor(F, X), progenitor(F,Y), not(X==Y). Defina as relações de avo_m_f(avô ou avó); tio; tia; primo_m_f(primo ou prima).

Elsa Carvalho 11 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Solução! avo_m_f(X,Y) :- progenitor(X,Z), progenitor(Z,Y). tio(X,Y) :- irmao(X,Z), progenitor(Z,Y). tia(X,Y) :- irma(X,Z), progenitor(Z,Y). primo_m_f(X,Y) :- pai(Z,Y), tio(Z,X). primo_m_f(X,Y) :- mae(Z,Y), tia(Z,X).

Elsa Carvalho 12 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Um conjunto de regras com o mesmo predicado à cabeça é chamado um procedimento, tal como o que encontrámos no exemplo anterior para progenitor. Quando as variáveis apenas intervêm uma vez nas cláusulas podem ser substituídas pela variável anónima _.

Elsa Carvalho 13 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Interrogações A forma de se obter informação de um programa Prolog é através de interrogações. Uma interrogação é uma fórmula cujas variáveis são quantificadas existencialmente e o seu objectivo é obter uma das seguintes respostas: não, se a fórmula não se verificar para todos os valores possíveis para as variáveis intervenientes. sim, se a fórmula for verdadeira para alguns valores das suas variáveis. Neste caso a resposta inclui as diferentes valorações das variáveis que tornam a fórmula verdadeira (através da utilização do símbolo ; )

Elsa Carvalho 14 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Para trabalhar em Prolog vai ser utilizado um interpretador ao qual serão fornecidos programas e sobre os quais podemos fazer perguntas. Depois de ‘abrir’ o interpretador SWI-Prolog aparece-nos o cursor: ?- ao qual podemos colocar uma interrogação: ?- interrogacao. No entanto teremos de ‘alimentar’ o interpretador com as relações que definimos num ficheiro de texto com extensão.pl (ou.swi): ?- consult(‘ficheiro’).ou [‘ficheiro’] O ficheiro ficheiro é lido e os ‘procedimentos’ definidos ficam disponíveis para possíveis interrogações. Utilização do SWI-Prolog

Elsa Carvalho 15 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Sintaxe Considere-se o programa anterior dos parentescos enriquecido com os seguintes factos: pai(alberto, antonio). pai(alberto, luisa). mae(emilia, antonio). mae(emilia, luisa). ?- pai(X, rui).(Quem é o pai do rui?) X= antonio yes ?- avo_m_f(alberto, X).(Quem são os netos de alberto?) X= rui; X= sandra; no

Elsa Carvalho 16 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Em Prolog o raciocínio é feito sob o princípio do mundo fechado, isto é, toda a informação que não é expressa directamente ou que não pode ser deduzida é considerada como falsa. Defina a árvore da sua família utilizando os predicados pai e mae e faça algumas experiências com perguntas sobre os seus parentes. Se desejar, pode definir mais predicados para expressar outras relações de parentesco. Sintaxe

Elsa Carvalho 17 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Existem 2 estilos básicos na utilização de programas lógicos: definir uma base de dados lógica manipular estruturas de dados Uma base de dados lógica é composta de um conjunto de factos e regras. Os factos definem relações universais. As regras definem relações mais complexas. Assim, um programa lógico composto por um conjunto de regras e factos, que tenham um formato restrito, podem expressar funcionalidades semelhantes às bases de dados relacionais. Podemos ver isso pelo exemplo de definições de parentesco que temos estado a definir. ‘Database programming’