Revisão de Modelos CTL Paulo de Tarso Guerra Oliveira Renata Wassermann Departamento de Ciência da Computação Instituto de Matemática e Estatı́stica Universidade de São Paulo Resumo Verificação de modelos é uma das mais eficientes técnicas de verificação automática de sistemas. No entanto, as ferramentas de verificação usualmente não fornecem informações sobre como reparar inconsistências. Em nossa dissertação, mostramos que abordagens desenvolvidas para a atualização de modelos inconsistentes da lógica de árvore computacional (CTL) não são capazes de lidar com todos os possı́veis tipos de alterações em modelos. Introduzimos então o conceito de revisão de modelos CTL: uma abordagem baseada em revisão de crenças para o reparo de modelos inconsistentes em um contexto estático. Relacionamos nossa proposta com trabalhos clássicos em revisão de crenças, definimos um operador de revisão de modelos e mostramos que este obedece postulados de racionalidade clássicos de revisão de crenças. Elaboramos um algoritmo de revisão baseado no algoritmo utilizado pela abordagem de atualização de modelos. Discutimos sobre problemas e limites deste algoritmo e mostramos que essa estratégia de adaptação não é uma solução apropriada. Palavras-chave: Revisão de crenças, lógica de árvore computacional, verificação de modelos Sobre o Trabalho Nı́vel: Dissertação de Mestrado. Data de conclusão: 16 de dezembro de 2010. Banca examinadora: Profa. Dra. Renata Wassermann (IME - USP), Profa. Dra. Leliane Nunes de Barros (IME - USP), Prof. Dr. Paulo Eduardo Santos (FEI). Versão on-line da dissertação: http://www.ime.usp.br/~paulotgo/ mestrado/dissertacao.pdf. Publicações derivadas: resumo expandido “Belief Revision on Computation Tree Logic [8]” nos proceedings da 20th International Joint Conference on Artificial Intelligence (IJCAI’11 Doctoral Consortium); artigo completo “Revision of CTL Models [7]” nos proceedings da 12th IberoAmerican Conference on Artificial Intelligence (IBERAMIA’10). 1 Introdução Verificar formalmente um sistema é uma maneira de assegurar que erros de projeto não se propaguem para a implementação do sistema. No entanto, as atuais ferramentas de verificação não possuem mecanismos que auxiliem o projetista no reparo de modelos de sistema incorretos. Proposta por Clarke e Emerson, a verificação de modelos [4,10] permite que o projetista verifique quando um modelo de sistema satisfaz (ou não) uma dada especificação formal. Uma especificação formal nada mais é que o conjunto de propriedades que definem o comportamento do sistema. Quando alguma dessas propriedades não é satisfeita, temos o que chamamos de inconsistência de especificação. Nas últimas décadas, muitos trabalhos aprimoraram a verificação de modelos, resultando em eficientes algoritmos de verificação. Contudo, a maioria das ferramentas de verificação, quando encontram uma inconsistência de especificação, apenas informam o caminho que a ocasiona (caminho contraexemplo). Apesar de útil, essa informação pode não ser suficiente para indicar como o modelo deve ser reparado. Quanto mais complexo o sistema, mais complexa é sua modelagem e assim, mais difı́cil é corrigir seus erros. Em geral, ferramentas de verificação não possuem mecanismos capazes de auxiliar na tarefa de correção, o que não as credencia como ferramentas completas para o reparo de sistemas. Sendo possı́vel implementar a verificação de modelos por meio de algoritmos rápidos e eficazes, o problema se voltou a como construir ferramentas capazes de corrigir automaticamente modelos inconsistentes de sistemas. 1.1 Motivação Buccafurri et al [2] foi o primeiro trabalho a desenvolver um arcabouço formal integrando verificação de modelos e revisão abdutiva de teorias para realizar o diagnóstico e reparo de erros em programas concorrentes. Contudo, apesar de ser bem sucedida para seus propósitos, o conceito de modificação adotado é um tanto restrito. Zhang e Ding [16] propõem um arcabouço para atualização de modelos que supre as deficiências apresentadas pelo método de Buccafurri et al.. Seu arcabouço está fundamentado em princı́pios de mudanças de crenças. A mudança de crenças possui duas principais vertentes: revisão de crenças [1] e atualização de crenças [12]. A revisão de crenças trata de como um agente deve incorporar informações sobre um mundo estático, onde a nova crença refina ou corrige o conhecimento do agente sobre o mundo. Já a atualização de crenças lida com informações provenientes de mudanças no mundo, mudanças essas que alteram a maneira como o agente deve interpretá-lo. Zhang e Ding [16] propuseram um arcabouço para o que chamaram de atualização de modelos CTL, uma integração entre os conceitos de verificação de modelos e de atualização de crenças. Eles especificaram um procedimento para a atualização mı́nima de modelos e analisaram suas propriedades semânticas e computacionais. Apesar da similaridade entre atualização de crenças e revisão de crenças, o uso da abordagem incorreta pode acarretar em significativa perda de informação. Em [7] argumentamos que uma abordagem baseada em atualização de crenças não é apropriada para todos os casos. Essa é a nossa principal motivação para formulação de uma nova abordagem baseada em revisão de crenças para mudanças em modelos quando o reparo de especificações ocorrer em um contexto estático. 1.2 Justificativa A revisão de especificações não pode ser realizada pela simples aplicação da revisão de crenças. Isso porque nem todos os resultados conhecidos de revisão de crenças podem ser aplicados nessa abordagem. A verificação de modelos baseiase em lógicas temporais, contudo a maioria dos resultados obtidos assumem propriedades que essas lógicas não possuem. Souza e Wassermann [14] abordam o uso prático de revisão de crenças para o reparo de modelos inconsistentes. Os autores criaram uma ferramenta capaz de gerar sugestões de reparo para modelos descrito segundo a linguagem SMV. Acreditamos no entanto que a técnica poderia explorar melhor os conceitos de revisão, sendo possı́vel desenvolver uma abordagem que possua fundamentos sólidos na teoria clássica de revisão de crenças. Direcionamos nossa dissertação à formalização do conceito de revisão de modelos CTL: uma abordagem baseada em revisão de crenças para o reparo de modelos inconsistentes em um contexto estático. Relacionamos nossa proposta a trabalhos clássicos em revisão de crenças e discutimos questões relativas a sua implementação. 1.3 Contribuições As principais contribuições do nosso trabalho são: 1. Esclarecemos a diferença entre revisão de modelos e atualização de modelos. Mostramos que existem casos onde a atualização gera resultados menos significativos do que o esperado, sendo a revisão de modelos mais adequada. 2. Propomos um arcabouço formal para revisão de modelos CTL. Utilizamos as operações primitivas de Zhang e Ding [16] para definir o critério de mudança minimal. Estudamos a relação entre nossa proposta de revisão de modelos e a abordagem tradicional de revisão de crenças, em especial mostramos que nosso operador obedece os postulados AGM [1] para revisão. 3. Desenvolvemos um algoritmo formal para revisão de modelos CTL. Dados um conjunto de modelos que satisfazem uma especificação e uma propriedade expressa por uma fórmula CTL, nosso algoritmo é capaz de gerar modelos que satisfazem esta propriedade e que se diferenciam minimamente daqueles fornecidos como entrada. Estes modelos gerados podem ser vistos como possı́veis correções para a especificação original. 2 2.1 Fundamentação Teórica Lógica de Árvore Computacional Lógicas temporais são um tipo de lógica modal onde podemos representar e raciocinar sobre o tempo. Lógica de árvore computacional (Computation Tree Logic, ou simplesmente CTL)[4,10] é uma lógica temporal que modela o futuro como ramificações de uma árvore e, devido a isso, pode quantificar sobre os diversos caminhos de execução que um sistema pode tomar. Nas definições 1 e 3, mostramos brevemente a sintaxe e semântica da CTL (ver [10] para maiores detalhes). Definição 1 (Sintaxe). Uma fórmula CTL tem a seguinte sintaxe: ϕ ::= > | p | (¬ϕ) | (ϕ ∧ ϕ) | EXϕ | EGϕ | E[ϕU ϕ] onde p é uma fórmula atômica, ¬, ∧ os conectivos lógicos clássicos e os demais elementos os operadores temporais. Usamos ⊥ para denotar ¬>, e outros operadores temporais podem ser derivados de EX, EG e EU : AXφ = ¬EX¬φ; AGφ = ¬EF¬φ; AFφ = ¬EG¬φ; EFφ = E[>Uφ]; A[φUβ] = ¬E[¬βU¬φ ∧ ¬β] ∧ ¬EG¬β. Cada operador temporal consiste de um quantificador de caminho (E, “existe um caminho”, or A, “para todos os caminhos”) seguido por um quantificador de estado (X, “próximo estado”, U, “até que”, G, “todos os estados” or F, “algum estado futuro”). Definição 2. Seja P um conjunto finito de proposições, um modelo de Kripke é uma tripla M = (S, R, L), onde 1. S é um conjunto de estados; 2. R ⊆ S × S, onde ∀s ∈ S, ∃s0 ∈ S tal que (s, s0 ) ∈ R; 3. L : S → 2P é uma função de rotulação, tal que ∀s ∈ S, L(s) determina todas as proposições verdadeiras em s. Deste ponto em diante, sempre que nos referirmos à um modelo CTL estamos na verdade nos referindo a um modelo de Kripke conforme a Definição 2. Definição 3 (Semântica). Seja M = (S, R, L) um modelo CTL, s ∈ S um estado de M e φ uma fórmula CTL. Definimos (M, s) φ indutivamente como (M, s) >. (M, s) p sse p ∈ L(s). (M, s) ¬φ sse (M, s) 6 φ. (M, s) φ1 ∧ φ2 sse (M, s) φ1 e (M, s) φ2 . (M, s) EXφ sse ∃s0 ∈ S tal que (s, s0 ) ∈ R e (M, s0 ) φ. (M, s) EGφ sse existe um caminho π = [s0 , s1 , . . . ] em M tal que s0 = s e (M, si ) φ para todo i ≥ 0. 7. (M, s) E[φ1 U φ2 ] sse existe um caminho π = [s0 , s1 , . . . ] em M tal que s0 = s, ∃i ≥ 0, (M, si ) φ2 e ∀j < i, (M, sj ) φ1 . 1. 2. 3. 4. 5. 6. Dado um modelo CTL M = (S, R, L) e seu conjunto de estados iniciais Init(S) ⊆ S, dizemos que M φ se e somente se (M, s) φ para algum s ∈ Init(S). 2.2 Verificação de Modelos CTL Métodos de verificação formal checam quando um modelo de sistema, descrito em uma linguagem formal, satisfaz um dado conjunto de propriedades desejadas. Verificação de modelos [4,10] é provavelmente o método de verificação mais comumente utilizado. Segundo [4], verificação de modelos consiste no processo de computar a resposta para o problema de checar quando (M, s) φ vale, onde φ é uma formula temporal, M é um modelo do sistema em consideração, s um estado desse modelo, e a relação de satisfação. Neste trabalho, nós assumimos apenas um tipo de verificação de modelos, a verificação de modelos CTL. Nós assumimos que os sistemas são descritos por estruturas de Kripke e que as propriedades desejadas são representadas por formulas CTL. 2.3 Revisão de Crenças Revisão de crenças trata do problema de adaptar a crença de um agente a fim de incorporar um nova informação, possivelmente inconsistente como o que o agente costumava acreditar. Em [1], Alchourrón, Gärdenfors e Makinson propuseram um conjunto de postulados os quais métodos de revisão de crenças devem satisfazer, bem como construções de funções de revisão que obedecem estes postulados. Este trabalho se tornou conhecido como o Paradigma AGM. Os postulados AGM guiam as operações de revisão através de um princı́pio de mudança mı́nima, isto é, nada deve ser adicionado (ou removido) de um conjunto de crenças exceto se extremamente necessário para o sucesso da revisão. SejaK um conjunto de crenças e α uma única crença, denotamos por K ∗ α o resultado de revisar K por α. A operação K ∗ α não possui uma única definição, mas é sempre restringida pelos postulados de racionalidade. Aqui, utilizamos a notação adotada em [11], onde os autores sugerem a reformulação dos postulados AGM quando um conjunto de crenças é representado por uma única sentença ψ. O resultado da revisão de ψ por φ é denotado por ψ ◦ φ: (R1) ψ ◦ φ φ. (R2) Se ψ ∧ φ é satisfazı́vel, então ψ ◦ φ ≡ ψ ∧ φ (R3) Se φ é satisfazı́vel, então ψ ◦ φ é satisfazı́vel. (R4) Se ψ1 ≡ ψ2 e φ1 ≡ φ2 , então ψ1 ◦ φ1 ≡ ψ2 ◦ φ2 . (R5) (ψ ◦ φ) ∧ µ ψ ◦ (φ ∧ µ) (R6) Se (ψ ◦ φ) ∧ µ é satisfazı́vel, então ψ ◦ (φ ∧ µ) (ψ ◦ φ) ∧ µ 2.4 Atualização de Crenças O propósito da atualização de crenças, assim como a revisão de crenças, é preservar a consistência de um conjunto de crenças quando uma nova informação é adicionada. Enquanto a revisão lida com mundos estáticos, a atualização de crenças atua sobre mundos dinâmicos, onde a nova informação descreve mudanças que ocorreram no mundo. Esta é a distinção fundamental entre elas: a natureza da mudança de crença. Em revisão de crenças, a nova informação indica um refinamento do conjunto de crenças, ou mesmo que as crenças atuais não são capazes de descrever o mundo corretamente. Mas em atualização de crenças, a nova informação indica uma mudança e o resultado da atualização não se refere a como o mundo costumava ser, apenas como ele estará após a mudança. O Exemplo 1 ilustra bem a distinção entre revisão e atualização. Exemplo 1. Imagine que um quarto existem três objetos: um livro, uma revista e uma mesa. A proposição b significa “o livro está sobre a mesa” enquanto que m significa “a revista está sobre a mesa”. Suponha que acreditamos que ψ ↔ (b ∧ ¬m) ∨ (¬b ∧ m), isto é, ou o livro ou a revista está sobre a mesa, mas não ambos. Assim, ψ possui apenas dois mundos (modelos) possı́veis: I, b é verdade e m falso; ou J, b é falso e m é verdade. Suponha agora que enviamos um robô para pôr o livro sobre a mesa. Desejamos então incorporar a nossas crenças a nova informação φ ↔ b. Está nova crença também possui dois únicos modelos: I e um novo L, onde ambos, livro e revista, estão sobre a mesa. Devemos selecionar dentre os modelos de φ os mais próximos aos modelos de ψ. Assumiremos como relação de distância o número de proposições com diferentes valores verdade. O modelo I está, claro, a uma distância 0 dele mesmo e a uma distância 2 de J (ambas proposições diferentes). Por outro lado, L está a uma distância 1 de I e J (uma posição diferente). O operador de revisão irá selecionar apenas o modelo I porque este é o modelo mais próximo (distância 0) do conjunto original. Mas intuitivamente isso não nos parece correto. Após o robô executar sua ação, tudo que sabemos é que o livro estará sobre a mesa, mas continuamos sem saber a posição da revista. Katsuno e Mendelzon [12] propuseram um conjunto de postulados para caracterizar operações racionais de atualização. Seja ψ uma fórmula que representa uma base de crenças finita, φ a nova crença e ψ ψ o resultado da atualização de ψ por φ, os oito postulados definidos por Katsuno e Mendelzon são: (U1) (U2) (U3) (U4) (U5) (U6) (U7) (U8) ψ φ φ. Se ψ φ, então ψ φ ≡ ψ. Se ambos ψ e φ são satisfazı́veis, então ψ φ é também satisfazı́vel. Se ψ1 ≡ ψ2 e φ1 ≡ φ2 , então ψ1 φ1 ≡ ψ2 φ2 . (ψ φ) ∧ µ ψ (φ ∧ µ) Se ψ φ1 φ2 e ψ φ2 φ1 , então ψ φ1 ≡ ψ φ2 Se ψ é completo, então (ψ φ1 ) ∧ (ψ φ2 ) ψ (φ1 ∨ φ2 ) Se (ψ1 ∨ ψ2 ) φ ≡ (ψ1 φ) ∨ (ψ2 φ) Herzig [9] mostra que, mais que distintos, revisão e atualização são mutualmente incompatı́veis, já que não pode existir um operador capaz de satisfazer os dois conjunto de postulados simultaneamente. 2.5 Atualização de Modelos CTL No contexto das mudanças em especificações formais, modelos são descritos por modelos de Kripke e propriedades por fórmulas CTL. Zhang e Ding [16] definem cinco operações básicas onde todas as mudanças possı́veis sobre modelo M = (S, R, L) podem ser alcançadas: PU1: PU2: PU3: PU4: PU5: Adicionar um par ao conjunto R Remover um par do conjunto R Alterar a função de rotulação de um estado em S Adicionar um estado à S Remover um estado isolado de S Dados dois modelos CTL, M = (S, R, L) e M 0 = (S 0 , R0 , L0 ), para cada P U i (i = 1, . . . , 5), denotamos por Dif fP U i (M, M 0 ) a diferença entre M e M 0 , onde M 0 é um modelo atualizado de M , tal que 1. 2. 3. 4. 5. Dif fP U 1 (M, M 0 ) = R0 − R (relações adicionadas); Dif fP U 2 (M, M 0 ) = R − R0 (relações removidas); Dif fP U 3 (M, M 0 ) = {s | s ∈ S ∩ S 0 and L(s) 6= L0 (s)} (mudanças de rótulo); Dif fP U 4 (M, M 0 ) = S 0 − S (estados adicionados); Dif fP U 5 (M, M 0 ) = S − S 0 . (estados removidos). Baseados nessas métricas, Zhang e Ding definem a ordem ≤M : uma medida da diferença entre dois modelos CTL com respeito a um terceiro modelo M . Definição 4. Sejam M = (S, R, L), M1 = (S1 , R1 , L1 ) e M2 = (S2 , R2 , L2 ) três modelos CTL. Dizemos que M1 é pelo menos tão próximo de M quanto M2 , denotado por M1 ≤M M2 , se e somente se para cada conjunto de operações PU1-PU5 que transformam M em M2 , existe um conjunto de operações PU1PU5 que transformam M em M1 tal que: 1. para cada i (i = 1, . . . , 5), Dif fP U i (M, M1 ) ⊆ Dif fP U i (M, M2 ), e 2. se Dif fP U 3 (M, M1 ) = Dif fP U 3 (M, M2 ), então ∀s ∈ Dif fP U 3 (M, M1 ), dif f (L(s), L1 (s)) ⊆ dif f (L(s), L2 (s)), onde dif f (A, B) = (A−B)∪(B −A) para qualquer dois conjuntos A e B. Denotamos por M1 <M M2 se M1 ≤M M2 e M2 6≤M M1 . Baseado nessa relação de ordem, os autores definem formalmente o conceito de atualização admissı́vel: Definição 5. Dado um modelo M = (S, R, L), M = (M, s0 ), onde s0 ∈ S, e uma fórmula CTL φ, um modelo U pdate(M, φ) é dito uma atualização admissı́vel de M se as seguintes condições valem: 1. U pdate(M, φ) = (M 0 , s00 ), (M 0 , s00 ) φ, onde M 0 = (S 0 , R0 , L0 ) e s00 ∈ S 0 . 2. não existe outro modelo M 00 = (S 00 , R00 , L00 ) e s000 ∈ S 00 tal que (M 00 , s000 ) φ e M 00 <M M 0 . P oss(U pdate(M, φ)) denota o conjunto de todos as atualizações admissı́veis de M para satisfazer φ. A principal contribuição do trabalho de Zhang e Ding é talvez a análise semântica da atualização de modelos CTL. Eles relacionam sua abordagem a abordagens clássicas de atualização de crenças, identificando pontos em comum entre elas. Para isso, os autores definem um operador c baseado na abordagem de modelos possı́veis de Winslett [15]. A definição formal de c é dada por: Definição 6. Seja M = (S, R, L) um modelo CTL, Init(S) ⊆ S o conjunto de estados iniciais de M e φ uma fórmula CTL. M é chamado um modelo de φ se e somente se (M, s) φ para algum s ∈ Init(S). Denotamos por M od(φ) o conjunto de todos os modelos de φ. O operador de atualização de modelos c é definido como: [ M od(ψ c φ) = P oss(U pdate((M, s), φ)) (M,s)∈M od(ψ) Zhang and Ding ([16], Teorema 1) demonstram que o operador c satisfaz todos os postulados de Katsuno e Mendelzon para atualização. Dessa forma, eles evidenciam que estes postulados podem caracterizar um escopo mais amplo de operadores de atualização do que apenas a tradicional aplicação em lógica proposicional. Neste sentido, Zhang e Ding mostram que os postulados KM são essenciais para qualquer abordagem baseada em atualização de modelos. 3 Nossa Abordagem: Revisão de Modelo CTL A necessidade da revisão de modelos CTL é motivada pela diferença fundamental entre revisão de crenças e atualização de crenças: o tipo de problema em que cada um deve ser aplicada. Como vimos nas seções 2.3 e 2.4, atualização de crenças é usada para modificar um conjunto de crenças de modo a acomodar uma nova informação sobre um mundo dinâmico, enquanto a revisão de crenças é usada quando a nova informação diz respeito a um mundo que não mudou. Para ilustrar uma situação onde revisão de crenças é mais adequada, voltemos ao Exemplo 1. Vimos que um operador de atualização geraria a nova base de crença ψ 0 ↔ b, enquanto que um operador de revisão geraria uma base ψ 00 ↔ (b ∧ ¬m). Intuitivamente, a atualização resulta em um comportamento mais racional, já que a situação não nos fornece qualquer informação sobre a posição da revista. Suponha porém que, em vez de enviar o robô para pôr o livro sobre a mesa, desejamos apenas saber a posição do livro, sem alterá-la. Suponha então que quando o robô sai da sala ele nos informa que o livro está sobre a mesa. A nova crença é a mesma, φ ↔ b e, consequentemente, os resultados da revisão e da atualização serão idênticos ao do caso anterior. No entanto, nesta nova situação o resultado da revisão parece mais apropriado. De acordo com a informação φ ↔ b, duas configurações do quarto são possı́veis: (1) o livro está sobre a mesa e a revista no chão (b ∧ ¬m) ou (2) ambos, livro e revista, estão sobre a mesa (b ∧ m). Na situação onde enviamos um robô para observar a sala, nós costumávamos acreditar que o livro e a revista não estavam no mesmo lugar. Sabemos que nada no quarto mudou, então não há razão para termos dúvidas sobre a localização da revista. Podemos ver que nesta situação a revisão produziu um resultado mais informativo. Observe que, em ambos casos, a base de crenças ψ e a nova informação φ são as mesmas, o que muda é como o indivı́duo interage com o mundo, e, claro, o modo como devemos interpretar isso. Acreditamos que o mesmo problema de distinção entre mundos estáticos e dinâmicos acontece quando lidamos com o reparo de especificações de sistemas. Existem dois principais motivos para modificar uma especificação de sistema: (1) quando ela falha em satisfazer algum requisito e (2) quando ela precisa ser adaptada a um novo requisito. Quando modificamos uma especificação motivado por (1), nós acreditamos que repará-la por meio de uma abordagem baseada em revisão de crenças pode gerar um resultado mais informativo que aquele gerado pela atualização de modelos CTL, de um modo similar ao que ocorre entre revisão e atualização de crenças. Uma abordagem baseada em revisão de crenças para tratar especificações inconsistentes foi apresentada em [13,14]. Nesta abordagem, os autores enriqueceram o verificador NuSMV [3] como princı́pios de revisão de crença, o que resultou na ferramenta BrNuSMV1 : uma ferramenta capaz de gerar sugestões de modificação para uma dada especificação de sistema tal que alguma propriedade CTL se torne válida. Talvez por ser um passo inicial na integração da verificação de modelos e princı́pios de revisão de crenças, existem no BrNuSMV algumas lacunas: não é possı́vel tratar todos os tipos de fórmulas CTL; o processo de revisão é feito estado à estado, com limitações nos conjuntos de crenças; não há uma análise formal do processo de revisão de modelos. No nosso trabalho, nos propomos a preencher algumas dessas lacunas, realizando uma análise formal do processo de revisão de modelos CTL genéricos e estudar sua relação com abordagens clássicas de revisão de crenças. Nosso operador de revisão ◦c sobre modelos CTL é definido por: Definição 7. Dadas duas fórmulas CTL ψ e φ, denotamos por ψ ◦c φ uma fórmula CTL resultado da atualização de ψ por φ, tal que M od(ψ ◦c φ) = M inM od(ψ) (M od(φ)) onde M inB (A) denota o conjunto de todos os modelos minimais de A com respeito a todas as ordens ≤M tal que M é um modelo de B. Teorema 1. O operador ◦c satisfaz os postulados de revisão (R1)-(R6).2 No algoritmo 1, nós apresentamos um esboço do algoritmo de revisão de modelos CTL. Dado uma base de crenças ψ e uma nova crença φ, ambas representadas por fórmulas CTL, o algoritmo de revisão computa um conjunto S de modelos CTL tais que todo modelo M ∈ S, M ∈ M od(ψ ◦c φ). 1 2 Acrônimo para Belief Revision NuSMV. A prova foi omitida por limitações de espaço e pode ser vista em [6]. Algoritmo 1 CTLModelRevision(ψ, φ) Entrada: Duas fórmulas CTL ψ e φ, representando a base de crenças e a nova crença, respectivamente. Saı́da: Um conjunto de modelos CTL S tal que S ⊆ M od(ψ ◦c φ). 1: S ← ∅; 2: para todos modelos M = (S, R, L) tal que M ∈ M od(ψ) faça 3: se M φ vale então 4: S ← S ∪ {M }; 5: senão 6: repita 7: S ← S ∪ CT LU pdate((M, s), φ), onde s ∈ Init(S); 8: até não haver mudança em S. 9: para todos modelos M = (S, R, L) tal que M ∈ M od(ψ) faça 10: S ← S − {M 0 |{M 0 , M 00 } ⊆ S and M 00 <M M 0 }; 11: devolva S. Primeiro, nós iniciamos S como vazio. Nas linhas 2-8, iteramos sobre os modelos de ψ para achar aqueles que satisfazem φ. Se um modelo M de ψ satisfaz φ, então M é adicionado à S, caso contrário, nas linhas 6-8, procuramos por todos os modelos possı́veis que satisfazem φ e que são próximos à M . Para isso, fazemos sucessivas chamadas à CT LU pdate((M, s), φ), função descrita em [16]. Nas linhas 9-10, nós removemos de S todos os modelos que não são minimais em relação aos modelos de ψ. Após esse passo, todos os modelos em S satisfazem φ e são mı́nimos com respeito à ≤M . Finalmente retornamos S. Zhang and Ding [16], Teorema 8, afirma que CT LU pdate((M, s), φ) sempre gera um modelo M 0 que satisfaz φ e é minimal segundo a Definição 4. No entanto, não há garantias que CT LU pdate((M, s), φ) é capaz de gerar todos os modelos minimais possı́veis, portanto não podemos assegurar que nosso algoritmo pode obter S = M od(ψ ◦c φ) como resultado. Zhang and Ding [16] não definem um algoritmo de atualização de modelos CTL. A fim de comparar as abordagens de atualização e revisão de modelos CTL, nós especificamos um método de atualização de modelos (Algoritmo 2) baseados no operador c definido por eles. A diferença entre estas duas abordagens é ilustrada no Exemplo 2. Exemplo 2. Seja p e q dois átomos proposicionais e ψ ↔ EXAGp nossa base de crenças. Suponha que nós precisamos modificar ψ de modo a aceitar φ ↔ E[pU q]. Suponha também que φ não descreve uma mudança no mundo, apenas uma nova informação. Sabemos que M1 = ({s0 , s1 }, {(s0 , s1 ), (s1 , s1 )}, {L(s0 ) = {p}, L(s1 ) = {p}} e M2 = ({s0 , s1 }, {(s0 , s1 ), (s1 , s1 )}, {L(s0 ) = {q}, L(s1 ) = {p}} pertencem à M od(ψ). Quando nós submetemos ψ e φ ao método de atualização de modelos, nós obtemos um modelo M10 = ({s0 , s1 , s2 }, {(s0 , s1 ), (s1 , s1 ), (s1 , s2 )}, {L(s0 ) = {p}, L(s1 ) = {p}, L(s2 ) = {q}}, o qual não pertence ao resultado do algoritmo de revisão de modelos CTL. Apesar de M10 ser minimal em relação à M1 , M10 não é minimal em relação a todos os modelos de ψ (já que M2 satisfaz φ e M2 <M2 M10 ), portanto M10 não pertence a M od(ψ ◦c φ) e é removido no último laço do algoritmo de revisão. Algoritmo 2 CTLModelUpdate(ψ, φ) Entrada: Duas fórmulas CTL ψ e φ, representando a base de crenças e a nova crença, respectivamente. Saı́da: Um conjunto de modelos CTL S tal que S ⊆ M od(ψ c φ). S ← ∅; para todos modelos M = (S, R, L) tal que M ∈ M od(ψ) faça se M φ vale então S ← S ∪ {M }; senão repita S ← S ∪ CT LU pdate((M, s), φ), onde s ∈ Init(S); até não haver mudança em S. devolva S. 4 Conclusões Verificadores de modelos são ferramentas importantes no desenvolvimento de sistemas, mas que não possuem mecanismos que auxiliam na correção de inconsistências. Diversos autores exploraram a integração entre técnicas de Inteligência Artificial e verificação de modelos [2,5,14,16]. Neste trabalho apresentamos um estudo formal de revisão de crenças como técnica para o reparo de modelos inconsistentes. Mostramos que revisão de crença pode ser uma poderosa ferramenta de auxilio à modelagem formal de sistemas computacionais. Argumentamos que a abordagem de Zhang e Ding [16] não é adequada para todas as situações de reparo de sistemas. Mostramos que, nos casos em que mudanças significam correções e não adaptações, nossa abordagem baseada em revisão de crenças é mais apropriada que uma baseada em atualização. Mostramos que, nestas situações, nosso cálculo de novos modelos conserva um maior grau de coerência com a especificação original do sistema. A existência de uma revisão AGM é assegurada apenas para lógicas compactas e monotônicas, porém CTL não satisfaz esta primeira propriedade. Não podemos aplicar diretamente a teoria existente para a revisão de modelos CTL. Apresentamos uma primeira abordagem de integração de revisão de crenças e verificação de modelos, denominada BrNuSMV [13,14]. Mostramos que apesar de uma aplicação prática, essa abordagem possui algumas limitações. Buscamos então preencher algumas das lacunas apresentada por essa. Propusemos um arcabouço formal para revisão de modelos CTL. Primeiro, definimos o critério de ordenação entre dois modelos CTL (baseado na distância deste a um dado conjuntos de modelos). Formalizamos então nosso operador de revisão, onde, baseado na ordenação definida, estabelecemos o critério de minimalidade para a escolha de modelos consistentes. Mostramos que nosso operador de revisão obedece os postulados de revisão AGM, conforme reformulação de [11]. Desenvolvemos um algoritmo formal para revisão de modelos CTL. Dados modelos que satisfazem a especificação formal do sistema e uma propriedade expressa por uma fórmula CTL, nosso algoritmo gera um conjunto de modelos que satisfazem essa propriedade e cujas distâncias dos modelos da especificação original são mı́nimas. Os elementos gerados como resposta podem ser vistos como possı́veis correções à modelagem inconsistente. Por fim, discutimos questões relacionadas ao algoritmo desenvolvido e argumentamos que algoritmos baseados na abordagem de [16], como o nosso, possuem diversas complicações quando aplicados no contexto de revisão de crenças, o que mostra a necessidade de desenvolver uma estratégia diferente e especı́fica ao problema da revisão de modelos. Referências 1. Carlos E. Alchourron, Peter Gärdenfors, and David Makinson. On the logic of theory change: Partial meet contraction and revision functions. J. Symb. Logic, 50(2):510–530, 1985. 2. Francesco Buccafurri, Thomas Eiter, Georg Gottlob, and Nicola Leone. Enhancing model checking in verification by AI techniques. Artificial Intelligence, 112(1-2):57– 104, 1999. 3. Alessandro Cimatti, Edmund M. Clarke, Fausto Giunchiglia, and Marco Roveri. NuSMV: A new symbolic model verifier. In Proc. of CAV, pages 495–499. SpringerVerlag, 1999. 4. Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model checking. Springer, 1999. 5. M. Finger and Renata Wassermann. Revising specifications with CTL properties using bounded model checking. In Proceedings of the 19th Brazilian Symposium on Artificial Intelligence (SBIA’08), pages 157–166. Springer, 2008. 6. Paulo T. Guerra. Revisão de modelos CTL. Master’s thesis, Universidade de São Paulo, 2010. 7. Paulo T. Guerra and Renata Wassermann. Revision of CTL models. In Advances in Artificial Intelligence – IBERAMIA 2010, volume 6433 of Lecture Notes in Computer Science, pages 153–162. Springer Berlin / Heidelberg, 2010. 8. Paulo T. Guerra and Renata Wassermann. Belief revision on computation tree logic. volume 3, pages 2810–2811. AAAI Press / IJCAI, 2011. 9. Andreas Herzig. Logics for belief base updating. In D. Dubois and H. Prade, editors, Handbook of Defeasible Reasoning and Uncertainty Management, volume Belief Change, pages 189–231. Kluwer Academic, Dordrecht, 1998. 10. Michael Huth and Mark Ryan. Logic in Computer Science: Modelling and reasoning about systems. Cambridge University Press, 2004. 11. Hirofumi Katsuno and Alberto O. Mendelzon. A unified view of propositional knowledge base updates. In Proc. of IJCAI’89, pages 1413–1419. Morgan Kaufmann, 1989. 12. Hirofumi Katsuno and Alberto O. Mendelzon. On the difference between updating a knowledge base and revising it. In Proc. of KR, pages 387–395. Morgan Kaufmann, 1991. 13. Thiago C. Sousa. Revisão de modelos formais de sistemas de estados finitos. Master’s thesis, Universidade de São Paulo, 2007. 14. Thiago C. Sousa and Renata Wassermann. Handling inconsistencies in CTL modelchecking using belief revision. In Proc. of the SBMF’07, 2007. 15. Marianne Winslett. Reasoning about action using a possible models approach. In Proc. of AAAI, pages 89–93. Morgan Kaufmann, 1988. 16. Yan Zhang and Yulin Ding. CTL model update for system modifications. Journal of Artificial Intelligence Research, 31(1):113–155, 2008.