Programação em lógica e lógica

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Advertisements

Lógica de Predicados e Representação de Conhecimento
Inteligência Artificial I
Fundamentos de Prolog: uma breve introdução à programação em lógica Jacques Robin, DI-UFPE
Prolog: Predicados Built-in 1
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
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.
Linguagens de Programação
Introdução à Programação Lógica
Banco de Dados Dedutivo
Representação de Conhecimento na Máquina
Agentes Baseados em Conhecimento
Agentes Baseados em Conhecimento
PLANEJADORES PRÁTICOS Jacques Robin DI-UFPE Planejamento de Ordem Parcial (POP) com linguagem STRIPS * mais expressivo que resolução de problema * porque.
Jacques Robin, DI-UFPE Prolog: comparação com outras linguagens de programação e de representação do conhecimento Jacques Robin, DI-UFPE.
Prolog: Predicados Built-in 2
INTRODUÇÃO À PROGRAMAÇÃO
Programação Lógica: PROLOG
Lógica de primeira ordem First Order Logic (FoL)
Aula 5 - Cap. 7 Fundamentos da IA Mestrado – FEI
Agentes Cognitivos Adaptativos
Sistemas Baseados em Regras de Produção
Lógica para Computação
Programação em Lógica Augusto Marks Batista Guilherme dos Santos Fujiyoshi Marlon Bill Santos.
AXIOMATIZAÇÃO Equipe: André Augusto Kaviatkovski, Daniel Elias Ferreira, Vinicius Zaramella.
Linguagem de 1ª ordem da teoria de conjuntos
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Inteligência Artificial
Conceitos Básicos.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prolog Programação Lógica Ícaro A. Souza.
Sistemas Inteligentes
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prolog Paradigma Declarativo - Lógico
INF 1771 – Inteligência Artificial
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
INF 1771 – Inteligência Artificial
Engenharia do Conhecimento Ernesto Trajano Jacques Robin CIn-UFPE.
Teorema de Herbrand e Unificação
Agentes Baseados na Lógica Proposicional
Introdução a Programação em Lógica e Prolog
Agentes Baseados em Regras de Produção
Agentes Baseados em Conhecimento
Implementação de Resolução
Sistemas Especialistas
Sistemas Inteligentes
Lógica de Predicados/Primeira Ordem
Sistemas Baseados em Conhecimento
1 Sistemas Inteligentes Sistemas baseados em LPO Extrato de Aula resumida... Flávia Barros.
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Introdução a Programação em Lógica e Prolog
Programação de computadores Prof. Giovanni Castro.
Programação em Lógica Indutiva Jacques Robin DI-UFPE.
Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE Aula I/II.
Programação Lógica com Prolog
Decidibilidade, Corretude, Completude, Consistência
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Métodos Formais Juan Andrés Mussini.
Sistemas Baseados em Conhecimento Prof. Cláudio M. N. A. Pereira.
Aula Introdutória “Lógica para Computação”
1 Lógica de Predicados BCC101 Matemática Discreta I.
Sistemas de Produção Jacques Robin CIn-UFPE. Roteiro  Definição de um sistemas de produção  Regras de produção  Inferência com regras de produção 
Transcrição da apresentação:

Programação em lógica e lógica Jacques Robin, DI-UFPE www.di.ufpe.br/~jr

O que é Prolog? Primeira e mais divulgada linguagem do paradigma da Programação em Lógica (PL) Operacionalização simples, prática e eficiente da metáfora da PL PL unifica: Engenharia de Software (especificação formal, linguagens de programação) Inteligência Artificial (IA) (raciocínio com Formalismos de Representação do Conhecimento (FRCs)) Banco de Dados -- Dedutivos (BDDs) Teoria Lógica (TL) das provas

Metáfora da programação em lógica Teoria Lógica = Programa = BD dedutivo = Base de Conhecimento (BC) Programar = apenas declarar axiomas e regras Axiomas da TL: fatos da BC parte extensional do BDD dados explícitos de um BD tradicional Regras da TL (e da BC): parte intencional do BDD Teoremas da TL: deduzidos a partir dos axiomas e das regras dados implícitos do BDD

