All Projects → discus-lang → Iron

discus-lang / Iron

Licence: other
Coq formalizations of functional languages.

Projects that are alternatives of or similar to Iron

Dblib Linear
Formalisation of the linear lambda calculus in Coq
Stars: ✭ 10 (-91.23%)
Mutual labels:  proof, coq, lambda-calculus
coq-to-ocaml-to-js
Proof of concept to generate safe and fast JavaScript
Stars: ✭ 25 (-78.07%)
Mutual labels:  coq, proof
Disel
Distributed Separation Logic: a framework for compositional verification of distributed protocols and their implementations in Coq
Stars: ✭ 85 (-25.44%)
Mutual labels:  proof, coq
system-F
Formalization of the polymorphic lambda calculus and its parametricity theorem
Stars: ✭ 20 (-82.46%)
Mutual labels:  lambda-calculus, coq
imm
Intermediate Memory Model (IMM) and compilation correctness proofs for it
Stars: ✭ 15 (-86.84%)
Mutual labels:  coq, proof
Verdi Raft
An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
Stars: ✭ 143 (+25.44%)
Mutual labels:  proof, coq
InfSeqExt
A Coq library for reasoning (co)inductively on infinite sequences using LTL-like modal operators
Stars: ✭ 12 (-89.47%)
Mutual labels:  coq, proof
Verdi
A framework for formally verifying distributed systems implementations in Coq
Stars: ✭ 496 (+335.09%)
Mutual labels:  proof, coq
Typetheory
The mathematical study of type theories, in univalent foundations
Stars: ✭ 86 (-24.56%)
Mutual labels:  coq
Coq Ext Lib
A library of Coq definitions, theorems, and tactics. [[email protected],@liyishuai]
Stars: ✭ 102 (-10.53%)
Mutual labels:  coq
Formal Type Theory
Formalising Type Theory in a modular way for translations between type theories
Stars: ✭ 74 (-35.09%)
Mutual labels:  coq
Mindless Coding
Mindless, verified (erasably) coding using dependent types
Stars: ✭ 104 (-8.77%)
Mutual labels:  coq
Certicoq
A Verified Compiler for Gallina, Written in Gallina
Stars: ✭ 66 (-42.11%)
Mutual labels:  coq
Ch2o
Stars: ✭ 75 (-34.21%)
Mutual labels:  coq
Y Combinator For Non Programmers
🍱 Y Combinator for Non-programmers: A Wild Introduction to Computer Science
Stars: ✭ 109 (-4.39%)
Mutual labels:  lambda-calculus
Formality Javascript
An implementation of the Formality language in JavaScript
Stars: ✭ 71 (-37.72%)
Mutual labels:  lambda-calculus
Awesome Provable
A curated set of links to formal methods involving provable code.
Stars: ✭ 111 (-2.63%)
Mutual labels:  coq
Ergo
The Language for Smart Legal Contracts
Stars: ✭ 108 (-5.26%)
Mutual labels:  coq
Peacoq
PeaCoq is a pretty Coq, isn't it?
Stars: ✭ 99 (-13.16%)
Mutual labels:  coq
Ttlite
A SuperCompiler for Martin-Löf's Type Theory
Stars: ✭ 94 (-17.54%)
Mutual labels:  coq

Iron Lambda

Iron Lambda is a collection of Coq formalizations for functional languages of increasing complexity. All proofs use straight deBruijn indices for binders.

  • The home page is on a separate site.
  • The absence of bugs has been mechanically verified, hence there is no bug tracker.
  • Comments on style, or requests for more information should go to iron [at] ouroborus.net.

Proofs that are "done" have at least Progress and Preservation theorems.

  • Simple

    Simply Typed Lambda Calculus (STLC). "Simple" here refers to the lack of polymorphism.

  • SimplePCF

    STLC with booleans, naturals and fixpoint.

  • SimpleRef

    STLC with mutable references. The typing judgement includes a store typing.

  • SimpleData

    STLC with algebraic data and case expressions. The definition of expressions uses indirect mutual recursion. Expressions contain a list of case-alternatives, and alternatives contain expressions, but the definition of the list type is not part of the same recursive group. The proof requires that we define our own induction scheme for expressions.

  • SystemF

    Compared to STLC, the proof for SystemF needs more lifting lemmas so it can deal with deBruijn indices at the type level.

  • SystemF2

    Very similar to SystemF, but with higher kinds.

  • SystemF2Data

    SystemF2 with algebraic data and case expressions. Requires that we define simultaneous substitutions, which are used when subsituting expressions bound by pattern variables into the body of an alternative. The language allows data constructors to be applied to general expressions rather than just values, which requires more work when defining evaluation contexts.

  • SystemF2Store

    SystemF2 with algebraic data, case expressions and a mutable store. All data is allocated into the store and can be updated with primitive polymorphic update operators.

  • SystemF2Effect

    SystemF2 with a region and effect system. Mutable references are allocated in regions in the store, and their lifetime follows the lexical structure of the code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].