{"id":23467373,"url":"https://github.com/ucsd-progsys/intro-refinement-types","last_synced_at":"2025-04-14T12:23:29.506Z","repository":{"id":68762693,"uuid":"49446288","full_name":"ucsd-progsys/intro-refinement-types","owner":"ucsd-progsys","description":"Introductory Tutorial on Refinement Types","archived":false,"fork":false,"pushed_at":"2021-06-05T00:05:22.000Z","size":43900,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T01:45:50.241Z","etag":null,"topics":["haskell","liquidhaskell","refinement-types","smt"],"latest_commit_sha":null,"homepage":"http://ucsd-progsys.github.io/intro-refinement-types/120/01-index.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ucsd-progsys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-11T18:41:49.000Z","updated_at":"2024-01-14T21:42:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"c3dc992a-30cd-44ee-8502-7e92fa32a423","html_url":"https://github.com/ucsd-progsys/intro-refinement-types","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucsd-progsys%2Fintro-refinement-types","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucsd-progsys%2Fintro-refinement-types/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucsd-progsys%2Fintro-refinement-types/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucsd-progsys%2Fintro-refinement-types/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ucsd-progsys","download_url":"https://codeload.github.com/ucsd-progsys/intro-refinement-types/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248878786,"owners_count":21176383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["haskell","liquidhaskell","refinement-types","smt"],"created_at":"2024-12-24T12:31:03.254Z","updated_at":"2025-04-14T12:23:29.452Z","avatar_url":"https://github.com/ucsd-progsys.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"README\n======\n\n\nThis repository has the materials for a 120 minute tutorial\non programming and proving with Refinement types with [LiquidHaskell][lh-github]\n\n+ [120 mins](http://ucsd-progsys.github.io/intro-refinement-types/120/01-index.html)\n\nFor other versions, you may be interested in:\n\n+ [25 mins](http://ucsd-progsys.github.io/intro-refinement-types/25/)\n+ [2 Hr Workshop](http://ucsd-progsys.github.io/lh-workshop/)\n+ [Tutorial](http://ucsd-progsys.github.io/liquidhaskell-tutorial/)\n\nRunning LiquidHaskell\n---------------------\n\n1. [Try Online][online]\n2. [VM Image][]\n3. [Build Locally][local]\n\n[lh-github]: https://github.com/ucsd-progsys/liquidhaskell\n[online]: http://ucsd-progsys.github.io/intro-refinement-types\n[local]: https://github.com/ucsd-progsys/liquidhaskell-tutorial/blob/master/src/01-intro.lhs#L170-L197\n[vm]: http://goto.ucsd.edu/~gridaphobe/LiquidHaskell.ova\n\nVirtual Machine\n---------------\n\nThis is also very easy, if you can manage the 2Gb download.\n\n**Step 1** Download [this VM image][vm]\n\n**Step 2** Choose your editor. For *emacs* do:\n\n       tar -zxvf liquid-emacs.tgz\n\nand for *Spacemacs* (a great Vim-Emacs hybrid) do:\n\n       tar -zxvf liquid-spacemacs.tgz\n\n**Step 3** Grab the source files from Github.\n\nBuild Slides\n------------\n\nFirst\n\n     $ git clone https://github.com/ucsd-progsys/liquid-client.git\n\nTo build rust-style html (in dist/_site)\n\n     $ stack exec -- make html\n\nTo build reveal.js slides (in dist/_slides)\n\n     $ stack exec -- make slides\n\nEdit Slides\n-----------\n\nYou can modify the following parameters:\n\n1. **Server URL**: change `liquidserver` in `assets/templates/preamble.lhs`\n2. **MathJax URL**: change the relevant link in `assets/templates/pagemeta.template`\n3. **Talk**: change the `TALK` field in the `Makefile` which builds the src-$(TALK) directory.\n\nOutline [120]\n-------------\n\n**Part I: Basics**\n\n+ 01-index\n+ 02-refinements\n+ 03-datatypes\n+ 04-case-study-insertsort\n\n**Part II: Proofs**\n\n+ 05-termination\n+ 06-refinement-reflection\n+ 07-map-reduce\n\nOutline [25]\n-------\n\n+ 01-intro         [3]\n+ 02-refinements   [6]\n+ 03-examples      [9]\n+ 04-abstracting   [4]\n+ 05-concl         [3]\n\n\nEditing Notes\n-------------\n\nTo edit locally,\n\n1. Clone repositories\n\n```\n$ git clone https://github.com/ucsd-progsys/intro-refinement-types.git\n$ cd intro-refinement-types\n$ git clone https://github.com/ucsd-progsys/liquid-client.git\n$ stack install\n```\n\n2. Edit `src-120/0X-file.lhs`\n\n3. `stack exec -- make`\n\n4. `open dist/_site/*X-file.html`  \n\nTo upload do,\n\n5. `make upload`\n\n\n\nMisc Links\n----------\n\n**Extra**\n\n- 05-case-study-eval\n- 06-case-study-bytestring\n- 07-abstract-refinements\n- 08-bounded-refinements\n- 15-security\n- Tagged.lhs\n\n\nWBL Heaps\n\n+ [HS+DT proof](https://github.com/jstolarek/dep-typed-wbl-heaps-hs/blob/master/src/TwoPassMerge/CombinedProofs.hs#L68)\n+ [HS](https://github.com/jstolarek/dep-typed-wbl-heaps-hs/blob/master/src/TwoPassMerge/NoProofs.hs#L96)\n+ [HS+Liquid](https://github.com/ucsd-progsys/liquidhaskell/blob/master/tests/pos/WBL.hs#L129)\n\nInsert Sort\n\n+ https://github.com/davidfstr/idris-insertion-sort/tree/master\n+ http://www.enseignement.polytechnique.fr/informatique/INF551/TD/TD5/aux/Insert_Sort.v\n+ https://github.com/goldfirere/singletons/blob/master/tests/compile-and-dump/InsertionSort/InsertionSortImp.hs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucsd-progsys%2Fintro-refinement-types","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fucsd-progsys%2Fintro-refinement-types","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucsd-progsys%2Fintro-refinement-types/lists"}