Giter VIP home page Giter VIP logo

protocol-verification-fa2023's Introduction

Protocol Verification course assignments

These are the assignments for COMP SCI 839 (Protocol Verification), taught at UW-Madison in Fall 2023 by Tej Chajed.

Chapters

The exercises in each chapter are surrounded by // FIXME and // END; you're not supposed to modify text outside these markers. When you're done we suggest you change FIXME to DONE, but this isn't required.

  • Chapter 0: Making sure your IDE is set up for Dafny (see installation instructions below).
  • Chapter 1: Learn some fundamental Dafny syntax and concepts.

Installation

These assignments will have you defining and verifying protocols in Dafny, a verification-aware programming language.

We highly recommend using VS Code. Dafny is an interactive tool, and the VS Code extension makes it easy to use it interactively. If you're used to vim keybindings, the vim extension is quite good.

Install the Dafny extension. From within VS Code you can do this by clicking on the Extensions icon in the left side bar and searching for dafny-lang.ide-vscode. If you're more familiar with the command line, code --install-extension dafny-lang.ide-vscode will also work.

You'll need to install .NET 6 and the ASP.NET Core Runtime to run Dafny (you won't need to interact with these tools except for installing them). If you don't have them, the Dafny extension will tell you. The simplest way to do this is to install the SDK from https://dotnet.microsoft.com/en-us/download/dotnet/6.0.

On macOS, you can instead use brew install dotnet@6 and then in VS Code set the option "Dafny: Dotnet Executable Path" to the output of echo $(brew --prefix dotnet@6)/bin/dotnet.

Learning Dafny

If you get stuck on something Dafny related, you might find what you need in a syntax tutorial I wrote, or you can check out the Dafny getting started guide.

I recorded a Dafny debugging video of the "toy consensus" example (code here) that illustrates how to come up with an inductive invariant and debug an inductiveness proof.

protocol-verification-fa2023's People

Contributors

tchajed avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.