Linguagens de PL Interpretadas (interatividade) e compiladas (eficiência) Interpretadores-Compiladores (IC) de PL: SGBD dedutivos (em geral em memória central) Motores de inferência Provadores de teoremas para lógicas com grande interseção com a Lógica da 1a ordem (L1) Interação: Declarar o que é verdadeiro (axiomas e regras do PL/BDD) Chamar o IC e carregar o PL/BDD Perguntar o que é verdadeiro (tentar provar teoremas = executar o PL = consultar o BDD)

PL x resto do mundo PL x programação imperativa, funcional e 00: mais declarativa, mais alto-nível mais versátil -- linguagem única para: especificar formalmente e implementar programar aplicações, scripts e consultas em BD PL x outros FRCs: melhor fundamentação teórica melhor integração com o resto da ciência computação PL = base interessante para integração de paradigmas PL = caso particular de programação por restrições

Ciclo de desenvolvimento de um software baseado em conhecimento AQUISIÇÃO FORMALIZAÇÃO IMPLEMENTAÇÃO MANUTENÇÃO Nível de Conhecimento Nível Lógico Ontologia Raciocínio Nível de Implementação BASE

Raciocínio automático em software baseado em conhecimento Propriedades desejáveis: correto: completo: composicional:

Programação procedimental x programação declarativa 1. Escolher linguagem de especificação formal (LE) 2. Especificar formalmente os requisitos na LE 3. Escolher linguagem de programação (LP) 4. Codificar estruturas de dados na LP 5. Codificar passo a passo estruturas de controle na LP 6. Escolher/escrever compilador da LP 7. Executar programa Escolher FRC (1,3) Declarar estruturas de conhecimento no FRC (2,4) Escolher/escrever motor de inferência para FRC (6) Consultar base de conhecimento sobre verdade de um fato (7) foi declarado? pode ser deduzido? reposta: ":booleana (L0, L1) $: instanciação de variáveis (L1)

L1 como FRC e linguagem de programação declarativa: motivação Satisfaz em grande parte para muitas aplicações: Adequação representacional e inferencial Eficiência aquisicional e inferencial Propriedades formais (semântica, complexidade da inferência) muito bem conhecidas Referência e interlingüa para comparar FRCs Regras de inferências permite RC modular: Independência entre regras Conclusão desamarrável das premissas: uma vez deduzida, a justificação de uma conclusão pode ser esquecida 2

Revisão de L1: sintaxe Fórmula ® Fórmula-Atômica | (Fórmula) | Quantificador Variável, ... Fórmula, | Fórmula Conectivo Fórmula Fórmula-Atômica ® Predicado(Termo,...) | Termo = Termo Termo ® Função(termo,...) | Constante | Variável Conectivo ® Ú | Ù | Þ | Û Quantificador ® " | $ | $! Constante ® Wumpus | Agente | Flecha | ... Variável ® x | y | wumpus | agente | ... Predicado ® Adjacente | Vivo | ... Função ® Em | Brisa | ...

Revisão de L1: semântica Engajamento ontológico: universo é dividido em: objetos, as entidades individuais do universo, representado pelos termos propriedades, que distinguem um objeto dos outros, representados pelas funções relações entre objetos, representados pelos predicados Engajamento epistemológico: afirmações representadas pelas formulas são: verdadeiras xorfalsas quantificadores e variáveis permitem representar intencionalmente, propriedades de conjuntos de objetos Igualdade semântica permite representar identidade entre objetos 5

Revisão de L1: mecanismo de inferência completo (para verificação) Fórmula da lógica de 1a. ordem Fórmula na forma normal Fórmula instanciada ou False Prova por Refutação Conversão para forma normal Demodulação Resolução Unificação 8

Revisão de L1: forma normal (1) Def: Thm: Regras de conversão: implicação: negação: variáveis:

