Git Product home page Git Product logo

solution-to-plfa's Introduction

solution-to-plfa

My solution to Programming Language Foundations in Agda (available at https://plfa.github.io)

Getting Started

The template branch contains a bare solution scaffold. You could fork this repo and use it to write your own solutions to PLFA.

Setup

[WIP]

Install Haskell

We recommend to use ghcup to install Haskell and the package manager cabal.

Just follow the instructions on ghcup.

After the installation, you may be able to call cabal from your terminal. If you are not, consider adding following statements to your shell config file ( e.g., ~/.bashrc, ~/.zshrc).

export PATH=$HOME/.ghcup/bin:$PATH
export PATH=$HOME/.cabal/bin:$PATH

Note that it is for mac users. If you are installing Haskell on a Windows / Linux, you should modify your environment variables accordingly.

Install Agda

cabal v2-install --lib ieee754
cabal v2-install Agda

After a long period of compilation, you can call agda in your terminal.

Tunning your editor

  • VSCode [WIP]

TODOs

Part 1: Logical Foundations

Part 2: Programming Language Foundations

  • Lambda: Introduction to Lambda Calculus
  • Properties: Progress and Preservation
  • DeBruijn: Intrinsically-typed de Bruijn representation
  • More: Additional constructs of simply-typed lambda calculus
  • Bisimulation: Relating reduction systems
  • Inference: Bidirectional type inference
  • Untyped: Untyped lambda calculus with full normalisation
  • Confluence: Confluence of untyped lambda calculus
  • BigStep: Big-step semantics of untyped lambda calculus

Part 3: Denotational Semantics

  • Denotational: Denotational semantics of untyped lambda calculus
  • Compositional: The denotational semantics is compositional
  • Soundness: Soundness of reduction with respect to denotational semantics
  • Adequacy: Adequacy of denotational semantics with respect to operational semantics
  • ContextualEquivalence: Denotational equality implies contextual equivalence

solution-to-plfa's People

Contributors

suica avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  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.