VinBR

Verificação 13/03/2012

Mar 13th, 2012
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.18 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # #
  3. # Verificação Automatica #
  4. # Prof. Sérgio Campos #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # #
  7.  
  8. Sistemas reativos são aqueles em que voce não produz o resultado e ele não termina.
  9.  
  10. Um exemplo de sistema de menssagens entre computadores
  11. O sistema usa um contador de sequencia para garantir a coesão das menssagens.
  12.  
  13. O que podemos afirmar?
  14.  
  15. - toda menssagem é recebida
  16. - Uma menssagem não é recebida sem ser enviada.
  17. Se x é enviado antes de y então é recebido antes de y.
  18.  
  19. Sender continues resending the menssage until lack
  20. if channel continues do receive input it eventualy transmits does not drop a msg rcv does not ack before msg is output.
  21.  
  22. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  23.  
  24. Assim podemos dizer:
  25.  
  26. para todo t> 0: input (x,t) -> €t'>= t: output (x,t')
  27.  
  28. Mas isso é complicado.
  29.  
  30. Em logica temporal temos a variável G (global)
  31. G p é valido se p será verdade daqui pra frente para todo instante t > t0.
  32.  
  33. F p é verdade se em algum momento no futuro p voltará a ser verdade.
  34.  
  35. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  36.  
  37. Note que G e F são duais:
  38. G p == !F !p
  39. F p == !G !p
  40.  
  41. G p && G q == G(p && q)
  42. F p || F q == F(p || q)
  43.  
  44. Mas note:
  45.  
  46. G p || G q != G(p || q)
  47. F p && F q != F(p && q)
  48.  
  49. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  50.  
  51. Nosso exemplo anterior (complicado) pode ser re-escrito assim:
  52.  
  53. G(input(x) ==> output(x))
  54.  
  55. E pode ser transcrito assim: É sempre verdade que se há um input havera um output.
  56.  
  57. // Note que esse modelo pode ser alterado para se adequar melhor ao seu problema.
  58.  
  59. // (HT && !HT)==>LQ
  60. // HT = hoje é terça, LQ = lua é feita de queijo =D. E isso é verdade já que uma coisa falsa pode implicar em qualquer outra coisa falsa.
  61. // Cuidado com isso.
  62.  
  63. Essa é uma propriedade de Vida (Liveness)
  64.  
  65. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  66.  
  67. Propriedades infinitamente frequentes:
  68.  
  69. G F p significa que algo certamente acontecerá no futuro.
  70.  
  71. G F send(x) ==> G F recv(x)
  72. // Esse é o tipo de propriedade de justica (fairness)
  73.  
  74. Se um sistema sempre reinicia (não entra em loop) então:
  75. G F restart
  76.  
  77. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  78.  
  79. O operador "Até" (Until) p U q.
  80.  
  81. Assim p é verdade até que q seja verdade.
  82.  
  83. Essa propriedade é interessante em outro sentido. q necessárimente deve acontecer.
  84. Se q não acontecer no futuro, p U q não é verdade também.
  85.  
  86. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  87.  
  88. O operador "Até" fraco:
  89. p W q == p U q || G p
  90.  
  91. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  92.  
  93. Uma propriedade de fairness ou safety pode ser provada falsa em uma execução finita.
  94.  
  95. Em uma propriedade de liveness ou de vida voce precisa rodar por um tempo infinito para provar que é falso.
  96. // Na prática nesse tipo de propriedade voce caminha até encontrar um ciclo, se encontrar e ele ainda for falso, ==> é falso.
  97.  
  98. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  99.  
  100. O operador de próximo tempo: X p é verdade em um momento se no próximo instante p é verdade. no instante t + 1
  101.  
  102. Past time operators: H, P e S são os equivalentes ao passado de: G, F e U.
  103. // Mas quase ninguém usa isso.
  104.  
  105. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  106.  
  107. Ferramenta:
  108. Nu SMV: a New Symbolic Model checker
  109.  
  110. Site: http://nusmv.fbk.eu/
  111. // Software de aluno de pós-graduação:
  112. // É um software que funciona, na mão do cara =P
  113. // Mas um grupo italiano comprou ele e deixou isso mais simples e completo =].
  114.  
  115. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  116.  
  117. Exemplo da linguagem do NuSMV:
  118.  
  119. MODULE main
  120.  
  121. VAR
  122.  
  123. state1: (n1, t1, c1);
  124. // n1, não no estado critico
  125. // t1 tentando entrar no critico.
  126. // c1 no critico.
  127.  
  128. ASSIGN
  129.  
  130. init(state1 := n1;
  131.  
  132. next(state1) :=
  133. case
  134. (state2 == n1) & (state2 = t2): t1;
  135. (state2 == n1) & (state2 = n2): t1;
  136. (state2 == n1) & (state2 = c2): t1;
  137. (state2 == t1) & (state2 = n2): c1;
  138. (state2 == t1) & (state2 = t2) & turn = 1: c1;
  139. (state1 = c1): n1;
  140. TRUE : state1;
  141. esac;
  142.  
  143. turn é a variável de "quem é a vez?"
  144. Assim se ambos competirem eles sabem quem vence.
  145.  
  146. O que ele faz é um diagrama de estados.
  147. Assim para cada condição ele descobre um jeito de seguir.
  148. E se nenhuma condição ocorrer ele pode ficar no stado atual.
  149.  
  150. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  151.  
  152. Assim voce pode fazer as perguntas ao programa:
  153.  
  154. SPEC
  155. EF ((state = c1) & (state 2 = c2))
  156. // existe uma violação da exclusão mutua?
  157.  
  158. E ele te retorna o resultado, com contra exemplos e etc.
  159.  
  160. Usar ele é uma experiencia muito unica.
  161.  
  162. No caso do EF acima ele retorna:
  163.  
  164. -- specification EF (state 1 = c1 &* state 2 = c2) is false
  165. -- created by the following execution sequence
  166. Trace Description: CTL Couterexample
  167. Trace Type: Counterexample
  168. -> State: 1.1 //Algo assim essa parte de baixo eu copiei de outro exemplo então nõa deve ser coerente.
  169. state1 = n1
  170. state2 = n2
  171. turn = 1
  172.  
  173. Mas nesse tipo de pergunta onde ele responde que nada acontece, normalmente a resposta não faz tanto sentido, já que para uma prova concreta ele teria que
  174. imprimir todos os caminhos possíveis, ele prefere nem tentar imprimir todos.
  175.  
  176. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  177.  
  178. // comentários são feitos com "--"
  179.  
  180. // Essa foi só uma passada rapida nós veremos isso com mais detalhes no futuro.
  181.  
  182. // Note que geralmente testamos programas concorrentes, pois eles são mais interessantes.
  183.  
  184. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  185.  
  186. // Fim da aula.
Advertisement
Add Comment
Please, Sign In to add comment