1 / 109

Introdução a Programação em Lógica e Prolog

Introdução a Programação em Lógica e Prolog. Jacques Robin CIn-UFPE. Lógica da Programação em Lógica. L 1 ch :Lógica Clássica de Horn da 1 a ordem. L 1 nh :Lógica não-monótona de Horn da 1 a ordem. L 1 c :Lógica Clássica dos Predicados. O que é a Programação em Lógica?.

harley
Télécharger la présentation

Introdução a Programação em Lógica e Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE

  2. Lógica da Programação em Lógica L1ch:Lógica Clássica de Horn da 1a ordem L1nh:Lógica não-monótona de Horn da 1a ordem L1c:Lógica Clássica dos Predicados O que é a Programação em Lógica? • Para a IA: um paradigma de representação do conhecimento e raciocínio automático • Para a engenharia de software: um paradigma de especificação de software e de programação • Para os bancos de dados: um modelo conceitual de dados • Para a teoria da computação: um conjunto de lógicas • Visão unificadora trans-disciplinar de várias área da computação

  3. Metáfora da programação em lógica • Teoria lógica = Base de Conhecimento (BC) • Axiomas e regras da teoria lógica = BC estática • Teoremas da teoria lógica = BC dinâmica • deduzidos a partir dos axiomas e das regras • Máquina de inferência = provador de teorema • Teoria lógica = modelo de software = implementação de software • Programar =apenas declararaxiomas e regras • Execução do programa = construção de prova de teorema • Compilador/interpretador = provador de teorema • Estrutura de controle (única) = mecanismo de dedução automática • Disparar execução do programa = perguntar verdade de um teorema • Teoria lógica = Banco de Dados (BD) • Definir dados = declarar axiomas e regras • Consultar BD = perguntar verdade de um teorema

  4. Inteligência Artificial Representação do conhecimento Sistemas especialistas Planejamento Aprendizagem de máquina Processamento de linguagem natural Sistemas multi-agentes Robótica Matemática computacional simbólica Sistemas Distribuídos e Internet Comércio eletrónico Recuperação, filtragem e extração de informação Engenharia de Software Prototipagem rápida de software complexos Especificações formais executáveis Programação por resolução de restrições Programação multi-paradigma de alto-nível Banco de Dados BD dedutivos e DOO Mineração de Dados e Descoberta de Conhecimento Integração de Dados e Interoperabilidade Aplicações da programação em lógica

  5. 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, embora teoricamente impura • Padrão ISO • Maioria das outras linguagens de PL são extensões de Prolog • Surgiu na década de 70 • Na moda na década de 80 (o Java da época ) • Hoje permanece pouco divulgado e usado na indústria

  6. Representação do conhecimento Procedimentos Programação Imperativa Lógica Provadores de Teoremas Regras Shells de Sistemas Especialistas Classes/Objetos Redes Semânticas Programação OO Frames Classes/Objetos + Procedimentos Classes/Objetos + Lógica Lógicas descritivas Regras + Procedimentos Sistemas de Produção Regras + Classes/Objetos + Procedimentos Sistemas de Produção OO Regras + Lógica Programação em lógica Regras + Classes/Objetos + Lógica Programação em lógica OO

  7. Lógica dos predicados como formalismo de representação do conhecimento • Vantagens: • Muito versátil e expressivo • Com semântica declarativa bem definida • Com grande número de mecanismos de inferência dedutivos com propriedades formais e custos computacionais muito bem conhecidos • Porque então L1C não vingou como FRC padrão? • De fato vingou a nível teórico, já que cada novo FRC proposto acaba ser re-estudado em termos lógicos • Desvantagens práticos: • Não é intuitiva para especialistas do domínio de aplicação do sistema inteligente (médico, advogado, lingüista, engenheiro, etc.) • Oferece variedade de modelagens excessiva (muita fórmulas sintaticamente diferentes porém semanticamente equivalentes) • Prova de teoremas em L1C é computacionalmente inviável para grandes bases de conhecimento

  8. ( P,W,N american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W) criminal(P))  ( W owns(nono,W)  missile(W))  ( W owns(nono,W)  missile(W) sells(west,nono,W))  american(west)  nation(nono)  enemy(nono,america)  ( W missile(W)  weapon(W))  ( N enemy(N,america) hostile(N))  nation(america) ( ( P,W,N criminal(P) american(P)  weapon(W)  nation(N)  hostile(N))  ( W owns(nono,W)  missile(W1))  ( W sells(west,nono,W)  owns(nono,W)  missile(W))  ( P american(P) P = west)  ( N nation(N)  N = nono)  ( W weapon(W))  missile(W))  ( N1,N2 N1=nono  N2=america  emeny(N1,N2))  ( N hostile(N)  enemy(N,america))  ( N nation(N)  N = america)) West é criminoso? em lógica dos predicados: variantes sintáticas

  9. Regras de shell de sistemas especialistas • IF premissa THEN conclusão • Premissas e conclusão em linguagem pseudo-natural com conectivas genécias IF_THEN, AND, OR, ISA, HAS e outras dependente do domínio ligando nomes de entidades (classes) e propriedades (atributos) do domínio • Vantagens: • Intuitivas para especialista do domínio de aplicação • Variedade mais restrita de modelagens • Desvantagens: • Atalha nível da formalização no processo de engenharia de conhecimento • Semântica declarativa ambígua • Mecanismo de dedução ad-hoc com propriedades e formais e custos computacionais mal conhecidos

  10. Em lógica dos predicados: ( P,W,N american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W) criminal(P))  ( W owns(nono,W)  missile(W))  ( W owns(nono,W)  missile(W) sells(west,nono,W))  american(west)  nation(nono)enemy(nono,america) ( X missile(W)  weapon(W))  ( X enemy(N,america) hostile(N))  nation(america) Com shell de sistema especialista: Base deregras: IF P ISA american AND W ISA weapon AND N ISA nation AND N IS hostile AND P sells W TO N THEN P IS criminal IF W ISA missile AND nono HAS W THEN west sells W TO nono IF W ISA missile THEN W ISA weapon IF america HAS enemy N THEN N IS hostile Base defatos iniciais: west ISA american nono ISA nation america ISA nation america HAS enemy nono nono HAS m1 m1 ISA missile West é criminoso? Lógica x Regras “intuitivas” de shell

  11. Elicitação do conhecimento • Nível do conhecimento: • Nos termos do especialista do domínio de aplicação • Linguagem natural, Notações gráficas ad-hoc Formalização do conhecimento • Nível formal: • Notação sem ambigüidade com semântica definida matematicamente (ex, lógica, probabilidades) • Verificação de consistência • Nível semi-formal: • Notação textual estruturada padrão (ex, XML) • Notação gráfica padrão (ex, UML) • Validação com especialista Implementação do conhecimento • Nível da implementação: • Codificação em uma linguagem de programação • Teste de protótipo Engenharia de uma base de conhecimento • Entrevistas estruturadas com especialista • Preparação de dados • Linguagens formaisde representação do conhecimento • Aprendizagemde Máquina • Ontologias • Linguagenssemi-formaisde representaçãodo conhecimento • Compiladores • Máquinas de inferências • Aprendizagemde Máquina

  12. Problema com regras não baseadas na lógica segue-se ?? fatosfatos sentençassentenças Mundo semântica ?? semântica ?? Representação deriva

  13. Formas normais da lógica dos predicados • Forma normal conjuntiva: • Conjunção de cláusulas disjuntiva, i.e., de disjunção de formulas atômicas positivas ou negadas • (P11 ...  Pi1  C11  ...  Ci1)  ...  (Pn1 ...  Pk1 Cn1  ...  Ck1) • Dispensa conectivas ,  e , torna  implícito • Formal norma implicativa: • conjunção de cláusulas implicativas, i.e., de implicações de conjunção de formulas atômicas positivas para disjunção de formulas atômicas positivas • (P11 ...  Pi1  C11  ...  Ci1)  ...  (Pn1 ...  Pk1  Cn1  ...  Ck1) • Dispensa conectivas ,  e , torna  implícito • São equivalentes pela definição da implicação: (P  C)  (P  C) (P11 ...  Pi1  C11  ...  Ci1)  ...  (Pn1 ...  Pk1  Cn1  ...  Ck1) • ((P11 ...  Pi1)  (C11  ...  Ci1))  ...  ((Pn1 ...  Pk1)  (Cn1  ...  Ck1)) • (P11 ...  Pi1  C11  ...  Ci1)  ...  (Pn1 ...  Pk1 Cn1  ...  Ck1)

  14. Prolog puro: Lógica de Horn L1ch • Programa Prolog = formula da Lógica de Horn L1ch sem predicado de igualdade • Formula de L1ch: • Formula da lógica dos predicados em forma normal implicativa com clausulas de conclusão única • (P11 ...  Pi1  C1)  ...  (Pn1 ...  Pk1  Cn) • L1ch  L1h: • Algumas formulas da lógica dos predicados não tem formula de Horn equivalente • ex, animalLover(X)  animal(Y)  kills(X,Y).

  15. Programação em lógica como formalismo de representação do conhecimento • Meio termo entre lógica dos predicados e regras “intuitivas” de shell • Vantagens para aquisição de conhecimento: • Formula da lógica de Horn tem mapeamento direto com de bases fatos e de regras intuitivas de shell de sistemas especialistas • Representação mais simples e intuitiva do que lógica sem atalhar nível da formalização • Reduz consideravelmente número de paráfrases sintáticas • Vantagens para máquina de inferência: • Raciocínio dedutivo correto e semi-completo: a refutação por resolução • Espaço de busca da refutação por resolução muito menor em lógica de Horn do que é lógica dos predicados (eficiência) • Perda de expressividade em comparação da lógica dos predicados: • Facilmente contornável para maioria das aplicações de IA • Uso prático principal dos provadores de teoremas da lógica dos predicados: engenharia de software formal e matemática computacional, não IA

  16. Unificação • 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

  17. Cláusulas Prolog x Cláusulas de Horn • Fatos Prolog: • Cláusulas de Horn com premissa única T implícita • Escritos C. Com semântica: T  C • Regras Prolog: • Outras cláusulas de Horn • Escrita C :- P1, ... ,Pn. Com semântica: P1 ...  Pn C • Escopo das variáveis = uma cláusula • Premissas de várias cláusulas com a mesma conclusão são implicitamente disjuntivas • Semântica de: C :- P1, ... ,Pn. C :- Q1, ... ,Qm, é:(P1 ...  Pn C)  (Q1 ...  Qm C) • ((P1 ...  Pn )  C)  ((Q1 ...  Qm ))  C) (p+c).(q+c) • ((P1 ...  Pn )  (Q1 ...  Qm ))  C pq + c • ((P1 ...  Pn )  (Q1 ...  Qm ))  C • ((P1 ...  Pn )  (Q1 ...  Qm ))  C

  18. Requisitos em inglês 1. It is crimimal for an American to sell weapons to an hostile country 2. Nono owns missiles 3. Nono acquires all its missiles from West 4. West is American 5. Nono is a nation 6. Nono is an enemy of the USA 0. Is West a crimimal? Em lógica da 1a ordem 1.  P,W,N american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W)  criminal(P) 2.  W owns(nono,W)  missile(W) 3.  W owns(nono,W)  missile(W)  sells(west,nono,W) 7.  X missile(W)  weapon(W) 8.  X enemy(N,america)  hostile(N) 4. american(west) 5. nation(nono) 6. enemy(nono,america) 9. nation(america) West é criminoso? em lógica dos predicados

  19. Em lógica da 1a ordem 1.  P,W,N american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W)  criminal(P) 2.  W owns(nono,W)  missile(W) 3.  W owns(nono,W)  missile(W)  sells(west,nono,W) 7.  X missile(W)  weapon(W) 8.  X enemy(N,america)  hostile(N) 4. american(west) 5. nation(nono) 6. enemy(nono,america) 9. nation(america) Em formal normal american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W)  criminal(P) owns(nono,m1) missile(m1) owns(nono,W)  missile(W)  sells(west,nono,W) missile(W)  weapon(W) enemy(N,america)  hostile(N) american(west) nation(nono) enemy(nono,america) nation(america) West é criminoso?em formal normal implicativa

  20. Em Lógica de Horn: american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W) => criminal(P) owns(nono,m1) missile(m1) owns(nono,W)  missile(W)  sells(west,nono,W) missile(W)  weapon(W) enemy(N,america)  hostile(N) american(west) nation(nono) enemy(nono,america) nation(america) Em Prolog: criminal(P) :- american(P), weapon(W), nation(N), hostile(N), sells(P,N,W). owns(nono,m1). missile(m1). sells(west,nono,W) :- owns(nono,W), missile(W). weapon(W) :- missile(W). hostile(N) :- enemy(N,america). american(west). nation(nono). enemy(nono,america). nation(america). West é criminoso? em Prolog

  21. criminal(P) :- american(P), weapon(W), nation(N), hostile(N), sells(P,N,W). owns(nono,m1). missile(m1). sells(west,nono,W) :- owns(nono,W), missile(W). weapon(W) :- missile(W). hostile(N) :- enemy(N,america). american(west). nation(nono). enemy(nono,america). nation(america). criminal(west)? <- yes. american(west)? -> yes. weapon(W)? <- W = m1. missile(W)? -> W = m1. nation(N)? -> N = nono. hostile(nono)? <- yes. enemy(nono,america)? -> yes. sells(west,nono,m1)? <- yes. owns(nono,m1)? ->yes. missile(m1)? -> yes. West é criminoso? busca

  22. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(P) american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  23. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  24. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  25. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  26. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  27. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  28. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(W) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  29. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  30. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(N) hostile(N) sells(west,N,W) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  31. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  32. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  33. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  34. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(N) sells(west,N,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  35. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  36. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(N,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  37. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(nono,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  38. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(nono,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  39. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(nono,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  40. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,W) missile(m1) enemy(nono,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  41. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,W) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  42. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  43. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  44. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  45. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  46. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  47. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  48. West é criminoso?Encadeamento de regras para trás criminal(west)? criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  49. West é criminoso?Encadeamento de regras para trás criminal(west)? yes criminal(west) american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1) sells(west,nono,m1) missile(m1) enemy(nono,america) owns(nono,m1) american(west) missile(m1) nation(nono) enermy(nono,america) owns(nono,m1) nation(america)

  50. criminal(P) :- american(P), weapon(W), nation(N), hostile(N), sells(P,N,W). owns(nono,m1). missile(m1). sells(west,nono,W) :- owns(nono,W), missile(W). weapon(W) :- missile(W). hostile(N) :- enemy(N,america). american(west). nation(america). enemy(nono,america). nation(nono). criminal(west)? <- yes. american(west)? -> yes. weapon(W)? <- W = m1. missile(W)? -> W = m1. nation(N)? -> N = america. hostile(america)? <- no. enemy(america,america)? -> no. backtrack: nation(N), N \ {america}? -> N = nono. hostile(nono)? <- yes. enemy(nono,america)? -> yes. sells(west,nono,m1)? <- yes. owns(nono,m1)? -> yes. missile(nono,m1)? -> yes. West é criminoso ? backtracking

More Related