Changes between Version 5 and Version 6 of WikiStart
 Timestamp:
 Dec 27, 2012, 2:34:12 PM (9 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

WikiStart
v5 v6 21 21 * Uses the 'Case' metatactic to add structure. 22 22 23 == Installation == 23 24 24 == Simple == 25 * You will need a working version of [http://coq.inria.fr Coq]. The proofs are known to work with Coq 8.4. 26 27 * We use [http://darcs.net/ darcs] for version control. 28 {{{ 29 $ darcs get http://code.ouroborus.net/iron/ironhead/ 30 }}} 31 32 33 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/Simple/ Simple] == 25 34 Simply Typed Lambda Calculus (STLC). 26 35 27 36 "Simple" here refers to the lack of polymorphism. 28 37 29 == SimplePCF==38 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SimplePCF/ SimplePCF] == 30 39 STLC with booleans, naturals and fixpoint. 31 40 32 == !SimpleRef==41 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SimpleRef/ SimpleRef] == 33 42 STLC with mutable references. 34 43 35 44 The typing judgement includes a store typing. 36 45 37 == !SimpleData==46 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SimpleData/ SimpleData] == 38 47 STLC with algebraic data and case expressions. 39 48 40 49 The definition of expressions uses indirect mutual recursion. Expressions contain a list of casealternatives, 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. 41 50 42 == SystemF==51 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SystemF/ SystemF] == 43 52 Compared to STLC, the proof for SystemF needs more lifting lemmas so it can deal with deBruijn indices at the type level. 44 53 45 == SystemF2==54 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SystemF2/ SystemF2] == 46 55 Very similar to SystemF, but with higher kinds. 47 56 48 == SystemF2Data==57 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SystemF2Data SystemF2Data] == 49 58 SystemF2 with algebraic data and case expressions. 50 59 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. 51 60 52 == SystemF2Store==61 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SystemF2Store/ SystemF2Store] == 53 62 SystemF2 with algebraic data, case expressions and a mutable store. 54 63 All data is allocated into the store and can be updated with primitive 55 64 polymorphic update operators. 56 65 57 == SystemF2Effect==66 == [http://code.ouroborus.net/iron/ironhead/done/Iron/Language/SystemF2Effect/ SystemF2Effect] == 58 67 * Still under development. 59 68