SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Verifica¸˜o de Programas
               ca

        Adolfo Neto (DAINF-UTFPR)
http://www.dainf.ct.utfpr.edu.br/~adolfo



                 November 6, 2012




   Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                      ca
Uma linguagem de programa¸˜o
                         ca




  Sintaxe da linguagem:
      Express˜es Aritm´ticas:
             o         e
      E ::= n|x|(−E )|(E + E )|(E − E )|(E ∗ E )
      Express˜es L´gicas:
             o     o
      B ::= true|false|(!B)|(B&B)|(E < E )|(E == E )|(E ! = E )
      Comandos: C ::= x := E |C ; C |if B{C } else {C }|while B{C }




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Semˆntica Operacional
   a


      A semˆntica operacional “denota o efeito sobre o estado do
            a
      programa de cada comando da linguagem.”
      Representa¸˜o da execu¸˜o de um comando C :
                ca          ca

                                     C, σ → σ

      onde σ ´ o estado antes da execu¸˜o do comando e σ ´ o
             e                        ca                 e
      estado depois da execu¸˜o do comando C .
                            ca
      “A semˆntica operacional deve denotar os efeitos de todos os
             a
      comandos da linguagem e, para isso, deve ser definida sobre
      todos os comandos e express˜es da linguagem”
                                 o
      Fonte: (SILVA; FINGER; MELO, 2006, p.189).



              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Regras da Semˆntica Operacional
             a




   Exemplo de regra (ex. 7.2.1 de (SILVA; FINGER; MELO, 2006,
   p.189)) – Atrib-Operacional:

                                 E, σ → m
                            x := E , σ → σ[m/x]




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Exemplo




  Exemplo 7.2.2 (SILVA; FINGER; MELO, 2006, p.190).
  ´
  E preciso definir a semˆntica operacional de todas as express˜es
                          a                                   o
  aritm´ticas e l´gicas, al´m dos comandos.
       e         o         e




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Mais sobre a Semˆntica Operacional
                a

   De (SILVA; FINGER; MELO, 2006, p.191):
       A semˆntica operacional n˜o faz uma representa¸˜o expl´
             a                   a                    ca      ıcita
       entre asser¸˜es que denotam as pr´ e p´s-condi¸˜es dos
                  co                    e    o       co
       programas.
        ϕ Prog ψ (tripla de Hoare)
       Corre¸˜o parcial: para todo estado σ que satisfaz ϕ, se a
            ca
       execu¸˜o de Prog a partir do estado σ termina, produzindo
            ca
       um estado σ , ent˜o σ satisfaz ψ.
                         a
       Queremos um sistema (c´lculo) de provas para provar a
                               a
       validade da asser¸˜o “ ϕ Prog ψ ”:
                        ca

                                           ϕ Prog ψ



               Adolfo Neto (DAINF-UTFPR)     Verifica¸˜o de Programas
                                                    ca
Mais sobre a Semˆntica Operacional
                a

   De (SILVA; FINGER; MELO, 2006, p.192):
       As precondi¸˜es ϕ s˜o propriedades sobre o estado inicial do
                  co      a
       programa Prog.
       Podemos ter um estado σ que satisfa¸a a asser¸˜o ϕ:
                                          c         ca

                                           σ     ϕ

       Portanto, ap´s a execu¸˜o de Prog sobre o estado σ, um
                   o         ca
       estado σ ´ produzido. E σ satisfaz ψ:
                 e

                              σ     ϕ → Prog           σ     ψ

       onde Prog termina se executado sobre um estado que satisfaz
       ϕ e Prog σ representa o estado produzido por Prog ap´s sua
                                                           o
       execu¸˜o sobre o estado σ.
            ca

               Adolfo Neto (DAINF-UTFPR)       Verifica¸˜o de Programas
                                                      ca
