35
Programação em Lógica Indutiva Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Embed Size (px)

Citation preview

Page 1: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Programação em Lógica IndutivaProgramação em Lógica Indutiva

Jacques RobinCIn-UFPE

Page 2: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Aprendizagem Indutivo

Programação em Lógica

Programação em Lógica Indutiva (IPL)

O que é ILP (Inductive Logic O que é ILP (Inductive Logic Programming)?Programming)?

ILP x resto da aprendizagem • Descobre conhecimento novo expressado em lógica da 1a

ordem ILP x resto da programação em lógica

• Inverte mecanismos de dedução para implementar indução

Page 3: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Dimensões de aprendizagem Dimensões de aprendizagem

Metáfora cognitiva (ou paradigma):• Simbólica, Nebulosa, Estatística, Conexionista,

Evolucionista, Híbrida Propriedades matemáticas da função a aproximar:

• domínio e contra-domínio {0,1}, R• dependência: linear, linear por parte, não linear, etc.

Representação da função a aproximar:• lógica, probabilística, numérica

Propriedades matemáticas do espaço das representações:• dimensão• densidade

Page 4: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Dimensões de aprendizagem (cont.)Dimensões de aprendizagem (cont.)

Conhecimento:• a priori: aproveitável, necessário• aprendido: novidade, interpretabilidade

Algoritmo de aprendizagem:• iterativo ou não• local ou global

Feedback disponível: • supervisionado, não supervisionado, por reforço• nível de ruído (grau de aproximação)

Page 5: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Aprendizagem: feedback disponívelAprendizagem: feedback disponível

Aprendizagem supervisionada: certo ou errado• Dado um conjunto de exemplos pré-classificados, aprender

uma descrição geral que encapsula a informação contida nesses exemplos e que pode ser usada para prever casos futuros

• ex. concessão de crédito Aprendizagem não supervisionada: se vira!

• Dada uma coleção de dados não classificados, agrupá-los por regularidades

• ex. caixa de supermercado empacotando Aprendizagem por reforço: recompensa/punição

• ex. jogo de xadrez, RoboCup: é por aí!

Page 6: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Dedução x InduçãoDedução x Indução Dedução: D(A,R) = T

• a partir de uma base de axiomas A conhecida a priori uma base de regras de inferência R conhecida a priori

• deduzir: a base de teoremas T, tal que: A R |= T

Indução: I(A,T,R) = H• a partir de:

base de axiomas A conhecida a priori base de teoremas T+ e não teoremas T- observada

empiricamente uma base de regras de inferência R conhecida a priori

• induzir: base de regras de inferência hipotéticas H, tal que: A R H |= T+ e A R H | T-

ILP : indução com A, R, H e T representadas em Lógica de Horn da 1a ordem.

Page 7: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

ILP ao longo das dimensões de ILP ao longo das dimensões de aprendizagemaprendizagem

Metáfora cognitiva: simbólica

Função a aproximar: booleana

Representação da função a aproximar: fórmula da lógica de Horn da 1a ordem

Algoritmo de aprendizagem:• iterativo ou não• local ou global

Feedback: • supervisionado • ruído: com ou sem

Conhecimento a priori: • aproveitável• necessário quando poucos

exemplos Conhecimento aprendido:

• altamente interpretável• alguns métodos de ILP criam

novos predicados

Page 8: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

ILP x outras abordagem de ILP x outras abordagem de aprendizagemaprendizagem

Vantagens x outros métodos de aprendizagem (ID3, version-space, redes neurais, redes bayesianas, etc.):• indução de relações abstratas e definições recursivas• na forma de um programa diretamente executável• aproveitamento do conhecimento a priori do domínio• poucos exemplos necessários (i.e., A e T podem ser

pequenas)

Desvantagens x outros métodos de aprendizagem:• alto custo computacional do treinamento• dificuldade em formar hipóteses interessantes na ausência

de conhecimento a priori

Page 9: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Aprender relação abstrata com ILP: Aprender relação abstrata com ILP: daughter(D,P) = f(father,female,male,mother).daughter(D,P) = f(father,female,male,mother). Conhecimento a priori Intencional: parent(F,C) :- father(F,C). parent(M,C) :- mother(M,C). Extensional: father(pat,ann). father(tom,sue). female(ann). female(eve). female(sue). male(pat). male(tom). mother(eve,sue). mother(ann,tom).

Exemplos Positivos: daughter(sue,eve). daughter(ann,pat). Negativos: not daughter(tom,ann). not daughter(eve,ann).

Objetivo: Induzir: daughter(D,P) :- female(D), parent(P,D).

