Section outline

  • Dimostrazioni di correttezza

    Come si può stabilire se un programma è "corretto"? In questa parte del corso si studia un metodo rigoroso per esprimere i requisiti di programmi sequenziali e per dimostrare che un programma soddisfa un requisito assegnato. Lo strumento fondamentale è la logica di Hoare, definita a partire dalla logica proposizionale e dei predicati.

    • 15:30-18:30, aula U4-02

      Riassunto della lezione
      • Introduzione generale al modulo (vedi Introduzione)
      • Esempio di dimostrazione di correttezza informale (vedi Dimostrazione informale)
      • Nozioni fondamentali di logica proposizionale, prima parte (vedi Logica proposizionale)
    • 15:30-17:30, aula U24-C1

      Il materiale di consultazione non è ancora completo.

      Riassunto

      • Ripasso di logica proposizionale, seconda parte (vedi Logica proposizionale nel materiale della prima lezione)
      • Una logica per ragionare su programmi: le triple di Hoare
      • Definizione di un linguaggio di programmazione
      • Regole di derivazione della logica di Hoare, prima parte (vedi Logica di Hoare, prima parte; attenzione: nella definizione delle espressioni aritmetiche manca la clausola che dice che ogni nome di variabile è un'espressione aritmetica)
    • 15:30-17:30, aula U4-02

      Riassunto della lezione

      • Regole di derivazione della logica di Hoare, seconda parte
      • La regola delle istruzioni iterative: definizione di invariante di ciclo
      • Distinzione fra correttezza parziale e correttezza totale
      • Esercizi
    • 15:30-18:30, aula U24C1

      Il contenuto di questa cartella verrà arricchito nei prossimi giorni.

      Riassunto

      • Logica di Hoare: la regola di derivazione per la correttezza totale di istruzioni iterative
      • Considerazioni su correttezza e completezza della logica di Hoare
      • Precondizione più debole (weakest precondition): definizione, significato intuitivo, esempi
      • Corrispondenza fra stati e formule
    • Dimostrazioni di correttezza e precondizioni più deboli

    • 15:30-17:30, aula U4-02

      Riassunto

      • Programmi come trasformatori di stato; computazione come cammino in un grafo
      • Schema generale di una dimostrazione di correttezza
      • La logica di Hoare nella pratica: design by contract, Eiffel, Java Modeling language
      • La logica di Hoare come fondamento di una semantica dei programmi
      • Esercizi
      Attenzione: nel diagramma a pagina 7 del file mdc-finale.pdf la regione associata alla formula "s" dovrebbe contenere tutti gli stati nell'intersezione di "i" e "non B".