Mais sobre a Semˆntica Operacional
                a


   De (SILVA; FINGER; MELO, 2006, p.192):
       A asser¸˜o
              ca     ϕ Prog ψ deve ser v´lida para TODOS os
                                        a
       estados que satisfazem ϕ:

                          ∀σ(σ       ϕ) → Prog        σ     ψ

       Assumimos que Prog termina quando executado sobre os
       estados σ. Na pr´tica temos programas que n˜o param.
                       a                           a
       As provas de programas podem ser divididas em:
           provas quando assumimos que o programa p´ra; e
                                                    a
           provas que tem como tarefa tamb´m provar a termina¸˜o do
                                          e                  ca
           programa.




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial
                a                        ca


   De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1:
       Corre¸˜o parcial: A tripla
            ca

                                       ϕ Prog ψ

       ´ satisfeita sob corre¸˜o parcial se, para todos os estados que
       e                     ca
       satisfazem ϕ, o estado resultante da execu¸˜o do programa
                                                    ca
       Prog satisfaz a p´s-condi¸˜o ψ, se Prog termina.
                         o       ca
       Nesse caso,   par   ´ a rela¸˜o de satisfazibilidade para corre¸˜o
                           e       ca                                 ca
       parcial:
                                     par   ϕ Prog ψ




               Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                   ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial
                a                        ca



   De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1:
       Corre¸˜o parcial ´ um requisito ineficiente, na pr´tica, porque
            ca          e                               a
       n˜o garante a termina¸˜o do programa.
        a                   ca
       Qualquer programa que n˜o termina satisfaz a sua
                              a
       especifica¸˜o.
                ca
       Na outra no¸˜o de corre¸˜o (corre¸˜o total), a
                     ca         ca       ca
       satisfazibilidade, bem como a termina¸˜o do programa, deve
                                            ca
       ser provada.




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Total
                a                        ca


   De (SILVA; FINGER; MELO, 2006, p.193), def. 7.3.2:
       Corre¸˜o total: A tripla
            ca

                                       ϕ Prog ψ

       ´ satisfeita sob corre¸˜o total se, para todos os estados que
       e                     ca
       satisfazem ϕ, o estado resultante da execu¸˜o do programa
                                                    ca
       Prog satisfaz a p´s-condi¸˜o ψ e Prog termina.
                         o       ca
       Nesse caso,   tot   ´ a rela¸˜o de satisfazibilidade para corre¸˜o
                           e       ca                                 ca
       total:
                                     tot   ϕ Prog ψ




               Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                   ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Total
                a                        ca




   De (SILVA; FINGER; MELO, 2006, p.193):
       Qualque programa que entra em um la¸o infinito de repeti¸˜o
                                              c                  ca
       n˜o satisfaz sua especifica¸˜o sob a rela¸˜o de corre¸˜o total.
        a                        ca             ca         ca
       Essa rela¸˜o ´ muito mais util na pr´tica.
                ca e              ´        a
       Provar corre¸˜o total de programas pode ser dividido em:
                   ca
        1. provar corre¸˜o parcial
                       ca
        2. provar que o programa termina




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Exemplos




  Demonstra¸˜es informais:
           co
      Exemplo 7.3.1 (SILVA; FINGER; MELO, 2006, p.193).
      Exemplo 7.3.2 (SILVA; FINGER; MELO, 2006, p.194-195).




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Corre¸˜o Parcial de Programas
     ca

       O sistema de provas prova ´ definido sobre cada elemento
                                 e
       sint´tico da linguagem
           a
       As provas s˜o realizadas usando indu¸˜o sobre as estruturas
                  a                        ca
       dos programas
       Ou seja, as regras provam a corre¸˜o de uma asser¸˜o para
                                        ca              ca
       um comando mais complexo pela prova de corre¸˜o das
                                                     ca
       asser¸˜es de seus subcomandos.
            co
       Devemos distinguir dois elementos no sistema de provas:
        1. as regras de inferˆncia sobre cada um dos elementos sint´ticos
                             e                                     a
           dos programas
        2. o mecanismo de prova usando as regras definidas
       As regras s˜o chamadas regras de Hoare. O conjunto das
                  a
       regras forma a l´gica de Hoare.
                       o
   Fonte: (SILVA; FINGER; MELO, 2006, p.195).

               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Regras da Semˆntica Operacional
             a




   Composi¸˜o:
          ca
                             ϕ C1 η        η C2 ψ
                                 ϕ C 1; C 2 ψ




                 Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                    ca
Regras da Semˆntica Operacional
             a




   Atribui¸˜o:
          ca

                                ψ[E /x] x := E ψ
   A propriedade a ser satisfeita antes da atribui¸˜o ´ a pr´pria ψ com
                                                  ca e      o
   todas as ocorrˆncias de x substitu´
                 e                    ıdas pela express˜o E , ψ[E /x].
                                                       a




                 Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                    ca
