Securing Software: Languages

Goals

  • Verification
    • Explain what it means to verify a program
    • Understand basic techniques for program verification
    • Calculate a weakest precondition
    • Be prepared to verify a program in recitation

Verification

  • Why can’t program analysis be sound and complete?
    • How does verification circumvent this result?
  • How can you specify that a program is correct?
  • What is a valid Hoare triple?
  • What is the definition of a weakest precondition?
    • How can we calculate a weakest precondition?
    • How are weakest preconditions used in verification?
  • What are some limitations of verification?

  • Dafny
    • What kinds of properties is Dafny designed to verify?
    • How do Dafny methods differ from Dafny functions?
    • How does Dafny handle assertions?
    • How does Dafny handle loops?
    • What is framing, and how is it handled in Dafny?