This repository has the materials for a 120 minute tutorial on programming and proving with Refinement types with LiquidHaskell
For other versions, you may be interested in:
- Try Online
- [VM Image][]
- Build Locally
This is also very easy, if you can manage the 2Gb download.
Step 1 Download this VM image
Step 2 Choose your editor. For emacs do:
tar -zxvf liquid-emacs.tgz
and for Spacemacs (a great Vim-Emacs hybrid) do:
tar -zxvf liquid-spacemacs.tgz
Step 3 Grab the source files from Github.
First
$ git clone https://github.com/ucsd-progsys/liquid-client.git
To build rust-style html (in dist/_site)
$ stack exec -- make html
To build reveal.js slides (in dist/_slides)
$ stack exec -- make slides
You can modify the following parameters:
- Server URL: change
liquidserver
inassets/templates/preamble.lhs
- MathJax URL: change the relevant link in
assets/templates/pagemeta.template
- Talk: change the
TALK
field in theMakefile
which builds the src-$(TALK) directory.
Part I: Basics
- 01-index
- 02-refinements
- 03-datatypes
- 04-case-study-insertsort
Part II: Proofs
- 05-termination
- 06-refinement-reflection
- 07-map-reduce
- 01-intro [3]
- 02-refinements [6]
- 03-examples [9]
- 04-abstracting [4]
- 05-concl [3]
To edit locally,
- Clone repositories
$ git clone https://github.com/ucsd-progsys/intro-refinement-types.git
$ cd intro-refinement-types
$ git clone https://github.com/ucsd-progsys/liquid-client.git
$ stack install
-
Edit
src-120/0X-file.lhs
-
stack exec -- make
-
open dist/_site/*X-file.html
To upload do,
make upload
Extra
- 05-case-study-eval
- 06-case-study-bytestring
- 07-abstract-refinements
- 08-bounded-refinements
- 15-security
- Tagged.lhs
WBL Heaps
Insert Sort