Regras da Semˆntica Operacional
             a




   IfElse:
                 φ ∧ B C1 ψ        φ ∧ ¬B C 2 ψ
                     φ if B{C 1}else {C 2} ψ




             Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                ca
Regras da Semˆntica Operacional
             a




   WhileParcial:
                                    η∧B C η
                               η while B{C } η ∧ ¬B
   Obs.: η ´ um invariante que deve ser satisfeito antes e depois de o
           e
   comando C ser executado.




                   Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                      ca
Regras da Semˆntica Operacional
             a


   Implica¸˜o:
          ca

                      ϕ →ϕ              ϕC ψ                ψ→ψ
                                        ϕ C ψ

   Observa¸˜es:
          co
       Esta regra faz a conex˜o entre as provas que podemos ter na
                              a
       l´gica de predicados, usada na especifica¸˜o dos problemas,
        o                                      ca
       com a l´gica de programas aqui apresentada.
               o
       Isto nos permite considerar as provas na l´gica de predicados
                                                 o
       como parte das provas de programas
       Estabelece o elo de liga¸˜o entre especifica¸˜o e programas
                               ca                 ca



                  Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                     ca
Regras da Semˆntica Operacional
             a




           E, σ → m                             ϕ C1 η        η C2 ψ
      x := E , σ → σ[m/x]                           ϕ C 1; C 2 ψ

                                          φ ∧ B C1 ψ        φ ∧ ¬B C 2 ψ
       ψ[E /x] x := E ψ                       φ if B{C 1}else {C 2} ψ

          η∧B C η                         ϕ →ϕ            ϕC ψ         ψ→ψ
     η while B{C } η ∧ ¬B                                 ϕ C ψ




              Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                  ca
Sistema de Provas

   Provar que o programa P
                                             C0;
                                             C1;
                                             C2;
                                              .
                                              .
                                              .
                                             Cn
   satisfaz a especifica¸˜o
                       ca
                                       Pre: ϕ
                                       Pos: ψ
                                     par ϕ P ψ


   corresponde a . . .


                 Adolfo Neto (DAINF-UTFPR)         Verifica¸˜o de Programas
                                                          ca
Sistema de Provas

   Provar cada um dos comandos para as suas pr´ e p´s-condi¸˜es
                                              e    o       co
   individuais
                                            ϕ
                                           C0;
                                           ϕ1
                                           C1;
                                           ϕ2
                                            .
                                            .
                                            .
                                           ϕn
                                           Cn
                                           ψ

   O que corresponde a . . . Fonte: (SILVA; FINGER; MELO, 2006,
   p.199).

               Adolfo Neto (DAINF-UTFPR)         Verifica¸˜o de Programas
                                                        ca
Sistema de Provas




   O que corresponde a

                                 par   ϕ C0 ϕ1
                                par    ϕ1 C1 ϕ2
                                         .
                                         .
                                         .
                                 par   ϕ n Cn ψ

   Fonte: (SILVA; FINGER; MELO, 2006, p.200).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Sistema de Provas



       A regra a ser aplicada para provar cada comando ´ detectada
                                                       e
       pela pr´pria sintaxe do comando: se ´ uma Atribui¸˜o, um
               o                            e           ca
       IfElse, etc.
       Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os
                                        co            a
       comandos. Como encontrar tais asser¸˜es quando temos
                                           co
       apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do
                         ca        e        o       co
       problema?
       Exemplo 7.4.1 (SILVA; FINGER; MELO, 2006, p.200-201)
   Fonte: (SILVA; FINGER; MELO, 2006, p.200-201).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Sistema de Provas



       Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os
                                        co            a
       comandos. Como encontrar tais asser¸˜es quando temos
                                           co
       apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do
                         ca        e        o       co
       problema?
       Olhamos o que queremos provar para, ent˜o, introduzir
                                                  a
       asser¸˜es intermedi´rias para verificar se a premissa ´
            co            a                                 e
       suficiente para provar a asser¸˜o do topo do programa.
                                    ca
   Fonte: (SILVA; FINGER; MELO, 2006, p.201).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Pr´ximos Passos
  o




      Tablˆ de provas
          o
      Exemplos de provas
      Corre¸˜o e completude do sistema de provas
           ca
      Corre¸˜o total de programas
           ca
      Notas bibliogr´ficas
                    a




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Referˆncias
     e




      SILVA, Fl´vio S. C. da; FINGER, Marcelo; MELO, Ana C. V.
               a
      de. L´gica para Computa¸˜o. S˜o Paulo: Thomson
           o                     ca   a
      Learning, 2006.




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca

