Giter Site home page Giter Site logo

celdir / dafny Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dafny-lang/dafny

1.0 3.0 0.0 148.03 MB

Dafny is a verification-aware programming language

License: Other

C# 91.57% Batchfile 0.07% Shell 0.02% Makefile 0.03% F# 6.97% Python 1.19% TeX 0.10% Vim Script 0.05%

dafny's Introduction

Our Work

Creating a Threading Library

We will extend the Dafny programming language by adding multithreading support with the following features/functionality:

  • Creating new threads and accessing handles to those threads
  • Sending messages to other threads by their handles
  • Concept of simultaneous code in proof engine
  • Language support for synchronized functionality that ensures appropriate facts about simultaneous access
  • Shared variables with requirements about simultaneous access
  • Mutex lock library with appropriate simultaneous-code-related propositions required and ensured

Path Compression (Simple Substitutions)

Using Dafny's sophisticated proof construction, a significant amount of metadata relating to nontrivial facts about the functionality of compiled Dafny code is available. Using this data, optimizations can be made to the code that would have otherwise been unavailable to the compiler. One such example is simple path compression: By analyzing the inputs, outputs, requirements, ensures and side-effects of different subroutines, some routines can be found to have more efficient versions with the same effect.



Dafny

Dafny

Dafny is a programming language with a program verifier. As you type in your program, the verifier constantly looks over your shoulders and flags any errors. Dafny is currently spread across 3 sites:

  • Dafny's homepage, which contains some information about Dafny.
  • This site, which includes sources, binary downloads for Windows, Mac, GNU/Linux, and FreeBSD, sources, and the issue tracker (old issues are on codeplex).
  • The Rise4fun site, where you can verify Dafny programs in your web browser.

Try Dafny

The easiest way to get started with Dafny is to use rise4fun, where you can write and verify Dafny programs without having install anything. On rise4fun, you will also find the online Dafny tutorial.

Setup

See installation instructions on the wiki and instructions for installing the Dafny mode for Emacs.

Read more

Here are some ways to get started with Dafny:

The language itself draws pieces of influence from:

  • Euclid (from the mindset of a designing a language whose programs are to be verified),
  • Eiffel (like the built-in contract features),
  • CLU (like its iterators, and inspiration for the out-parameter syntax),
  • Java, C#, and Scala (like the classes and traits, and syntax for functions),
  • ML (like the module system, and its functions and inductive datatypes), and
  • Coq and VeriFast (like the ability to include co-inductive datatypes and being able to write inductive and co-inductive proofs).

External contributions

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

License

Dafny itself is licensed under the MIT license. (See LICENSE.txt in the root directory for details.) The subdirectory third_party contains third party material; see NOTICES.txt for more details.

dafny's People

Contributors

qunyanm avatar wuestholz avatar cpitclaudel avatar danmatichuk avatar jrkoenig avatar aleksandarmilicevic avatar markusschaden avatar nadia-polikarpova avatar wilcoxjay avatar mlr-msft avatar valisstigma avatar chris-hawblitzel avatar kyessenov avatar superman32432432 avatar namin avatar richardlford avatar boehmes avatar jaylorch avatar mmoskal avatar evmodder avatar plaidfinch avatar parno avatar kant avatar dvdalilue avatar mschwerhoff avatar mueller55 avatar rosemarymonahan avatar jdlamkin avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar Shiyou Huang 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.