Page 10: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Aprender definição recursiva com ILP: Aprender definição recursiva com ILP: ancestorancestor = f(parent, ancestor). = f(parent, ancestor).

Conhecimento a priori Intencional:parent(F,C) :- father(F,C). parent(M,C) :- mother(P,C). Extensional:father(pat,ann).father(tom,sue).female(ann).female(eve).female(sue).male(pat).male(tom).mother(eve,sue).mother(ann,tom).

Exemplos Positivos:ancestor(tom,sue).ancestor(eve,sue).... Negativos:not ancestor(ann,eve).not ancestor(sue,eve).... Definição induzida:ancestor(A,D) :- parent(A,D).ancestor(A,D) :- parent(A,P), ancestor(P,D).

Page 11: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Dimensões de ILPDimensões de ILP

Tarefa:• Grau de automação: interativo x autónomo• Incremental (na apresentação dos dados): sim/não• Semântica: monótona normal, monótona definita, não-monótona• Descoberta de predicados: com/se• Entrada: T+, T+ T-, T+ A R, T+ T- A R• Saída: um x vários predicados, LP x CLP

Abordagem:• Operadores: -subsumption, rlgg, resolução ou implicação inversa• Restrições da linguagem de hipótese L(H) (language bias):

sintáticas x semânticas parametrizadas x declarativas

• Estratégia de busca: Global: especialização (top-down) x generalização (bottom-up) Local (preference bias):

Page 12: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Algoritmo genérico de ILPAlgoritmo genérico de ILP

inicialize fila de hipótese Fh repetir

• delete H de Fh• escolha regras de inferências R1, …, Rk em R• induz H1, …, Hn aplicando R1, …, Rk a H• coloca H1, …, Hn em Fh• pode Fh

até satisfazer critérioDeParada para Fh

Qualquer algoritmo de ILP:• é uma instância desse algoritmo • com definições e implementações particulares para:

inicialize, delete, escolha, pode e critérioDeParada

Page 13: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Generalizacão x EspecializaçãoGeneralizacão x Especialização

Generalização (busca bottom-up) parte da hipótese a mais

específica: qualquer exemplo positivo

iterativamente generaliza-lá aplicando regras de indução até a 1a que cobre:

• quase todos os exemplos positivos

• quase nenhum exemplo negativo

Especialização (busca top-down) parte da hipótese a mais

geral: c(…,X,…) :-. iterativamente especializa-lá aplicando regras de dedução até a 1a que cobre:

• quase todos os exemplos positivos

• quase nenhum exemplo negativo

Para os 2:• “quase” definido quantitativamente via uma taxa de erro• necessária para:

• evitar overfitting da amostra de treinamento• garantir o poder de generalização da hipótese

Page 14: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Semântica monótonaSemântica monótona Propriedades:

• Consistência a priori: A R T- |= {f}• Necessidade a priori: A R | {f}• Consistência a posteriori: A R T- H |= {f}• Completude a posteriori: A R H |= T+

Casos particulares:• Monótona definida:

Monótona normal com B e H limitado a cláusulas definidas, ie, c(X,Y) :- p(X), q(Y) mas não t :- p(X), q(Y).

• Monótona baseada em exemplos: Monótona definida com todos T+ e T- fatos instanciados (unit ground clauses) ie, c(a,b) ou not c(a,b) mas nem c(X,b), nem c(a,b) :- p(a),q(b).

Page 15: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Modelos de HerbrandModelos de Herbrand

M(L) modelo de Herbrand de um programa lógico L sse:• M(L) = {p(…, c, …) | p pred(L) c const(L) L |= p(…,c,…)} = todos os fatos instanciados formados a partir de predicados e constantes de L e deriváveis a partir de L

Exemplo: • L = {male(paulo). female(ana). male(joao).

parent(paulo,joao). parent(ana,joao). father(F,C) :- parent(F,C), male(F). mother(M,C) :- parent(F,C), female(M).}

• M(L) = {male(paulo). female(ana). male(joao). parent(paulo,joao). parent(ana,joao). father(paulo,joao). mother(ana,joao).}

Thm: L sem not M(L) mínimo

Page 16: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Semântica não-monótonaSemântica não-monótona

Pressupostos:• T+ A R • T- = L(H) - A R via hipótese do mundo fechado• A R limitado a cláusulas definidas• M+(A R) = modelo de Herbrand mínimo de A R

Propriedades:• Validade: H M+(A R )• Completude: H |= M+(A R)• Minimal: G H G inválido ou incompleto

Mais conservadora do que semântica monótona:• A R = {bird(tweety). bird(oliver).}• T+ = {flies(tweety).}• Com semântica monótona, flies(X) :- bird(X). H• Com semântica não-monótona, flies(X) :- bird(X). H