Contenu connexe

Plus de Adolfo Neto

Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilEncontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilAdolfo Neto
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em ElixirAdolfo Neto
 
Coding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealCoding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealAdolfo Neto
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal EngineAdolfo Neto
 
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...Adolfo Neto
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em ElixirAdolfo Neto
 
How do software developers learn new tricks
How do software developers learn new tricksHow do software developers learn new tricks
How do software developers learn new tricksAdolfo Neto
 
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Adolfo Neto
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Adolfo Neto
 
Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Adolfo Neto
 
Quem foi Alan Turing?
Quem foi Alan Turing?Quem foi Alan Turing?
Quem foi Alan Turing?Adolfo Neto
 
O método maffetone
O método maffetoneO método maffetone
O método maffetoneAdolfo Neto
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Apresentacao PPGCA
Apresentacao PPGCAApresentacao PPGCA
Apresentacao PPGCAAdolfo Neto
 
Introducao a Logica
Introducao a LogicaIntroducao a Logica
Introducao a LogicaAdolfo Neto
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica ProposicionalAdolfo Neto
 
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus CuritibaBacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus CuritibaAdolfo Neto
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 

Plus de Adolfo Neto (20)

Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilEncontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Coding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealCoding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre Unreal
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal Engine
 
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Kanban
KanbanKanban
Kanban
 
How do software developers learn new tricks
How do software developers learn new tricksHow do software developers learn new tricks
How do software developers learn new tricks
 
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
 
Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...
 
Quem foi Alan Turing?
Quem foi Alan Turing?Quem foi Alan Turing?
Quem foi Alan Turing?
 
O método maffetone
O método maffetoneO método maffetone
O método maffetone
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Apresentacao PPGCA
Apresentacao PPGCAApresentacao PPGCA
Apresentacao PPGCA
 
Introducao a Logica
Introducao a LogicaIntroducao a Logica
Introducao a Logica
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica Proposicional
 
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus CuritibaBacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de Software
 

Dernier

Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxLuizHenriquedeAlmeid6
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoCelianeOliveira8
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAlexandreFrana33
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLaseVasconcelos1
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptAlineSilvaPotuk
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfangelicass1
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 

Dernier (20)

Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e feminino
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptx
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdf
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdf
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 

