Sistemas de Manutenção da Verdade-1 Sistemas de Manutenção da Verdade-2 Sistemas de Manutenção da Verdade TMS "Truth Maintenance System" Um sistema de manutenção da verdade ou TMS é um mecanismo que auxilia os motores de inferência a gerir convenientemente as dependências entre hipóteses e as conclusões delas derivadas. Objectivos de um TMS: 1. Identificar a responsabilidade pelas conclusões Fornecer informação para explicar o raciocínio, indicando as premissas que permitem derivar cada conclusão. 2. Recuperar de inconsistências Detectar as hipóteses/assunções que levaram a uma inconsistência, permitindo determinar quais retirar para remover a inconsistência. 3. Manter uma "cache" de inferências Memorizar informação sobre as conclusões já derivadas de forma a evitar repetir o processo de derivação, caso voltem a ser necessárias. Sistemas de Manutenção da Verdade-3 Sistemas de Manutenção da Verdade-4 4. Guiar o retrocesso Quando ocorre uma falha na prova de uma conclusão, permitir guiar o retrocesso não para o ponto de escolha imediatamente anterior (retrocesso cronológico clássico), mas sim para um ponto de escolha de que a falha depende (retrocesso guiado pelas dependências). 5. Raciocínio por omissão Registar que uma conclusão depende da ausência ou omissão de uma certa informação (por exemplo quando se conclui algo a partir de not(p) em Prolog ou em Jess), de modo a facilmente retirar essa conclusão se a informação em causa for adicionada ou passar a ser derivável. Sistema de raciocínio Motor de Inferência Sistema de raciocínio ou Resolvedor de problemas Justificações Crenças Explicações TMS = Motor de inferência + TMS
Sistemas de Manutenção da Verdade-5 Comunicação do Motor de inferência com o TMS: Nós e Justificações - Cada dado importante do sistema de raciocínio (facto, regra, conclusão,...) deve ser representado por um nó do TMS N1: advogado(joão) N2: advogado(joão) rico(joão) N3: rico(joão) - As deduções do motor de inferência são comunicadas ao TMS como justificações. As justificações podem assumir várias formas, consoante o tipo de TMS e o tipo de dedução, mas conceptualmente podemos imaginá-las da forma (nó_consequente [tipo_inferência] lista_nós_antecedentes) N1 ( N3 Modus_ponens (N1, N2) ) N3 ou apenas N2 (N3 (N1 N2)) Alguns Tipos de TMS's Sistemas de Manutenção da Verdade-6 JTMS ("Justification Based Truth Maintenance Systems"): Tipo mais simples de TMS sobre o qual os outros se baseiam. Tipicamente só pode representar cláusulas definidas (de Horn) fornecidas pelo motor de inferência. Permite responder a perguntas sobre se um nó é acreditado no estado corrente (contexto corrente). Alguns tipos de JTMS permitem usar justificações não monótonas (dependentes da ausência de uma crença). LTMS ("Logic Based Truth Maintenance Systems"): Semelhante ao JTMS mas permitindo representar explicitamente negações, podendo representar qualquer fórmula do cálculo proposicional. ATMS ("Assumption Based Truth Maintenance Systems"): Só pode representar cláusulas de Horn fornecidas pelo motor de inferência, tal como um JTMS. Permite, no entanto, responder a perguntas sobre todos os contextos em que um nó pode ser acreditado, sem necessidade de mudar de estado corrente. Sistemas de Manutenção da Verdade-7 Sistemas de Manutenção da Verdade-8 Evolução Histórica TMS (Doyle,1979) JTMS RUP (McAllester,1982) LTMS MBR (Martins e Shapiro,1983) ATMS (de Kleer,1984 e 1986) Aplicações ATMS síntese análise actualização de BD s (Finger, 1987) (Fagin et al, 1983) Diagnóstico Diagnóstico Abdução Convencional a partir dos (Poole et al,1985) 1ºs Princípios (Reiter,1987) JTMS Deduções no Motor de Inferência Justificações: John Doyle, 1979 Nós + Justificações No TMS - "Razões" que permitem derivar a crença num nó - Dependências entre um nó e os nós correspondentes aos antecedentes imediatos na derivação - Um nó pode ter várias justificações - JTMS de Doyle: variante que aceita justificações não monótonas (raciocínio por omissão)
Sistemas de Manutenção da Verdade-9 Sistemas de Manutenção da Verdade-10 Etiquetas IN e OUT versus Verdade e Falsidade - Os nós têm uma etiqueta associada que pode ter dois valores (estatutos) distintos: IN um nó está IN se tem associada uma justificação que é válida no estado corrente do TMS OUT um nó está OUT se: não tem nenhuma justificação nenhuma das suas justificações é válida - O JTMS só trabalha com cláusulas definidas logo não representa directamente a negação explícita. Quando é necessário raciocinar sobre a negação de um facto, por exemplo P, usam-se dois nós: um para representar P e outro para representar P. - Devido ao JTMS usar dois nós distintos para representar P e P podemos considerar que trabalha com 4 valores lógicos distintos e não apenas dois: verdade, falsidade, contradição e desconhecido. P IN OUT IN contradição P falso OUT P verdadeiro desconhecido P Sistemas de Manutenção da Verdade-11 Sistemas de Manutenção da Verdade-12 2 tipos de justificações: - "support list" SL - "conditional proof" CP Justificações SL: (SL <lista de hipóteses IN> <lista de hipóteses OUT>) Exemplo: Motor de inferência: Se P(X) e not T(X) então V(X) P(a) V(a) Uma justificação SL é válida se: - todos os nós da <lista de hipóteses IN> estão IN - todos os nós da <lista de hipóteses OUT> estão OUT Nós JTMS: Justificações Etiqueta N1 P(a) ( SL ( ) ( ) ) IN N2 T(a) OUT (sem justificação) N3 V(a) ( SL (N1) (N2) ) IN
Sistemas de Manutenção da Verdade-13 Sistemas de Manutenção da Verdade-14 Classificação de nós de acordo com a justificação válida de suporte a eles associada: - premissas: uma justificação (sempre válida) da forma ( SL ( ) ( ) ) - deduções (monótonas): justificação válida da forma ( SL ( N1... Nk ) ( ) ) com k 1 - assunções (deduções não monótonas): justificação válida da forma ( SL ( N1... Nk ) ( P1... Pm ) ) com k 0 e m 1 Acções básicas no JTMS: - criar um nó - adicionar ou retirar uma justificação para um nó - marcar um nó como contradição (por indicação do motor de inferência) Procedimentos do JTMS: Procedimento de revisão de crenças: Dada uma nova justificação para um nó (ou a eliminação de uma justificação para um nó), determinação do estatuto IN ou OUT de todos os nós eventualmente afectados Procedimento de retrocesso guiado pelas dependências: "Dependency directed backtracking" Dado um nó marcado como contradição, Determinar as assunções que estão na sua origem Registar a inconsistência da conjunção dessas assunções Alterar o estatuto de uma dessas assunções para resolver a contradição Manutenção da Verdade em Jess Sistemas de Manutenção da Verdade-15 - O motor de inferência do Jess inclui um mecanismo de manutenção da verdade, do tipo JTMS. - O TMS toma conhecimento de uma nova justificação para um certo facto, quando este é derivado por aplicação de uma regra que usa o elemento condicional logical no lado esquerdo (defrule exemplo (logical (alunonapauta $?x)) (logical (resultado $?x?y &:(>=?y 10))) => (assert (aprovado $?x)) ) Se esta regra for aplicada para o aluno Jorge Silva, a partir dos factos (alunonapauta Jorge Silva) e (resultado Jorge Silva 12), o novo facto inserido (aprovado Jorge Silva) ficará com uma justificação associada constituída por esses dois factos antecedentes na lista IN. Jess> (defrule exemplo TRUE => (logical (alunonapauta $?x)) (logical (resultado $?x?y &:(>=?y 10)) (assert (aprovado $?x)) ) Jess> (assert (alunonapauta Ana Barata)) <Fact-0> Jess> (assert (resultado Ana Barata 14)) <Fact-1> Jess> (run) 1 Jess> (facts) f-0 (MAIN:: alunonapauta Ana Barata) f-1 (MAIN:: resultado Ana Barata 14) f-2 (MAIN:: aprovado Ana Barata) For a total of 3 facts. Jess> (watch facts) TRUE Jess> (retract 0) <== f-0 (MAIN:: alunonapauta Ana Barata) <== f-2 (MAIN:: aprovado Ana Barata) TRUE Sistemas de Manutenção da Verdade-16
Sistemas de Manutenção da Verdade-17 - Quando um facto f 1 é retirado, se f 1 está a suportar logicamente outro facto f 2, isto é se f 2 tem uma única justificação de suporte associada que inclui f 1, então f 2 é automaticamente retirado. - Um facto pode ter várias justificações de suporte associadas, isto é, pode ter sido inserido múltiplas vezes, com diferentes suportes lógicos. Um tal facto só é automaticamente retirado quando cada um desses suportes lógicos tiver sido invalidado (pelo menos um dos seus factos foi retirado). - Uma justificação para um facto pode depender da ausência de uma crença, isto é, logical pode ser aplicado sobre um not - Um facto inserido sem indicar explicitamente um suporte lógico é incondicionalmente suportado (é uma premissa) e nunca é automaticamente removido, mesmo que também tenha sido inserido por outra via com factos de suporte. Sistemas de Manutenção da Verdade-18 A função (dependencies <fact-id>) retorna a lista de justificações de suporte associadas ao facto indicado como argumento. Cada justificação é um objecto Java da classe jess.token, que por sua vez representa uma lista de factos. Jess> (facts) f-0 (MAIN:: alunonapauta Ana Barata) f-1 (MAIN:: resultado Ana Barata 14) f-2 (MAIN:: aprovado Ana Barata) For a total of 3 facts. Jess> (bind?justifs (dependencies 2)) (<Java-Object:jess.Token>) A variável?justifs ficou instanciada com uma lista com um só objecto da classe jess.token que representa a única justificação de suporte ao facto 2 A classe jess.token tem vários métodos públicos: size() retorna o número de factos na justificação fact(int i) retorna o i-ésimo facto dessa justificação tostring() retorna uma string descrevendo o Token Jess> ( foreach?j?justifs (printout t (call?j tostring) crlf) ) [Token: size=2; sortcode=1; negcnt=0; facts=(main:: alunonapauta Ana Barata);(MAIN:: resultado Ana Barata 14);] Sistemas de Manutenção da Verdade-19 Esboço do algoritmo de revisão de crenças num JTMS (no caso de adição de justif.): Dada uma nova justificação para um nó N: 1. Adiciona a nova justificação a N Se N estava IN ou a justificação é inválida termina 2. Se não há nenhum nó consequência de N, muda o estatuto de N para IN e termina, caso contrário, constroi a lista L com N e as suas repercussões (consequências directas ou indirectas), memoriza o estatuto dos nós em L e atribui-lhes o estatuto temporário NULO 3. Para cada nó N i em L ainda com estatuto NULO, analisa as justificações associadas e, caso haja uma válida ou todas sejam inválidas muda o estatuto de N i respectivamente para IN ou OUT e repete este passo sobre as consequências de N i ainda com estatuto NULO Sistemas de Manutenção da Verdade-20 4. Resolução de circularidades (ver adiante): Tenta atribuir coerentemente um estatuto aos nós de L ainda NULOS, assumindo que os nós mencionados nas justificações associadas aos quais não foi possível atribuir estatuto no passo 3 estão OUT 5. Se um nó de L marcado como contradição está IN, invoca o procedimento de retrocesso guiado pelas dependências 6. Compara os novos estatutos dos nós em L com os anteriormente memorizados e envia informação sobre as alterações
Sistemas de Manutenção da Verdade-21 Podem surgir argumentos circulares o que dificulta, ou mesmo impossibilita, a atribuição/revisão do estatuto dos nós Sendo as repercussões de N o conjunto de nós cujas justificações dependem directa ou indirectamente de N, um argumento circular pode surgir se N repercussões(n) Exemplo: Afirmação Nó Justificação professor(a) N1 (SL () (N2)) estudante(a) N2 (SL () (N1)) Sistemas de Manutenção da Verdade-22 3 tipos de circularidades: A) Impossível atribuir consistentemente um estatuto Ex: Nó Justificação N (SL () (N) ) B) Possível, sendo necessário que pelo menos um dos nós fique IN Ex: Nó Justificação N1 (SL () (N2) ) N2 (SL () (N1) ) Atribuições de estatutos consistentes com as justificações: [ N1 IN, N2 OUT ] ou [ N1 OUT, N2 IN ] C) Possível, podendo considerar-se todos os nós OUT Ex: Nó Justificação N1 (SL (N2) () ) N2 (SL (N1) () ) Atribuições de estatutos consistentes com as justificações: [ N1 OUT, N2 OUT ] ou [ N1 IN, N2 IN ] Sistemas de Manutenção da Verdade-23 CUIDADOS A TER COM OS TMS s Os algoritmos utilizados para construir TMS s são complicados. A complexidade computacional é pelo menos tão grande como a da inferência proposicional, isto é NP. O uso de um TMS não é uma panaceia (excepto para problemas pequenos). Quando utilizado cuidadosamente (com uma escolha adequada sobre o que deve ser registado como suportando os factos derivados) é uma parte importante do sistema lógico de raciocínio.