Programao em lgica e lgica Jacques Robin DIUFPE
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 1 a ordem (L 1) * 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: t t * 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 Nível de Conhecimento AQUISIÇÃO Ontologia Raciocínio Nível Lógico FORMALIZAÇÃO Nível de Implementação IMPLEMENTAÇÃO MANUTENÇÃ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: t t ": booleana (L 0, L 1) $: instanciação de variáveis (L 1)
L 1 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
Revisão de L 1: sintaxe Fórmula ® | | Fórmula-Atômica (Fórmula) ù Fórmula Quantificador Variável, . . . Fórmula, Fórmula Conectivo Fórmula-Atômica® Predicado(Termo, . . . ) | Termo = Termo ® | | Função(termo, . . . ) Constante Variável Conectivo Quantificador Constante Variável Predicado Função ® ® ® Ú|Ù|Þ|Û " | $! Wumpus | Agente | Flecha |. . . x | y | wumpus | agente |. . . Adjacente | Vivo |. . . Em | Brisa |. . .
Revisão de L 1: semântica * Engajamento ontológico: • universo é dividido em: t t t * 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: t verdadeiras xorfalsas • quantificadores e variáveis permitem representar intencionalmente, propriedades de conjuntos de objetos • Igualdade semântica permite representar identidade entre objetos
Revisão de L 1: mecanismo de inferência completo (para verificação) Fórmula da lógica de 1 a. ordem Fórmula na forma normal Conversão para forma normal Demodulação Fórmula instanciada ou False Prova por Refutação Resolução Unificação
Revisão de L 1: forma normal (1) * Def: Thm: * Regras de conversão: * • implicação: • negação: • variáveis:
Revisão de L 1: formal normal (2) * Regras de conversão (cont. ): • quantificadores: • skolemização: • distributividade: • associatividade: • disjunções: * Quantificação universal implícita
Revisão de L 1: refutação, unificação e substituição Motivação de provas por refutação: 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 Var 1/Var 2 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: t t S r=S(f)=s(g)
Revisão de L 1: 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
Revisão de L 1: regra de resolução * simples: * ex. : * geral:
Revisão de L 1: 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 L 1 * 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 L 1 1. $x Dog(x) Ù Owns(Jack, x) 2. "x ($y Dog(y) Ù Owns(x, y)) Þ Animal. Lover(x) 3. "x Animal. Lover(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 L 1 1. $x Dog(x) Ù Owns(Jack, x) 2. "x ($y Dog(y) Ù Owns(x, y)) Þ Animal. Lover(x) 3. "x Animal. Lover(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 1 a. Dog(D) 1 b. Owns(Jack, D) 2. Dog(y) Ù Owns(x, y)) Þ Animal. Lover(x) 3. Animal. Lover(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 L 1: 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: t t uma formula inicial com uma derivada qualquer ou, 2 derivadas, uma sendo ancestral da outra
- Slides: 22