SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
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

Más contenido relacionado

Más 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
 

Más 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
 

Último

Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoGentil Eronides
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobremaryalouhannedelimao
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
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
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
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
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
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
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholacleanelima11
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 

Último (20)

Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimento
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobre
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.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
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
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
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
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
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 

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