Verificação de Programas

  • 1. Verifica¸˜o de Programas ca Adolfo Neto (DAINF-UTFPR) http://www.dainf.ct.utfpr.edu.br/~adolfo November 6, 2012 Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 2. Uma linguagem de programa¸˜o ca Sintaxe da linguagem: Express˜es Aritm´ticas: o e E ::= n|x|(−E )|(E + E )|(E − E )|(E ∗ E ) Express˜es L´gicas: o o B ::= true|false|(!B)|(B&B)|(E < E )|(E == E )|(E ! = E ) Comandos: C ::= x := E |C ; C |if B{C } else {C }|while B{C } Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 3. Semˆntica Operacional a A semˆntica operacional “denota o efeito sobre o estado do a programa de cada comando da linguagem.” Representa¸˜o da execu¸˜o de um comando C : ca ca C, σ → σ onde σ ´ o estado antes da execu¸˜o do comando e σ ´ o e ca e estado depois da execu¸˜o do comando C . ca “A semˆntica operacional deve denotar os efeitos de todos os a comandos da linguagem e, para isso, deve ser definida sobre todos os comandos e express˜es da linguagem” o Fonte: (SILVA; FINGER; MELO, 2006, p.189). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 4. Regras da Semˆntica Operacional a Exemplo de regra (ex. 7.2.1 de (SILVA; FINGER; MELO, 2006, p.189)) – Atrib-Operacional: E, σ → m x := E , σ → σ[m/x] Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 5. Exemplo Exemplo 7.2.2 (SILVA; FINGER; MELO, 2006, p.190). ´ E preciso definir a semˆntica operacional de todas as express˜es a o aritm´ticas e l´gicas, al´m dos comandos. e o e Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 6. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.191): A semˆntica operacional n˜o faz uma representa¸˜o expl´ a a ca ıcita entre asser¸˜es que denotam as pr´ e p´s-condi¸˜es dos co e o co programas. ϕ Prog ψ (tripla de Hoare) Corre¸˜o parcial: para todo estado σ que satisfaz ϕ, se a ca execu¸˜o de Prog a partir do estado σ termina, produzindo ca um estado σ , ent˜o σ satisfaz ψ. a Queremos um sistema (c´lculo) de provas para provar a a validade da asser¸˜o “ ϕ Prog ψ ”: ca ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 7. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.192): As precondi¸˜es ϕ s˜o propriedades sobre o estado inicial do co a programa Prog. Podemos ter um estado σ que satisfa¸a a asser¸˜o ϕ: c ca σ ϕ Portanto, ap´s a execu¸˜o de Prog sobre o estado σ, um o ca estado σ ´ produzido. E σ satisfaz ψ: e σ ϕ → Prog σ ψ onde Prog termina se executado sobre um estado que satisfaz ϕ e Prog σ representa o estado produzido por Prog ap´s sua o execu¸˜o sobre o estado σ. ca Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 8. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.192): A asser¸˜o ca ϕ Prog ψ deve ser v´lida para TODOS os a estados que satisfazem ϕ: ∀σ(σ ϕ) → Prog σ ψ Assumimos que Prog termina quando executado sobre os estados σ. Na pr´tica temos programas que n˜o param. a a As provas de programas podem ser divididas em: provas quando assumimos que o programa p´ra; e a provas que tem como tarefa tamb´m provar a termina¸˜o do e ca programa. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 9. Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial a ca De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1: Corre¸˜o parcial: A tripla ca ϕ Prog ψ ´ satisfeita sob corre¸˜o parcial se, para todos os estados que e ca satisfazem ϕ, o estado resultante da execu¸˜o do programa ca Prog satisfaz a p´s-condi¸˜o ψ, se Prog termina. o ca Nesse caso, par ´ a rela¸˜o de satisfazibilidade para corre¸˜o e ca ca parcial: par ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 10. Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial a ca De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1: Corre¸˜o parcial ´ um requisito ineficiente, na pr´tica, porque ca e a n˜o garante a termina¸˜o do programa. a ca Qualquer programa que n˜o termina satisfaz a sua a especifica¸˜o. ca Na outra no¸˜o de corre¸˜o (corre¸˜o total), a ca ca ca satisfazibilidade, bem como a termina¸˜o do programa, deve ca ser provada. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 11. Mais sobre a Semˆntica Operacional: Corre¸˜o Total a ca De (SILVA; FINGER; MELO, 2006, p.193), def. 7.3.2: Corre¸˜o total: A tripla ca ϕ Prog ψ ´ satisfeita sob corre¸˜o total se, para todos os estados que e ca satisfazem ϕ, o estado resultante da execu¸˜o do programa ca Prog satisfaz a p´s-condi¸˜o ψ e Prog termina. o ca Nesse caso, tot ´ a rela¸˜o de satisfazibilidade para corre¸˜o e ca ca total: tot ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 12. Mais sobre a Semˆntica Operacional: Corre¸˜o Total a ca De (SILVA; FINGER; MELO, 2006, p.193): Qualque programa que entra em um la¸o infinito de repeti¸˜o c ca n˜o satisfaz sua especifica¸˜o sob a rela¸˜o de corre¸˜o total. a ca ca ca Essa rela¸˜o ´ muito mais util na pr´tica. ca e ´ a Provar corre¸˜o total de programas pode ser dividido em: ca 1. provar corre¸˜o parcial ca 2. provar que o programa termina Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 13. Exemplos Demonstra¸˜es informais: co Exemplo 7.3.1 (SILVA; FINGER; MELO, 2006, p.193). Exemplo 7.3.2 (SILVA; FINGER; MELO, 2006, p.194-195). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 14. Corre¸˜o Parcial de Programas ca O sistema de provas prova ´ definido sobre cada elemento e sint´tico da linguagem a As provas s˜o realizadas usando indu¸˜o sobre as estruturas a ca dos programas Ou seja, as regras provam a corre¸˜o de uma asser¸˜o para ca ca um comando mais complexo pela prova de corre¸˜o das ca asser¸˜es de seus subcomandos. co Devemos distinguir dois elementos no sistema de provas: 1. as regras de inferˆncia sobre cada um dos elementos sint´ticos e a dos programas 2. o mecanismo de prova usando as regras definidas As regras s˜o chamadas regras de Hoare. O conjunto das a regras forma a l´gica de Hoare. o Fonte: (SILVA; FINGER; MELO, 2006, p.195). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 15. Regras da Semˆntica Operacional a Composi¸˜o: ca ϕ C1 η η C2 ψ ϕ C 1; C 2 ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 16. Regras da Semˆntica Operacional a Atribui¸˜o: ca ψ[E /x] x := E ψ A propriedade a ser satisfeita antes da atribui¸˜o ´ a pr´pria ψ com ca e o todas as ocorrˆncias de x substitu´ e ıdas pela express˜o E , ψ[E /x]. a Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 17. Regras da Semˆntica Operacional a IfElse: φ ∧ B C1 ψ φ ∧ ¬B C 2 ψ φ if B{C 1}else {C 2} ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 18. Regras da Semˆntica Operacional a WhileParcial: η∧B C η η while B{C } η ∧ ¬B Obs.: η ´ um invariante que deve ser satisfeito antes e depois de o e comando C ser executado. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 19. Regras da Semˆntica Operacional a Implica¸˜o: ca ϕ →ϕ ϕC ψ ψ→ψ ϕ C ψ Observa¸˜es: co Esta regra faz a conex˜o entre as provas que podemos ter na a l´gica de predicados, usada na especifica¸˜o dos problemas, o ca com a l´gica de programas aqui apresentada. o Isto nos permite considerar as provas na l´gica de predicados o como parte das provas de programas Estabelece o elo de liga¸˜o entre especifica¸˜o e programas ca ca Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 20. Regras da Semˆntica Operacional a E, σ → m ϕ C1 η η C2 ψ x := E , σ → σ[m/x] ϕ C 1; C 2 ψ φ ∧ B C1 ψ φ ∧ ¬B C 2 ψ ψ[E /x] x := E ψ φ if B{C 1}else {C 2} ψ η∧B C η ϕ →ϕ ϕC ψ ψ→ψ η while B{C } η ∧ ¬B ϕ C ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 21. Sistema de Provas Provar que o programa P C0; C1; C2; . . . Cn satisfaz a especifica¸˜o ca Pre: ϕ Pos: ψ par ϕ P ψ corresponde a . . . Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 22. Sistema de Provas Provar cada um dos comandos para as suas pr´ e p´s-condi¸˜es e o co individuais ϕ C0; ϕ1 C1; ϕ2 . . . ϕn Cn ψ O que corresponde a . . . Fonte: (SILVA; FINGER; MELO, 2006, p.199). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 23. Sistema de Provas O que corresponde a par ϕ C0 ϕ1 par ϕ1 C1 ϕ2 . . . par ϕ n Cn ψ Fonte: (SILVA; FINGER; MELO, 2006, p.200). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 24. Sistema de Provas A regra a ser aplicada para provar cada comando ´ detectada e pela pr´pria sintaxe do comando: se ´ uma Atribui¸˜o, um o e ca IfElse, etc. Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os co a comandos. Como encontrar tais asser¸˜es quando temos co apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do ca e o co problema? Exemplo 7.4.1 (SILVA; FINGER; MELO, 2006, p.200-201) Fonte: (SILVA; FINGER; MELO, 2006, p.200-201). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 25. Sistema de Provas Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os co a comandos. Como encontrar tais asser¸˜es quando temos co apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do ca e o co problema? Olhamos o que queremos provar para, ent˜o, introduzir a asser¸˜es intermedi´rias para verificar se a premissa ´ co a e suficiente para provar a asser¸˜o do topo do programa. ca Fonte: (SILVA; FINGER; MELO, 2006, p.201). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 26. Pr´ximos Passos o Tablˆ de provas o Exemplos de provas Corre¸˜o e completude do sistema de provas ca Corre¸˜o total de programas ca Notas bibliogr´ficas a Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 27. Referˆncias e SILVA, Fl´vio S. C. da; FINGER, Marcelo; MELO, Ana C. V. a de. L´gica para Computa¸˜o. S˜o Paulo: Thomson o ca a Learning, 2006. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca