VinBR

Verificação 13/03/2012

Apr 3rd, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.68 KB | None | 0 0
  1. # # # # # # # # # # # # #
  2. # Verificação Automatica #
  3. # Prof. Sérgio Campos #
  4. # notasdogarcia.blog.com #
  5. # # # # # # # # # # # # #
  6.  
  7. Sistemas reativos são aqueles em que voce não produz o resultado e ele não termina.
  8. Ou seja seu processamento é em reação às entradas do ambiente.
  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 a variável p será verdadeira daqui pra frente para todo instante t > t0.
  32.  
  33. F p é verdade se em algum momento no futuro p necessariamente 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: É globalmente 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. O professor chamou esse exemplo acima de propriedade de Vida ou de "Liveness"
  60.  
  61. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  62.  
  63. COMENTARIO Solto:
  64. (HT && !HT)==>LQ
  65. 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.
  66.  
  67. Cuidado com isso, uma premissa falsa implicando em qualquer outra coisa não quer dizer que a implicação seja falsa, apenas a premissa, já que ela nunca ocorre a implicação também não, então é verdade para todos casos =P.
  68.  
  69. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  70.  
  71. Propriedades infinitamente frequentes:
  72.  
  73. G F p significa que algo certamente acontecerá no futuro.
  74.  
  75. G F send(x) ==> G F recv(x)
  76. // Esse é o tipo de propriedade de justiça (fairness)
  77.  
  78. Se um sistema sempre reinicia (não entra em loop) então:
  79. G F restart
  80.  
  81. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  82.  
  83. O operador "Até" (Until) p U q.
  84.  
  85. Assim p é verdade até que q seja verdade.
  86.  
  87. Essa propriedade é interessante em outro sentido. q necessárimente deve acontecer.
  88. Se q não acontecer no futuro, p U q não é verdade também.
  89.  
  90. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  91.  
  92. O operador "Até" fraco:
  93. p W q == p U q || G p
  94.  
  95. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  96.  
  97. Uma propriedade de fairness ou safety pode ser provada falsa em uma execução finita.
  98.  
  99. Em uma propriedade de liveness ou de vida voce precisa rodar por um tempo infinito para provar que é falso.
  100. // Na prática nesse tipo de propriedade voce caminha até encontrar um ciclo, se encontrar e ele ainda for falso, ==> é falso.
  101.  
  102. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  103.  
  104. O operador de próximo tempo: X p é verdade em um momento se no próximo instante p é verdade. no instante t + 1
  105.  
  106. Past time operators: H, P e S são os equivalentes ao passado de: G, F e U.
  107. // Mas quase ninguém usa isso.
  108.  
  109. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  110.  
  111. Ferramenta:
  112. Nu SMV: a New Symbolic Model checker
  113.  
  114. Site: http://nusmv.fbk.eu/
  115. // Software de aluno de pós-graduação:
  116. // É um software que funciona, na mão do cara =P
  117. // Mas um grupo italiano comprou ele e deixou isso mais simples e completo =], então podemos usar.
  118.  
  119. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  120.  
  121. Exemplo da linguagem do NuSMV:
  122.  
  123. MODULE main
  124.  
  125. VAR
  126.  
  127. state1: (n1, t1, c1);
  128. // n1, não no estado critico
  129. // t1 tentando entrar no critico.
  130. // c1 no critico.
  131.  
  132. ASSIGN
  133.  
  134. init(state1 := n1;
  135.  
  136. next(state1) :=
  137. case
  138. (state2 == n1) & (state2 = t2): t1;
  139. (state2 == n1) & (state2 = n2): t1;
  140. (state2 == n1) & (state2 = c2): t1;
  141. (state2 == t1) & (state2 = n2): c1;
  142. (state2 == t1) & (state2 = t2) & turn = 1: c1;
  143. (state1 = c1): n1;
  144. TRUE : state1;
  145. esac;
  146.  
  147. turn é a variável de "quem é a vez?"
  148. Assim se ambos competirem eles sabem quem vence.
  149.  
  150. O que ele faz é um diagrama de estados.
  151. Assim para cada condição ele descobre um jeito de seguir.
  152. E se nenhuma condição ocorrer ele pode ficar no stado atual.
  153.  
  154. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  155.  
  156. Assim voce pode fazer as perguntas ao programa:
  157.  
  158. SPEC
  159. EF ((state = c1) & (state 2 = c2))
  160. // existe uma violação da exclusão mutua?
  161.  
  162. E ele te retorna o resultado, com contra exemplos e etc.
  163.  
  164. Usar ele é uma experiencia muito unica.
  165.  
  166. No caso do EF acima ele retorna:
  167.  
  168. -- specification EF (state 1 = c1 &* state 2 = c2) is false
  169. -- created by the following execution sequence
  170. Trace Description: CTL Couterexample
  171. Trace Type: Counterexample
  172. -> State: 1.1 //Algo assim essa parte de baixo eu copiei de outro exemplo então nõa deve ser coerente.
  173. state1 = n1
  174. state2 = n2
  175. turn = 1
  176.  
  177. 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
  178. imprimir todos os caminhos possíveis, ele prefere nem tentar imprimir todos.
  179.  
  180. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  181.  
  182. // comentários são feitos com "--"
  183.  
  184. // Essa foi só uma passada rapida nós veremos isso com mais detalhes no futuro.
  185.  
  186. // Note que geralmente testamos programas concorrentes, pois eles são mais interessantes.
  187.  
  188. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  189.  
  190. // Fim da aula.
Advertisement
Add Comment
Please, Sign In to add comment