Page 17: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Regras e operadores para ILPRegras e operadores para ILP

Especialização (refinamento) baseado em -Subsumption

Relative Least General Generalization (RLGG) Resolução inversa em V Resolução inversa em W (invenção de predicados) Implicação inversa Derivação inversa (inverse entailment)

Page 18: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

-Generalização (-Generalização (-Subsumption)-Subsumption)

G -generaliza S sse substituição , (G) S ie, G se unifica com uma parte de S ex, com = {D/ann}, daughter(D,P) :- female(D). -generaliza daughter(ann,P) :- female(ann),

parent(P,ann). Sugere 2 operadores de especializações:

• aplicar substituição e acrescentar premissa (G -generaliza S) (G |= S) -- “G entails S” mas ((G |= S) (G -generaliza S)) contrex,

• G: humano(paiDe(H)) :- humano(H).• S: humano(paide(paiDe(H))) :- humano(H).• G |= S, porém G não -generaliza S

Page 19: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Generalização mínima relativaGeneralização mínima relativa

Generalização mínima de 2 termos T e L (literais):• substituição dos sub-termos que não se casam com variáveis• ex, lgg(daughter(mary,ann),daughter(eve,tom)) =

daughther(D,P)• unificação inversa

Generalização mínima de 2 cláusulas:• lgg(C1 :- P1, …, Q1. , C2 :- P2, …, Q2) = lgg(C1,C2) :- lgg(P1,P2), …, lgg(Q1,Q2).• ex, lgg(daughter(mary,ann) :-

female(mary),parent(ann,mary). , daughter(eve,tom) :- female(eve),parent(tom,eve).) = = daughter(D,P) :- female(D), parent(P,D).

Generalização mínima de 2 termos C1 e C2 relativa a BDE = {D1, …, Dn} a priori:

• rlgg(C1,C2) = lgg(C1 :- D1, …, Dn. , C2 :- D1, …, Dn)

Page 20: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Generalização mínima relativa: exemploGeneralização mínima relativa: exemplo

Com BDE = {parent(ann,mary). parent(ann,tom). parent(tom,eve). parent(tom,ian). female(ann). female(mary). female(eve).}

rlgg(daughter(mary,ann). , daughter(eve,tom).)

= lgg(daughter(mary,ann) :- BDE. , daughter(eve,tom) :- BDE. ).

= daughter(D,P) :- BDE, parent(ann,D0), parent(P,D), parent(P1,D1), parent(P2,D2), parent(P3,D3), parent(P4,D4), female(D1), female(D2), female(D).= daughther(D,P) :- parent(P,D),female(D).

Em GOLEM: premissas redundantes podadas usando bias semântico limitando

busca a cláusulas determinadas.

Page 21: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Busca top-down Busca top-down em reticulado de refinamentoem reticulado de refinamento

Adaptação de ID3 para representação da 1a ordem Espaço de hipótese:

• reticulado no qual cada no -generaliza seus filhos• em cima: conclusão a aprender sem premissa• em baixo: contradição ou hipótese mais específica Hms tal que:

Hms A R |= T+ (e Hms A R |T-)

Percorre reticulado de cima para baixo em largura 1a Cada passo implementa uma abordagem gerar & testar

• gerar: todas as hipóteses Hn em L(H) refinando a hipótese atual

• testar: função heurística de: número de D+ tal que: Hn A R |= T+ número de D- tal que: Hn A R |= T- tamanho de Hn

Page 22: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Busca top-down em reticulado de Busca top-down em reticulado de refinamento: exemplorefinamento: exemplo

daughter(D,P).

daughter(D,D). daughter(D,P) :- parent(P,D).

daughter(D,P) :- parent(D,X).

daughter(D,P):- female(D).

daughter(D,P):- female(D), female(D).

daughter(D,P):- female(D),

parent(P,D).

... ... ...

daughter(D,P):- parent(P,D),

female(D).

... ...

Page 23: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Derivação inversaDerivação inversa

Como: • A R H |= T A R T |= H A R T |= M(A R T) |= H H |= M(A R T)• G -generaliza S G |= S

Então, H pode ser computado em 2 passos:• 1: Deduz M(A R T) a partir de A R e de T • 2: Calcula H = {h L(H) | h -generaliza M(A R T)}

Page 24: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Restrições de L(H): motivaçãoRestrições de L(H): motivação

Se L(H) contem qualquer cláusula de Horn gerável:• por refinamento da cláusula sem premissa• por resolução inversa de 2 elementos de A R T+