Revisão de L1: formal normal (2) Regras de conversão (cont.): quantificadores: skolemização: distributividade: associatividade: disjunções: Quantificação universal implícita

Revisão de L1: refutação, unificação e substituição Motivação de provas por refutação: KB Þ P Û ØØ(KB Þ P) Û ØØ(ØKB Ú P) Û Ø(KB Ù Ø P) Û Ø(KB Ù Ø P) Ú False Û (KB Ù Ø P) Þ False Substituição de variáveis de uma formula f: conjunto de pares Var/const ou Var1/Var2 Unificação de 2 formulas f e g: substituição S das variáveis de f e g tal que S(f)=S(g) 2 resultados: S r=S(f)=s(g) 13

Revisão de L1: unificação posicional Exemplos: unif(conhece(joao,X),conhece(Y,leandro)) = {X/Leandro,Y/joao} unif(conhece(joao,X),conhece(X,leandro) = fail unif(conhece(joao,X),conhece(Y,mae(Y)) = {Y/joao, X/mae(joao)} unif(conhece(joão,X),conhece(Y,Z)) = {Y/João, X/Z}, ou {Y/joão, X/Z, W/zelda} ou {Y/joão, X/joão, Z/joão} ... Unificador mais geral: com menor número de variáveis instanciadas Substituição mínima: com menor número de pares Var/const 10

Revisão de L1: regra de resolução simples: ex.: geral:

Revisão de L1: demodulação Unificação é uma operação puramente sintática: unif(P(a),P(b)) = fail mesmo se BC contém a = b necessidade de simplificar formulas depois da unificação unificar para tomar em consideração igualdade semântica Regra de demodulação: ex.:

A curiosidade matou o gato? : em L1 Requisitos em inglês 1. Jack owns a dog. 2. Every dog owner is an animal lover. 3. No animal lover kills an animal. 4. Either Jack or curiosity killed Tuna 5. Tuna is a cat 0. Did curiosity kill the cat? Em L1 1. $x Dog(x) Ù Owns(Jack,x) 2. "x ($y Dog(y) Ù Owns(x,y)) Þ AnimalLover(x) 3. "x AnimalLover(x) Þ "y Animal(y) Þ ØKills(x,y) 4. Kills(Jack, Tuna) Ú Kills(Curiosity, Tuna) 5. Cat(Tuna) 6. "x Cat(x) Þ Animal(x) 0. Kills(Curiosity,Tuna)

A curiosidade matou o gato? : em forma normal Em L1 1. $x Dog(x) Ù Owns(Jack,x) 2. "x ($y Dog(y) Ù Owns(x,y)) Þ AnimalLover(x) 3. "x AnimalLover(x) Þ "y Animal(y) Þ ØKills(x,y) 4. Kills(Jack, Tuna) Ú Kills(Curiosity, Tuna) 5. Cat(Tuna) 6. "x Cat(x) Þ Animal(x) 0. Kills(Curiosity,Tuna) Em forma normal 1a. Dog(D) 1b. Owns(Jack, D) 2. Dog(y) Ù Owns(x,y)) Þ AnimalLover(x) 3. AnimalLover(x) Ù Animal(y) Ù Kills(x,y) Þ F 4. Kills(Jack, Tuna) Ú Kills(Curiosity, Tuna) 5. Cat(Tuna) 6. Cat(x) Þ Animal(x) 0. Kills(Curiosity, Tuna)

A curiosidade matou o gato? : exemplo de prova por refutação

Revisão de L1: estratégias de resolução Refutação: aplicação repetitiva da regra de resolução Problema: a cada passo, como escolher o par de fórmulas a resolver? Heurísticas: Resolver em prioridade formulas atómicas (unit preference). Destacar um conjunto de formulas S (set of support) a resolver em prioridade Sempre resolver uma formula inicial com uma formula derivada (input resolution) Linear resolution (completa) = sempre escolher: uma formula inicial com uma derivada qualquer ou, 2 derivadas, uma sendo ancestral da outra 16