https://github.com/ucsd-progsys/intro-refinement-types
Introductory Tutorial on Refinement Types
https://github.com/ucsd-progsys/intro-refinement-types
haskell liquidhaskell refinement-types smt
Last synced: 6 months ago
JSON representation
Introductory Tutorial on Refinement Types
- Host: GitHub
- URL: https://github.com/ucsd-progsys/intro-refinement-types
- Owner: ucsd-progsys
- License: bsd-3-clause
- Created: 2016-01-11T18:41:49.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-06-05T00:05:22.000Z (over 4 years ago)
- Last Synced: 2025-03-28T01:45:50.241Z (6 months ago)
- Topics: haskell, liquidhaskell, refinement-types, smt
- Language: JavaScript
- Homepage: http://ucsd-progsys.github.io/intro-refinement-types/120/01-index.html
- Size: 41.9 MB
- Stars: 8
- Watchers: 4
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
README
======This repository has the materials for a 120 minute tutorial
on programming and proving with Refinement types with [LiquidHaskell][lh-github]+ [120 mins](http://ucsd-progsys.github.io/intro-refinement-types/120/01-index.html)
For other versions, you may be interested in:
+ [25 mins](http://ucsd-progsys.github.io/intro-refinement-types/25/)
+ [2 Hr Workshop](http://ucsd-progsys.github.io/lh-workshop/)
+ [Tutorial](http://ucsd-progsys.github.io/liquidhaskell-tutorial/)Running LiquidHaskell
---------------------1. [Try Online][online]
2. [VM Image][]
3. [Build Locally][local][lh-github]: https://github.com/ucsd-progsys/liquidhaskell
[online]: http://ucsd-progsys.github.io/intro-refinement-types
[local]: https://github.com/ucsd-progsys/liquidhaskell-tutorial/blob/master/src/01-intro.lhs#L170-L197
[vm]: http://goto.ucsd.edu/~gridaphobe/LiquidHaskell.ovaVirtual Machine
---------------This is also very easy, if you can manage the 2Gb download.
**Step 1** Download [this VM image][vm]
**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.
Build Slides
------------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
Edit Slides
-----------You can modify the following parameters:
1. **Server URL**: change `liquidserver` in `assets/templates/preamble.lhs`
2. **MathJax URL**: change the relevant link in `assets/templates/pagemeta.template`
3. **Talk**: change the `TALK` field in the `Makefile` which builds the src-$(TALK) directory.Outline [120]
-------------**Part I: Basics**
+ 01-index
+ 02-refinements
+ 03-datatypes
+ 04-case-study-insertsort**Part II: Proofs**
+ 05-termination
+ 06-refinement-reflection
+ 07-map-reduceOutline [25]
-------+ 01-intro [3]
+ 02-refinements [6]
+ 03-examples [9]
+ 04-abstracting [4]
+ 05-concl [3]Editing Notes
-------------To edit locally,
1. 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
```2. Edit `src-120/0X-file.lhs`
3. `stack exec -- make`
4. `open dist/_site/*X-file.html`
To upload do,
5. `make upload`
Misc Links
----------**Extra**
- 05-case-study-eval
- 06-case-study-bytestring
- 07-abstract-refinements
- 08-bounded-refinements
- 15-security
- Tagged.lhsWBL Heaps
+ [HS+DT proof](https://github.com/jstolarek/dep-typed-wbl-heaps-hs/blob/master/src/TwoPassMerge/CombinedProofs.hs#L68)
+ [HS](https://github.com/jstolarek/dep-typed-wbl-heaps-hs/blob/master/src/TwoPassMerge/NoProofs.hs#L96)
+ [HS+Liquid](https://github.com/ucsd-progsys/liquidhaskell/blob/master/tests/pos/WBL.hs#L129)Insert Sort
+ https://github.com/davidfstr/idris-insertion-sort/tree/master
+ http://www.enseignement.polytechnique.fr/informatique/INF551/TD/TD5/aux/Insert_Sort.v
+ https://github.com/goldfirere/singletons/blob/master/tests/compile-and-dump/InsertionSort/InsertionSortImp.hs