Então:• espaço de busca (seja bottom-up ou top-down) • grande demais para ser explorado eficientemente• as vezes até infinito

Restrição de L(H): • meta-conhecimento heurístico a priori • permitindo limitar espaço de busca

Page 25: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Restrições sintáticas parametrizadasRestrições sintáticas parametrizadas

lista dos nomes de predicado permitidos em hipóteses

número máximo de premissas por cláusula número máximo de variáveis por cláusula profundidade máxima dos termos das cláusulas nível máximo dos termos das cláusulas:

• variável V é ligada em cláusula C :- P1, …, Pn sse: V C, ou i {1, …, n}, W V: V Pi W Pi W ligada em C :- P1, …,

Pn.

• cláusula ligada sse todas suas variáveis são ligadas ex, p(X) :- q(Z) não ligada, p(X) :- q(X,Y),r(Y,Z),u(Z,W) ligada.

• nível n(t) de um termo t em cláusula ligada C :- P1, …, Pn: 0 se t C, ou 1 + min(n(s)) se t Pi s Pi ex, n(C, grandfather(G) :- male(G), parent(G,F), parent(F,C)) = 2

Page 26: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Restrições semânticas de L(H): tipos e Restrições semânticas de L(H): tipos e modosmodos

Tipos:const(a). const(b). …clist([]).clist([H|T]) :- const(H), clist(T).

