SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxLeonardoGabriel65
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 

Kürzlich hochgeladen (20)

Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 

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