Modos: restrições sobre predicados • na conclusão (modeh) ou premissa (modeb) das regras• número de vezes que um predicado pode ser satisfeito• tipos dos seus argumentos• instanciação dos seus argumentos (constante #, variável de entrada + ou variável de saída -)• ex: modos para append

:- modeh(1,append(+clist,+clist,-clist))?:- modeh(1,append([+const|+clist],+clist,[-const|-clist]))?:- modeh(1,append(#clist,+clist,-clist))?:- modeb(1,append(+clist,+clist,-clist))?

Determinação:

Page 27: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Restrições semânticas de L(H): Restrições semânticas de L(H): determinaçãodeterminação

h(…,X0i,...) :- p1(...,X1j,…), …, pn(…,Xnk,…). determinada dados um conhecimento a priori B e exemplos D sse:• as instanciações dos X0j, …, Xij restringem os X(i+1)j a um

único valor, ie, i {1,…,n}, Xij pi, Xkl, k < I, ! v tal que:

Xij/v compatível com Xkl/vkl

Exemplo:• D: parent(jef,paul). parent(jef,ann). male(paul). female(ann).• hasFather(C) :- parent(P,C). determinada: P/jef• isFather(F) :- parent(F,C). não determinada: C/{paul;ann}

Torna aprendizagem eficiente (porém incompleto)

Page 28: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

Preferências sintáticas e probabilísticas Preferências sintáticas e probabilísticas

(H) = número de bits na codificação mínima de H Thm:

• H que minimiza (H) em L(H) também maximiza P(H|B E)• ie, a hipótese mais concisa sempre corresponde a mais

verossímil Prova: Thm de Bayes + Thm de Shannon Justificação téorica do navalha de Occam

Page 29: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: nas dimensões de ILPPROGOL: nas dimensões de ILP Tarefa:

• Grau de automação: interativo ou autônomo• Incremental (na apresentação dos dados): sim ou não• Semântica: não-monótona• Descoberta de predicados: ?• Entrada: D+ ou D+^D- ou D+^B ou D+^D-^B• Saída: um ou vários predicados, LP

Abordagem:• Operadores: derivação inversa, -generalização• Restrições da linguagem de hipótese L(H) (language

bias): sintáticas e semânticas parametrizadas e declarativas

• Estratégia de busca: Global: top-down, mais bottom-up bounded Local: poda espaço usando função heurística f(H)

estimando poderDePredição(H) x concisão(H)

Page 30: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: algoritmoPROGOL: algoritmo

Instância do algoritmo genérico de ILP com: inicialize: H = {obj(…,X,…) :- }. delete: dE, B H |= E escolha: H que maximiza f(H), função heurística de

busca aproximando (poderDePredição(H),concisão(H))

pode: • hipóteses mais específicas que M(B D)• hipóteses que não pode mais melhorar f(H)

critérioDeParada:• |falsos+| + |falsos-| < limiar de ruído, ou• E =

Page 31: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: função heurística de buscaPROGOL: função heurística de busca

f(H) = (P(p-n-c-h+1))/p, com:• P = |E+|• p = |E+ deduzidos de H| (verdadeiros +)• n = |E- deduzidos de H| (falsos -)• c = |H| (em número de literais)• h = |variáveis de saída não restritas|

Page 32: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: construir hipótese + específica PROGOL: construir hipótese + específica % Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search

depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeb(1,or5(+bool5, +bool5, -bool5).:- modeb(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

1/ d= implies5(4,4,4) mode declar or5(4,4,4) M(B d) not5(4,0) M(B d) or5(4,0,4) M(B d) or5(0,4,4) M(B d) or5(0,0,0) M(B d) not5(4,0) M(B d) M(B d) = or5(4,4,4) not5(4,0) or5(4,0,4) or5(0,4,4) or5(0,0,0) not5(4,0) implies5(4,4,4). maxspec{h | h H |= e} = or5(A,A,A)

not5(A,B) or5(A,B,A) or5(B,A,A) or5(B,B, B)

not5(B,A) implies5(A,A,A).

CProgol Version 4.4|- consult(implies5a)?[No contradictions found]yes|- generalise(implies5/3)?[Generalising implies5(4,4,4).][Most specific clause is]implies5(A,A,A) :- or5(A,A,A), not5(A,B), or5(A,B,A), or5(B,A,A), or5(B,B,B),

not5(B,A).

Page 33: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: Generalizar hipótese + PROGOL: Generalizar hipótese + especifica 1 especifica 1 % Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeh(1,or5(+bool5, +bool5, -bool5).:- modeh(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

% Generalising implies5(A,A,A).[C:0,1,0,0 implies5(A,A,A).][C:-5,1,1,0 implies5(A,B,A).] % pruned[C:2,3,1,0 implies5(A,B,B).] % 1st tried [C:0,2,0,1 implies5(A,A,B).] % pruned[C:1,5,2,1 implies5(A,B,C).] % 2nd % Specialising implies5(A,B,B)[C:0,3,1,0 implies5(A,B,B) :- or5(B,B,B).][C:0,3,1,0 implies5(A,B,B) :- or5(B,B,C).][C:0,2,0,0 implies5(A,B,B) :- or5(A,B,B).][C:-2,2,1,0 implies5(A,B,B) :- or5(A,B,A).][C:0,3,1,0 implies5(A,B,B) :- or5(A,B,C).][C:0,2,0,0 implies5(A,B,B) :- or5(B,A,B).][C:-2,2,1,0 implies5(A,B,B) :- or5(B,A,A).][C:0,3,1,0 implies5(A,B,B) :- or5(B,A,C).][C:0,3,1,0 implies5(A,B,B) :- or5(A,A,A).][C:0,3,1,0 implies5(A,B,B) :- or5(A,A,C).][C:0,3,1,0 implies5(A,B,B) :- not5(B,C).][C:0,3,1,0 implies5(A,B,B) :- not5(A,C).][C:-2,3,1,0 implies5(A,B,B) :- not5(B,C), or5(B,C,D).]...[C:-2,3,1,0 implies5(A,B,B) :- or5(A,A,C), not5(C,D).]

Page 34: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: Generalizar hipótese + PROGOL: Generalizar hipótese + especifica 2especifica 2

% Specialising implies5(A,B,C)[C:0,5,2,1 implies5(A,B,C) :- or5(A,A,A).]...[C:0,5,2,1 implies5(A,B,C) :- or5(B,B,D).][C:-2,3,1,0 implies5(A,B,C) :- or5(B,B,C), not5(C,D).]...[C:0,4,0,1 implies5(A,B,C) :- or5(A,B,B), not5(B,D).][C:0,5,2,1 implies5(A,B,C) :- not5(A,D).][C:0,5,2,1 implies5(A,B,C) :- not5(B,D).][C:0,4,0,0 implies5(A,B,C) :- or5(B,A,B), not5(A,D), or5(A,D,C).]...[C:-1,4,0,1 implies5(A,B,C) :- or5(A,B,B), not5(B,D), not5(D,E).][C:0,4,1,0 implies5(A,B,C) :- not5(A,D), or5(A,D,C).][C:-1,5,2,1 implies5(A,B,C) :- not5(A,D), or5(A,D,E).][C:2,5,0,0 implies5(A,B,C) :- not5(A,D), or5(B,D,C).] % BINGO![C:-3,3,1,1 implies5(A,B,C) :- not5(A,D), or5(B,D,B).][C:-1,5,2,1 implies5(A,B,C) :- not5(A,D), or5(B,D,E).][122 explored search nodes, f=2,p=5,n=0,h=0][5 redundant clauses retracted]

% Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeh(1,or5(+bool5, +bool5, -bool5).:- modeh(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

Page 35: Programação em Lógica Indutiva Jacques Robin CIn-UFPE

PROGOL: exemplo com ruídoPROGOL: exemplo com ruído