├── .circleci └── config.yml ├── .ghci ├── .github └── workflows │ ├── docs-ci-cd.yml │ ├── ghc-head.yml │ └── hlint.yml ├── .gitignore ├── .gitmodules ├── .hlint.yaml ├── CHANGES.md ├── LICENSE ├── LICENSE_Z3 ├── Makefile ├── README.md ├── Setup.hs ├── Syntax.md ├── TODO.EASY.md ├── TODO.md ├── benchmark-timings ├── CHANGELOG.md ├── app │ └── Main.hs └── benchmark-timings.cabal ├── benchmarks └── icfp15 │ └── README.md ├── cabal.project ├── cleanup ├── docs ├── blog │ ├── 2013-01-01-refinement-types-101.lhs │ ├── 2013-01-27-refinements101-reax.lhs │ ├── 2013-01-31-safely-catching-a-list-by-its-tail.lhs │ ├── 2013-02-16-kmeans-clustering-I.lhs │ ├── 2013-02-17-kmeans-clustering-II.lhs │ ├── 2013-03-04-bounding-vectors.lhs │ ├── 2013-03-26-talking-about-sets.lhs │ ├── 2013-05-16-unique-zippers.lhs │ ├── 2013-05-24-unique-zipper.lhs │ ├── 2013-06-03-abstracting-over-refinements.lhs │ ├── 2013-07-29-putting-things-in-order.lhs │ ├── 2013-11-23-telling_lies.lhs │ ├── 2013-12-01-getting-to-the-bottom.lhs │ ├── 2013-12-02-getting-to-the-bottom.lhs │ ├── 2013-12-09-checking-termination.lhs │ ├── 2013-12-14-gcd.lhs │ ├── 2013-12-22-measuring-the-size-of-structures.lhs │ ├── 2013-12-24-lexicographic-termination.lhs │ ├── 2013-12-29-decreasing-expressions.lhs │ ├── 2014-02-11-the-advantage-of-measures.lhs │ ├── 2014-02-16-text-read.lhs │ ├── 2014-02-23-text-write.lhs │ ├── 2014-03-01-text-bug.lhs │ ├── 2014-05-28-pointers-gone-wild.lhs │ ├── 2014-08-15-a-finer-filter.lhs │ ├── 2015-01-30-okasakis-lazy-queue.lhs │ ├── 2015-06-13-bounded-refinement-types.lhs │ ├── 2016-09-01-normal-forms.lhs │ ├── 2016-09-18-refinement-reflection.lhs │ ├── 2016-10-06-structural-induction.lhs │ ├── 2016-12-25-isomorphisms.lhs │ ├── 2017-01-06-reductions.lhs │ ├── 2017-03-20-arithmetic-overflows.lhs │ ├── 2017-12-15-splitting-and-splicing-intervals-I.lhs │ ├── 2017-12-24-splitting-and-splicing-intervals-II.lhs │ ├── 2018-02-23-measures-and-case-splitting.lhs │ ├── 2018-05-17-hillel-verifier-rodeo-I-leftpad.lhs │ ├── 2020-04-12-polymorphic-perplexion.lhs │ ├── 2020-08-20-lh-as-a-ghc-plugin.lhs │ └── todo │ │ ├── Iso.lhs │ │ ├── LambdaEval.hs │ │ ├── Termination.hs │ │ ├── TextBug.lhs │ │ ├── TextInternal.lhs │ │ ├── TextRead.lhs │ │ ├── TextWrite.lhs │ │ ├── basic_termination.lhs │ │ ├── binary-search-trees.lhs │ │ ├── encoding-induction.lhs │ │ ├── index-dependent-maps.hs │ │ ├── index-dependent-maps.lhs │ │ ├── kmeans-full.lhs │ │ ├── lets-talk-about-sets.lhs.markdown │ │ ├── red-black-intro.lhs │ │ ├── red-black-order.lhs │ │ ├── telling-lies-old.lhs │ │ ├── termination.lhs │ │ ├── text-layout.png │ │ ├── text-lifecycle.png │ │ └── verifying-efficient-sorting-algorithms.lhs ├── language │ ├── Makefile │ ├── commands.sty │ ├── haskellListings.tex │ ├── language.tex │ ├── liquidHaskell.sty │ ├── main.pdf │ ├── main.tex │ └── typeInference.tex ├── mkDocs │ ├── README.md │ ├── docs │ │ ├── blogposts │ │ │ ├── .pages │ │ │ ├── 2013-01-01-refinement-types-101.lhs.md │ │ │ ├── 2013-01-27-refinements101-reax.lhs.md │ │ │ ├── 2013-01-28-bounding-vectors.lhs.md │ │ │ ├── 2013-01-31-safely-catching-a-list-by-its-tail.lhs.md │ │ │ ├── 2013-02-16-kmeans-clustering-I.lhs.md │ │ │ ├── 2013-02-17-kmeans-clustering-II.lhs.md │ │ │ ├── 2013-03-04-bounding-vectors.lhs.md │ │ │ ├── 2013-03-26-talking-about-sets.lhs.md │ │ │ ├── 2013-05-24-unique-zipper.lhs.md │ │ │ ├── 2013-06-03-abstracting-over-refinements.lhs.md │ │ │ ├── 2013-07-29-putting-things-in-order.lhs.md │ │ │ ├── 2013-10-10-csv-tables.lhs.md │ │ │ ├── 2013-11-23-telling_lies.lhs.md │ │ │ ├── 2013-12-02-getting-to-the-bottom.lhs.md │ │ │ ├── 2013-12-09-checking-termination.lhs.md │ │ │ ├── 2013-12-14-gcd.lhs.md │ │ │ ├── 2014-02-11-the-advantage-of-measures.lhs.md │ │ │ ├── 2014-05-28-pointers-gone-wild.lhs.md │ │ │ ├── 2014-08-15-a-finer-filter.lhs.md │ │ │ ├── 2015-01-30-okasakis-lazy-queue.lhs.md │ │ │ ├── 2016-09-01-normal-forms.lhs.md │ │ │ ├── 2016-09-18-refinement-reflection.lhs.md │ │ │ ├── 2016-10-06-structural-induction.lhs.md │ │ │ ├── 2017-03-20-arithmetic-overflows.lhs.md │ │ │ ├── 2017-12-15-splitting-and-splicing-intervals-I.lhs.md │ │ │ ├── 2017-12-24-splitting-and-splicing-intervals-II.lhs.md │ │ │ ├── 2018-02-23-measures-and-case-splitting.lhs.md │ │ │ ├── 2018-05-17-hillel-verifier-rodeo-I-leftpad.lhs.md │ │ │ ├── 2019-10-20-why-types.lhs.md │ │ │ ├── 2020-04-12-polymorphic-perplexion.lhs.md │ │ │ ├── 2020-08-20-lh-as-a-ghc-plugin.lhs.md │ │ │ └── 2025-03-20-lh-release.md │ │ ├── index.md │ │ ├── install.md │ │ ├── options.md │ │ ├── papers.md │ │ ├── specifications.md │ │ ├── static │ │ │ ├── img │ │ │ │ ├── angles.jpg │ │ │ │ ├── ansel-adams-la-jolla.jpg │ │ │ │ ├── beach.jpg │ │ │ │ ├── dafny-leftpad-spec.png │ │ │ │ ├── emacs.png │ │ │ │ ├── escher-helix.jpg │ │ │ │ ├── falling.jpg │ │ │ │ ├── favicon.ico │ │ │ │ ├── garter-snake.jpg │ │ │ │ ├── geisel2.jpg │ │ │ │ ├── hillel-tweet-1.png │ │ │ │ ├── hillel-tweet-2.png │ │ │ │ ├── ico.png │ │ │ │ ├── la-jolla-shores-2.jpg │ │ │ │ ├── la-jolla-shores.jpg │ │ │ │ ├── leftpad-spec.png │ │ │ │ ├── lem_intersect.png │ │ │ │ ├── lem_sub.png │ │ │ │ ├── lem_union.png │ │ │ │ ├── logo-header.png │ │ │ │ ├── logo.png │ │ │ │ ├── odometer-rollover.jpg │ │ │ │ ├── out.gif │ │ │ │ ├── plugin-emacs.gif │ │ │ │ ├── plugin-ghcid.gif │ │ │ │ ├── plugin-vim.png │ │ │ │ ├── plugin-vscode.gif │ │ │ │ ├── preloader.gif │ │ │ │ ├── queue-lists.png │ │ │ │ ├── queue-rotate.png │ │ │ │ ├── queue.png │ │ │ │ ├── regehr-tweet-quantifiers.png │ │ │ │ ├── ribbon.png │ │ │ │ ├── sea.jpg │ │ │ │ ├── splash-append.png │ │ │ │ ├── splash-assocpf.gif │ │ │ │ ├── splash-assocpf.png │ │ │ │ ├── splash-assocthm.gif │ │ │ │ ├── splash-assocthm.png │ │ │ │ ├── splash-binarySearch-A.gif │ │ │ │ ├── splash-binarySearch-A.png │ │ │ │ ├── splash-binarySearch-B.gif │ │ │ │ ├── splash-binarySearch-B.png │ │ │ │ ├── splash-binarySearch-C.gif │ │ │ │ ├── splash-binarySearch-C.png │ │ │ │ ├── splash-binarySearch-D.gif │ │ │ │ ├── splash-binarySearch-D.png │ │ │ │ ├── splash-dotproduct.gif │ │ │ │ ├── splash-dotproduct.png │ │ │ │ ├── splash-fib.gif │ │ │ │ ├── splash-fib.png │ │ │ │ ├── splash-head.gif │ │ │ │ ├── splash-head.png │ │ │ │ ├── splash-insertsort.gif │ │ │ │ ├── splash-insertsort.png │ │ │ │ ├── splash-merge.gif │ │ │ │ ├── splash-merge.png │ │ │ │ ├── splash-unsafetake.gif │ │ │ │ ├── splash-unstutter.gif │ │ │ │ ├── splash-unstutter.png │ │ │ │ ├── splash-ups.gif │ │ │ │ ├── splash-ups.png │ │ │ │ ├── splash-vectorsum.gif │ │ │ │ ├── splash-vectorsum.png │ │ │ │ ├── text-layout.png │ │ │ │ ├── text-lifecycle.png │ │ │ │ ├── white.jpg │ │ │ │ ├── why_types_1_1.png │ │ │ │ ├── why_types_1_2.png │ │ │ │ ├── why_types_1_3.png │ │ │ │ ├── why_types_2.png │ │ │ │ ├── why_types_2_1.png │ │ │ │ ├── why_types_2_2.png │ │ │ │ ├── why_types_3_1.png │ │ │ │ ├── why_types_3_2.png │ │ │ │ ├── why_types_3_3.png │ │ │ │ └── why_types_3_4.png │ │ │ ├── liquid-dark.css │ │ │ ├── liquid-light.css │ │ │ └── misc.css │ │ └── tags.html │ ├── mkdocs.yml │ └── theme-overrides │ │ └── main.html └── slides │ ├── BOS14 │ ├── Makefile │ ├── README.md │ ├── _support │ │ ├── liquid.css │ │ ├── liquidhaskell.css │ │ ├── reveal.js │ │ │ ├── .travis.yml │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── css │ │ │ │ ├── print │ │ │ │ │ ├── paper.css │ │ │ │ │ └── pdf.css │ │ │ │ ├── reveal.css │ │ │ │ ├── reveal.min.css │ │ │ │ └── theme │ │ │ │ │ ├── README.md │ │ │ │ │ ├── beige.css │ │ │ │ │ ├── blood.css │ │ │ │ │ ├── default.css │ │ │ │ │ ├── moon.css │ │ │ │ │ ├── night.css │ │ │ │ │ ├── seminar.css │ │ │ │ │ ├── seminar.orig.css │ │ │ │ │ ├── serif.css │ │ │ │ │ ├── simple.css │ │ │ │ │ ├── sky.css │ │ │ │ │ ├── solarized.css │ │ │ │ │ ├── source │ │ │ │ │ ├── beige.scss │ │ │ │ │ ├── blood.scss │ │ │ │ │ ├── default.scss │ │ │ │ │ ├── moon.scss │ │ │ │ │ ├── night.scss │ │ │ │ │ ├── serif.scss │ │ │ │ │ ├── simple.scss │ │ │ │ │ ├── sky.scss │ │ │ │ │ └── solarized.scss │ │ │ │ │ └── template │ │ │ │ │ ├── mixins.scss │ │ │ │ │ ├── settings.scss │ │ │ │ │ └── theme.scss │ │ │ ├── index.html │ │ │ ├── js │ │ │ │ ├── reveal.js │ │ │ │ └── reveal.min.js │ │ │ ├── lib │ │ │ │ ├── css │ │ │ │ │ └── zenburn.css │ │ │ │ ├── font │ │ │ │ │ ├── league_gothic-webfont.eot │ │ │ │ │ ├── league_gothic-webfont.svg │ │ │ │ │ ├── league_gothic-webfont.ttf │ │ │ │ │ ├── league_gothic-webfont.woff │ │ │ │ │ └── league_gothic_license │ │ │ │ └── js │ │ │ │ │ ├── classList.js │ │ │ │ │ ├── head.min.js │ │ │ │ │ └── html5shiv.js │ │ │ ├── package.json │ │ │ ├── plugin │ │ │ │ ├── highlight │ │ │ │ │ └── highlight.js │ │ │ │ ├── leap │ │ │ │ │ └── leap.js │ │ │ │ ├── markdown │ │ │ │ │ ├── example.html │ │ │ │ │ ├── example.md │ │ │ │ │ ├── markdown.js │ │ │ │ │ └── marked.js │ │ │ │ ├── math │ │ │ │ │ └── math.js │ │ │ │ ├── multiplex │ │ │ │ │ ├── client.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── master.js │ │ │ │ ├── notes-server │ │ │ │ │ ├── client.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── notes.html │ │ │ │ ├── notes │ │ │ │ │ ├── notes.html │ │ │ │ │ └── notes.js │ │ │ │ ├── postmessage │ │ │ │ │ ├── example.html │ │ │ │ │ └── postmessage.js │ │ │ │ ├── print-pdf │ │ │ │ │ └── print-pdf.js │ │ │ │ ├── remotes │ │ │ │ │ └── remotes.js │ │ │ │ ├── search │ │ │ │ │ └── search.js │ │ │ │ └── zoom-js │ │ │ │ │ └── zoom.js │ │ │ └── test │ │ │ │ ├── examples │ │ │ │ ├── assets │ │ │ │ │ ├── image1.png │ │ │ │ │ └── image2.png │ │ │ │ ├── barebones.html │ │ │ │ ├── embedded-media.html │ │ │ │ ├── math.html │ │ │ │ └── slide-backgrounds.html │ │ │ │ ├── qunit-1.12.0.css │ │ │ │ ├── qunit-1.12.0.js │ │ │ │ ├── test-markdown-element-attributes.html │ │ │ │ ├── test-markdown-element-attributes.js │ │ │ │ ├── test-markdown-slide-attributes.html │ │ │ │ ├── test-markdown-slide-attributes.js │ │ │ │ ├── test-markdown.html │ │ │ │ ├── test-markdown.js │ │ │ │ ├── test.html │ │ │ │ └── test.js │ │ └── template.reveal │ ├── hs │ │ ├── end │ │ │ ├── 000_Refinements.hs │ │ │ ├── 001_Refinements.hs │ │ │ ├── 01_Elements.hs │ │ │ ├── 02_AbstractRefinements.hs │ │ │ ├── 03_Termination.hs │ │ │ ├── 05_Memory.hs │ │ │ └── 06_Eval.hs │ │ ├── long │ │ │ ├── AlphaConvert.hs │ │ │ ├── GhcListSort.hs │ │ │ ├── KMP.hs │ │ │ ├── RBTree-ord.hs │ │ │ ├── RBTree.hs │ │ │ └── SoCalledHeartBleed.hs │ │ └── start │ │ │ ├── 000_Refinements.hs │ │ │ ├── 001_Refinements.hs │ │ │ ├── 01_Elements.hs │ │ │ ├── 02_AbstractRefinements.hs │ │ │ ├── 03_Termination.hs │ │ │ ├── 04_Streams.hs │ │ │ ├── 05_Memory.hs │ │ │ ├── 06_Eval-done.hs │ │ │ └── 06_Eval.hs │ ├── img │ │ ├── RedBlack.png │ │ ├── RobertMorris.png │ │ ├── bytestring.png │ │ ├── code-spec-indiv.png │ │ ├── code-spec-total.png │ │ ├── firstbug-crop.jpg │ │ ├── firstbug-crop2.jpg │ │ ├── firstbug.jpg │ │ ├── george-orwell.jpg │ │ ├── gotofail.png │ │ ├── heartbleed.png │ │ ├── minindex-classic.png │ │ ├── minindex-invariant.png │ │ ├── minindex-modern.png │ │ ├── minindex-reduce.png │ │ ├── overflow.png │ │ ├── rbtree-bad1.png │ │ ├── rbtree-bad2.png │ │ ├── rbtree-ok.png │ │ ├── tension0.png │ │ ├── tension1.png │ │ ├── tension2.png │ │ ├── tension3.png │ │ ├── termination-results.png │ │ ├── thoughtcrime.png │ │ └── ungood-small.jpg │ └── lhs │ │ ├── 00_Motivation.lhs │ │ ├── 00_Motivation_Long.lhs │ │ ├── 01_SimpleRefinements.lhs │ │ ├── 02_Measures.lhs │ │ ├── 03_HigherOrderFunctions.lhs │ │ ├── 04_AbstractRefinements.lhs │ │ ├── 05_Composition.lhs │ │ ├── 06_Inductive.lhs │ │ ├── 07_Array.lhs │ │ ├── 08_Recursive.lhs │ │ ├── 09_Laziness.lhs │ │ ├── 10_Termination.lhs │ │ ├── 11_Evaluation.lhs │ │ ├── 12_Conclusion.lhs │ │ ├── 13_RedBlack.lhs │ │ ├── 14_Memory.lhs │ │ ├── Index-Boston-Haskell.lhs │ │ ├── Index-Tufts.lhs │ │ └── Index.lhs │ ├── ETH14 │ ├── Makefile │ ├── MkCode.hs │ ├── _support │ │ ├── liquid.css │ │ ├── liquidhaskell.css │ │ ├── reveal.js │ │ │ ├── .travis.yml │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── lib │ │ │ │ └── font │ │ │ │ │ ├── league_gothic-webfont.eot │ │ │ │ │ ├── league_gothic-webfont.svg │ │ │ │ │ ├── league_gothic-webfont.ttf │ │ │ │ │ ├── league_gothic-webfont.woff │ │ │ │ │ └── league_gothic_license │ │ │ ├── plugin │ │ │ │ ├── highlight │ │ │ │ │ └── highlight.js │ │ │ │ ├── leap │ │ │ │ │ └── leap.js │ │ │ │ ├── markdown │ │ │ │ │ ├── markdown.js │ │ │ │ │ └── marked.js │ │ │ │ ├── math │ │ │ │ │ └── math.js │ │ │ │ ├── multiplex │ │ │ │ │ ├── client.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── master.js │ │ │ │ ├── notes-server │ │ │ │ │ ├── client.js │ │ │ │ │ └── index.js │ │ │ │ ├── notes │ │ │ │ │ └── notes.js │ │ │ │ ├── postmessage │ │ │ │ │ └── postmessage.js │ │ │ │ ├── print-pdf │ │ │ │ │ └── print-pdf.js │ │ │ │ ├── remotes │ │ │ │ │ └── remotes.js │ │ │ │ ├── search │ │ │ │ │ └── search.js │ │ │ │ └── zoom-js │ │ │ │ │ └── zoom.js │ │ │ └── test │ │ │ │ ├── examples │ │ │ │ └── assets │ │ │ │ │ ├── image1.png │ │ │ │ │ └── image2.png │ │ │ │ ├── qunit-1.12.0.css │ │ │ │ ├── qunit-1.12.0.js │ │ │ │ ├── test-markdown-element-attributes.js │ │ │ │ ├── test-markdown-slide-attributes.js │ │ │ │ ├── test-markdown.js │ │ │ │ └── test.js │ │ └── template.reveal │ ├── cleanup │ ├── img │ │ ├── RedBlack.png │ │ ├── minindex-classic.png │ │ ├── minindex-invariant.png │ │ ├── minindex-modern.png │ │ ├── minindex-reduce.png │ │ ├── tension0.png │ │ ├── tension1.png │ │ ├── tension2.png │ │ └── tension3.png │ └── lhs │ │ ├── 00_Motivation.lhs │ │ ├── 01_SimpleRefinements.lhs │ │ ├── 02_Measures.lhs │ │ ├── 03_HigherOrderFunctions.lhs │ │ ├── 04_AbstractRefinements.lhs │ │ ├── 05_Composition.lhs │ │ ├── 06_Inductive.lhs │ │ ├── 07_Array.lhs │ │ ├── 08_Recursive.lhs │ │ ├── 09_Laziness.lhs │ │ ├── 10_Termination.lhs │ │ ├── 11_Evaluation.lhs │ │ ├── 12_Conclusion.lhs │ │ └── Index.lhs │ ├── Galois2014 │ ├── 000_Refinements.hs │ ├── 001_Refinements.hs │ ├── 01_Elements.hs │ └── 05_Memory.hs │ ├── HS2014 │ ├── Basics-blank.hs │ ├── Basics.lhs │ ├── ByteString-BAD-DIFFCHECK.hs │ ├── ByteString-blank.hs │ ├── ByteString.lhs │ ├── TODO.md │ ├── Totality-blank.hs │ └── Totality.lhs │ ├── IHP14 │ ├── Makefile │ ├── MkCode.hs │ ├── _support │ │ ├── .template2.reveal.swp │ │ ├── liquid.css │ │ ├── liquidhaskell.css │ │ ├── reveal.js │ │ │ ├── .travis.yml │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── css │ │ │ │ ├── print │ │ │ │ │ ├── paper.css │ │ │ │ │ └── pdf.css │ │ │ │ ├── reveal.css │ │ │ │ ├── reveal.min.css │ │ │ │ └── theme │ │ │ │ │ ├── README.md │ │ │ │ │ ├── beige.css │ │ │ │ │ ├── blood.css │ │ │ │ │ ├── default.css │ │ │ │ │ ├── moon.css │ │ │ │ │ ├── night.css │ │ │ │ │ ├── seminar.css │ │ │ │ │ ├── seminar.orig.css │ │ │ │ │ ├── serif.css │ │ │ │ │ ├── simple.css │ │ │ │ │ ├── sky.css │ │ │ │ │ ├── solarized.css │ │ │ │ │ ├── source │ │ │ │ │ ├── beige.scss │ │ │ │ │ ├── blood.scss │ │ │ │ │ ├── default.scss │ │ │ │ │ ├── moon.scss │ │ │ │ │ ├── night.scss │ │ │ │ │ ├── serif.scss │ │ │ │ │ ├── simple.scss │ │ │ │ │ ├── sky.scss │ │ │ │ │ └── solarized.scss │ │ │ │ │ └── template │ │ │ │ │ ├── mixins.scss │ │ │ │ │ ├── settings.scss │ │ │ │ │ └── theme.scss │ │ │ ├── index.html │ │ │ ├── js │ │ │ │ ├── reveal.js │ │ │ │ └── reveal.min.js │ │ │ ├── lib │ │ │ │ ├── css │ │ │ │ │ └── zenburn.css │ │ │ │ ├── font │ │ │ │ │ ├── league_gothic-webfont.eot │ │ │ │ │ ├── league_gothic-webfont.svg │ │ │ │ │ ├── league_gothic-webfont.ttf │ │ │ │ │ ├── league_gothic-webfont.woff │ │ │ │ │ └── league_gothic_license │ │ │ │ └── js │ │ │ │ │ ├── classList.js │ │ │ │ │ ├── head.min.js │ │ │ │ │ └── html5shiv.js │ │ │ ├── package.json │ │ │ ├── plugin │ │ │ │ ├── highlight │ │ │ │ │ └── highlight.js │ │ │ │ ├── leap │ │ │ │ │ └── leap.js │ │ │ │ ├── markdown │ │ │ │ │ ├── example.html │ │ │ │ │ ├── example.md │ │ │ │ │ ├── markdown.js │ │ │ │ │ └── marked.js │ │ │ │ ├── math │ │ │ │ │ └── math.js │ │ │ │ ├── multiplex │ │ │ │ │ ├── client.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── master.js │ │ │ │ ├── notes-server │ │ │ │ │ ├── client.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── notes.html │ │ │ │ ├── notes │ │ │ │ │ ├── notes.html │ │ │ │ │ └── notes.js │ │ │ │ ├── postmessage │ │ │ │ │ ├── example.html │ │ │ │ │ └── postmessage.js │ │ │ │ ├── print-pdf │ │ │ │ │ └── print-pdf.js │ │ │ │ ├── remotes │ │ │ │ │ └── remotes.js │ │ │ │ ├── search │ │ │ │ │ └── search.js │ │ │ │ └── zoom-js │ │ │ │ │ └── zoom.js │ │ │ └── test │ │ │ │ ├── examples │ │ │ │ ├── assets │ │ │ │ │ ├── image1.png │ │ │ │ │ └── image2.png │ │ │ │ ├── barebones.html │ │ │ │ ├── embedded-media.html │ │ │ │ ├── math.html │ │ │ │ └── slide-backgrounds.html │ │ │ │ ├── qunit-1.12.0.css │ │ │ │ ├── qunit-1.12.0.js │ │ │ │ ├── test-markdown-element-attributes.html │ │ │ │ ├── test-markdown-element-attributes.js │ │ │ │ ├── test-markdown-slide-attributes.html │ │ │ │ ├── test-markdown-slide-attributes.js │ │ │ │ ├── test-markdown.html │ │ │ │ ├── test-markdown.js │ │ │ │ ├── test.html │ │ │ │ └── test.js │ │ └── template.reveal │ ├── cleanup │ ├── img │ │ ├── RedBlack.png │ │ ├── tension0.png │ │ ├── tension1.png │ │ ├── tension2.png │ │ └── tension3.png │ └── lhs │ │ ├── 00_Motivation_GoWrong.lhs │ │ ├── 00_Motivation_Logic.lhs │ │ ├── 01_SimpleRefinements.lhs │ │ ├── 02_Measures.lhs │ │ ├── 03_HigherOrderFunctions.lhs │ │ ├── 04_AbstractRefinements.lhs │ │ ├── 05_Composition.lhs │ │ ├── 06_Inductive.lhs │ │ ├── 07_Array.lhs │ │ ├── 08_Recursive.lhs │ │ ├── 09_Laziness.lhs │ │ ├── 10_Termination.lhs │ │ ├── 11_Evaluation.lhs │ │ ├── 12_Conclusion.lhs │ │ └── Index.lhs │ ├── LambdaConf15 │ └── lhs │ │ └── 01_SimpleRefinements.lhs │ ├── NEU14 │ ├── 00_Refinements-blank.hs │ ├── 00_Refinements.hs │ ├── 01_AbstractRefinements-blank.hs │ ├── 01_AbstractRefinements.hs │ ├── 02_Termination-blank.hs │ ├── 02_Termination.hs │ ├── AlphaConvert.hs │ ├── Eval.hs │ └── RBTree.hs │ ├── flops14 │ ├── Makefile │ ├── TODO.md │ ├── _support │ │ ├── liquid.css │ │ ├── reveal │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── css │ │ │ │ ├── liquidhaskell.css │ │ │ │ ├── main.css │ │ │ │ ├── print │ │ │ │ │ ├── paper.css │ │ │ │ │ └── pdf.css │ │ │ │ └── theme │ │ │ │ │ ├── beige.css │ │ │ │ │ ├── default.css │ │ │ │ │ ├── seminar.css │ │ │ │ │ ├── seminar.orig.css │ │ │ │ │ ├── serif.css │ │ │ │ │ ├── simple.css │ │ │ │ │ └── sky.css │ │ │ ├── js │ │ │ │ ├── .reveal.js.swo │ │ │ │ ├── .reveal.js.swp │ │ │ │ ├── .reveal.min.js.swo │ │ │ │ ├── .reveal.min.js.swp │ │ │ │ ├── reveal.js │ │ │ │ └── reveal.min.js │ │ │ ├── lib │ │ │ │ ├── css │ │ │ │ │ └── zenburn.css │ │ │ │ ├── font │ │ │ │ │ ├── OpenSans-Regular.ttf │ │ │ │ │ ├── PT_Sans-Narrow-Web-Regular.ttf │ │ │ │ │ └── league_gothic-webfont.ttf │ │ │ │ └── js │ │ │ │ │ ├── classList.js │ │ │ │ │ ├── data-markdown.js │ │ │ │ │ ├── head.min.js │ │ │ │ │ ├── highlight.js │ │ │ │ │ ├── html5shiv.js │ │ │ │ │ └── showdown.js │ │ │ ├── package.json │ │ │ └── plugin │ │ │ │ └── speakernotes │ │ │ │ ├── client.js │ │ │ │ ├── index.js │ │ │ │ └── notes.html │ │ └── template.reveal │ ├── cleanup │ ├── img │ │ └── RedBlack.png │ ├── lhs │ │ ├── 00_Index.lhs │ │ ├── 01_SimpleRefinements.lhs │ │ ├── 02_Measures.lhs │ │ ├── 03_HigherOrderFunctions.lhs │ │ ├── 04_AbstractRefinements.lhs │ │ ├── 05_Composition.lhs │ │ ├── 06_Inductive.lhs │ │ ├── 07_Array.lhs │ │ ├── 08_Recursive.lhs │ │ ├── 09_Laziness.lhs │ │ ├── 10_Termination.lhs │ │ └── 11_Evaluation.lhs │ └── reveal.js │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── lib │ │ └── font │ │ │ ├── league_gothic-webfont.eot │ │ │ ├── league_gothic-webfont.svg │ │ │ ├── league_gothic-webfont.ttf │ │ │ ├── league_gothic-webfont.woff │ │ │ └── league_gothic_license │ │ ├── plugin │ │ ├── highlight │ │ │ └── highlight.js │ │ ├── leap │ │ │ └── leap.js │ │ ├── markdown │ │ │ ├── markdown.js │ │ │ └── marked.js │ │ ├── math │ │ │ └── math.js │ │ ├── multiplex │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── master.js │ │ ├── notes-server │ │ │ ├── client.js │ │ │ └── index.js │ │ ├── notes │ │ │ └── notes.js │ │ ├── postmessage │ │ │ └── postmessage.js │ │ ├── print-pdf │ │ │ └── print-pdf.js │ │ ├── remotes │ │ │ └── remotes.js │ │ ├── search │ │ │ └── search.js │ │ └── zoom-js │ │ │ └── zoom.js │ │ └── test │ │ ├── examples │ │ └── assets │ │ │ ├── image1.png │ │ │ └── image2.png │ │ ├── qunit-1.12.0.css │ │ ├── qunit-1.12.0.js │ │ ├── test-markdown-element-attributes.js │ │ ├── test-markdown-slide-attributes.js │ │ ├── test-markdown.js │ │ └── test.js │ ├── niki │ ├── Makefile │ ├── fonts │ │ ├── OFT.txt │ │ ├── PT_Mono-Regular.ttf │ │ ├── PT_Sans-Narrow-Web-Bold.ttf │ │ ├── PT_Sans-Narrow-Web-Regular.ttf │ │ ├── PT_Sans-Web-Bold.ttf │ │ ├── PT_Sans-Web-BoldItalic.ttf │ │ ├── PT_Sans-Web-Italic.ttf │ │ └── PT_Sans-Web-Regular.ttf │ ├── html │ │ ├── benchmarks.png │ │ ├── fonts │ │ │ ├── OFT.txt │ │ │ ├── PT_Mono-Regular.ttf │ │ │ ├── PT_Sans-Narrow-Web-Bold.ttf │ │ │ ├── PT_Sans-Narrow-Web-Regular.ttf │ │ │ ├── PT_Sans-Web-Bold.ttf │ │ │ ├── PT_Sans-Web-BoldItalic.ttf │ │ │ ├── PT_Sans-Web-Italic.ttf │ │ │ └── PT_Sans-Web-Regular.ttf │ │ ├── liquid.css │ │ └── slides.css │ └── lhs │ │ ├── AbstractRefinements.lhs │ │ ├── Array.lhs │ │ ├── Composition.lhs │ │ ├── Inductive.lhs │ │ ├── Laziness.lhs │ │ ├── List.lhs │ │ ├── Loop.lhs │ │ ├── Measures.lhs │ │ ├── SimpleRefinements.lhs │ │ ├── liquid.css │ │ └── slides.css │ └── plpv14 │ ├── Makefile │ ├── _support │ ├── liquid.css │ ├── reveal │ │ ├── LICENSE │ │ ├── README.md │ │ ├── css │ │ │ ├── liquidhaskell.css │ │ │ ├── main.css │ │ │ ├── print │ │ │ │ ├── paper.css │ │ │ │ └── pdf.css │ │ │ └── theme │ │ │ │ ├── beige.css │ │ │ │ ├── default.css │ │ │ │ ├── seminar.css │ │ │ │ ├── seminar.orig.css │ │ │ │ ├── serif.css │ │ │ │ ├── simple.css │ │ │ │ └── sky.css │ │ ├── js │ │ │ ├── .reveal.js.swo │ │ │ ├── .reveal.js.swp │ │ │ ├── .reveal.min.js.swo │ │ │ ├── .reveal.min.js.swp │ │ │ ├── reveal.js │ │ │ └── reveal.min.js │ │ ├── lib │ │ │ ├── css │ │ │ │ └── zenburn.css │ │ │ ├── font │ │ │ │ ├── OpenSans-Regular.ttf │ │ │ │ ├── PT_Sans-Narrow-Web-Regular.ttf │ │ │ │ └── league_gothic-webfont.ttf │ │ │ └── js │ │ │ │ ├── classList.js │ │ │ │ ├── data-markdown.js │ │ │ │ ├── head.min.js │ │ │ │ ├── highlight.js │ │ │ │ ├── html5shiv.js │ │ │ │ └── showdown.js │ │ ├── package.json │ │ └── plugin │ │ │ └── speakernotes │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── notes.html │ └── template.reveal │ ├── hopa │ └── AbstractRefinements.lhs │ ├── lhs │ ├── .01_SimpleRefinements.lhs.swn │ ├── 00_Index.lhs │ ├── 00_Index.lhs.markdown │ ├── 01_SimpleRefinements.lhs │ ├── 01_SimpleRefinements.lhs.markdown │ ├── 02_Measures.lhs │ ├── 02_Measures.lhs.markdown │ ├── 03_HigherOrderFunctions.lhs │ ├── 03_HigherOrderFunctions.lhs.markdown │ ├── 04_AbstractRefinements.lhs │ ├── 04_AbstractRefinements.lhs.markdown │ ├── 05_Composition.lhs │ ├── 05_Composition.lhs.markdown │ ├── 06_Inductive.lhs │ ├── 06_Inductive.lhs.markdown │ ├── 07_Array.lhs │ ├── 07_Array.lhs.markdown │ ├── 08_Recursive.lhs │ ├── 08_Recursive.lhs.markdown │ ├── 09_Laziness.lhs │ ├── 09_Laziness.lhs.markdown │ ├── 10_Termination.lhs │ ├── 10_Termination.lhs.markdown │ └── liquid.css │ ├── pdcreveal.tgz │ ├── reveal.js │ ├── .gitignore │ ├── .travis.yml │ ├── Gruntfile.js │ ├── LICENSE │ ├── lib │ │ └── font │ │ │ ├── league_gothic-webfont.eot │ │ │ ├── league_gothic-webfont.svg │ │ │ ├── league_gothic-webfont.ttf │ │ │ ├── league_gothic-webfont.woff │ │ │ └── league_gothic_license │ ├── plugin │ │ ├── highlight │ │ │ └── highlight.js │ │ ├── leap │ │ │ └── leap.js │ │ ├── markdown │ │ │ ├── markdown.js │ │ │ └── marked.js │ │ ├── math │ │ │ └── math.js │ │ ├── multiplex │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── master.js │ │ ├── notes-server │ │ │ ├── client.js │ │ │ └── index.js │ │ ├── notes │ │ │ └── notes.js │ │ ├── postmessage │ │ │ └── postmessage.js │ │ ├── print-pdf │ │ │ └── print-pdf.js │ │ ├── remotes │ │ │ └── remotes.js │ │ ├── search │ │ │ └── search.js │ │ └── zoom-js │ │ │ └── zoom.js │ └── test │ │ ├── examples │ │ └── assets │ │ │ ├── image1.png │ │ │ └── image2.png │ │ ├── qunit-1.12.0.css │ │ ├── qunit-1.12.0.js │ │ ├── test-markdown-element-attributes.js │ │ ├── test-markdown-slide-attributes.js │ │ ├── test-markdown.js │ │ └── test.js │ └── tmp │ ├── Foo.hs │ └── liquid.css ├── external └── hsmisc │ ├── Graphs.hs │ └── Lhs2Hs.hs ├── files ├── README.md └── main.css ├── liquid-parallel ├── LICENSE ├── Setup.hs ├── liquid-parallel.cabal └── src │ └── Control │ └── Parallel │ └── Strategies_LHAssumptions.hs ├── liquid-prelude ├── LICENSE ├── Setup.hs ├── liquid-prelude.cabal └── src │ └── Language │ └── Haskell │ └── Liquid │ ├── Bag.hs │ ├── Equational.hs │ ├── Foreign.hs │ ├── List.hs │ ├── Prelude.hs │ ├── ProofCombinators.hs │ ├── RTick.hs │ ├── RTick │ └── Combinators.hs │ └── String.hs ├── liquid-vector ├── LICENSE ├── Setup.hs ├── liquid-vector.cabal └── src │ └── Data │ └── Vector_LHAssumptions.hs ├── liquidhaskell-boot ├── ghc-api-tests │ └── GhcApiTests.hs ├── liquidhaskell-boot.cabal ├── src-ghc-9.10 │ └── Liquid │ │ └── GHC │ │ └── API │ │ └── Compat.hs ├── src-ghc │ └── Liquid │ │ └── GHC │ │ ├── API.hs │ │ └── API │ │ ├── Extra.hs │ │ └── StableModule.hs ├── src │ ├── Language │ │ └── Haskell │ │ │ └── Liquid │ │ │ ├── Bare.hs │ │ │ ├── Bare │ │ │ ├── Axiom.hs │ │ │ ├── Check.hs │ │ │ ├── Class.hs │ │ │ ├── DataType.hs │ │ │ ├── Elaborate.hs │ │ │ ├── Expand.hs │ │ │ ├── Measure.hs │ │ │ ├── Misc.hs │ │ │ ├── Plugged.hs │ │ │ ├── Resolve.hs │ │ │ ├── ToBare.hs │ │ │ ├── Typeclass.hs │ │ │ └── Types.hs │ │ │ ├── CSS.hs │ │ │ ├── Cabal.hs │ │ │ ├── Constraint │ │ │ ├── Constraint.hs │ │ │ ├── Env.hs │ │ │ ├── Fresh.hs │ │ │ ├── Generate.hs │ │ │ ├── Init.hs │ │ │ ├── Monad.hs │ │ │ ├── Qualifier.hs │ │ │ ├── Relational.hs │ │ │ ├── RewriteCase.hs │ │ │ ├── Split.hs │ │ │ ├── Template.hs │ │ │ ├── Termination.hs │ │ │ ├── ToFixpoint.hs │ │ │ └── Types.hs │ │ │ ├── GHC │ │ │ ├── Interface.hs │ │ │ ├── Logging.hs │ │ │ ├── Misc.hs │ │ │ ├── Play.hs │ │ │ ├── Plugin.hs │ │ │ ├── Plugin │ │ │ │ ├── Serialisation.hs │ │ │ │ ├── SpecFinder.hs │ │ │ │ ├── Tutorial.hs │ │ │ │ └── Types.hs │ │ │ ├── Resugar.hs │ │ │ ├── SpanStack.hs │ │ │ ├── TypeRep.hs │ │ │ └── Types.hs │ │ │ ├── LHNameResolution.hs │ │ │ ├── Liquid.hs │ │ │ ├── Measure.hs │ │ │ ├── Misc.hs │ │ │ ├── Name │ │ │ └── LogicNameEnv.hs │ │ │ ├── Parse.hs │ │ │ ├── Termination │ │ │ └── Structural.hs │ │ │ ├── Transforms │ │ │ ├── ANF.hs │ │ │ ├── CoreToLogic.hs │ │ │ ├── InlineAux.hs │ │ │ ├── RefSplit.hs │ │ │ ├── Rewrite.hs │ │ │ └── Simplify.hs │ │ │ ├── Types │ │ │ ├── Annotations.hs │ │ │ ├── Bounds.hs │ │ │ ├── DataDecl.hs │ │ │ ├── Dictionaries.hs │ │ │ ├── Equality.hs │ │ │ ├── Errors.hs │ │ │ ├── Fresh.hs │ │ │ ├── Generics.hs │ │ │ ├── Literals.hs │ │ │ ├── Meet.hs │ │ │ ├── Names.hs │ │ │ ├── PredType.hs │ │ │ ├── PrettyPrint.hs │ │ │ ├── RType.hs │ │ │ ├── RTypeOp.hs │ │ │ ├── RefType.hs │ │ │ ├── Specs.hs │ │ │ ├── Types.hs │ │ │ ├── Variance.hs │ │ │ └── Visitors.hs │ │ │ ├── UX │ │ │ ├── ACSS.hs │ │ │ ├── Annotate.hs │ │ │ ├── CTags.hs │ │ │ ├── CmdLine.hs │ │ │ ├── Config.hs │ │ │ ├── DiffCheck.hs │ │ │ ├── Errors.hs │ │ │ ├── QuasiQuoter.hs │ │ │ ├── SimpleVersion.hs │ │ │ └── Tidy.hs │ │ │ └── WiredIn.hs │ └── LiquidHaskellBoot.hs └── tests │ ├── Parser.hs │ └── WiredInTests.hs ├── liquidhaskell.cabal ├── nixpkgs.nix ├── proposals ├── AssumeReflect.md ├── LocalRewrites.md └── OpaqueReflect.md ├── resources ├── icon.png ├── icon.svg ├── logo.png └── logo.svg ├── scripts ├── ghc.head │ ├── build.sh │ └── lh.build.sh ├── haskell_count ├── head.hackage.sh ├── metrics.py ├── performance │ ├── cleanup.bash │ ├── generate.bash │ └── initialize.bash ├── plot-performance │ ├── README.md │ ├── app │ │ ├── Benchmark.hs │ │ ├── Main.hs │ │ └── Plot.hs │ ├── chart_perf.sh │ ├── perf.gnuplot │ └── plot-performance.cabal ├── profiling-driver │ ├── ProfilingDriver.hs │ └── profiling-driver.cabal ├── test │ └── test_plugin.sh └── travis ├── src ├── Data │ ├── Bits_LHAssumptions.hs │ ├── ByteString │ │ ├── Char8_LHAssumptions.hs │ │ ├── Lazy │ │ │ └── Char8_LHAssumptions.hs │ │ ├── Lazy_LHAssumptions.hs │ │ ├── Short_LHAssumptions.hs │ │ └── Unsafe_LHAssumptions.hs │ ├── ByteString_LHAssumptions.hs │ ├── Either_LHAssumptions.hs │ ├── Foldable_LHAssumptions.hs │ ├── List_LHAssumptions.hs │ ├── Maybe_LHAssumptions.hs │ ├── Set_LHAssumptions.hs │ ├── String_LHAssumptions.hs │ ├── Tuple_LHAssumptions.hs │ └── Word_LHAssumptions.hs ├── Foreign │ ├── C │ │ ├── String_LHAssumptions.hs │ │ └── Types_LHAssumptions.hs │ ├── Concurrent_LHAssumptions.hs │ ├── ForeignPtr_LHAssumptions.hs │ ├── Marshal │ │ └── Alloc_LHAssumptions.hs │ ├── Ptr_LHAssumptions.hs │ └── Storable_LHAssumptions.hs ├── GHC │ ├── Base_LHAssumptions.hs │ ├── CString_LHAssumptions.hs │ ├── Classes_LHAssumptions.hs │ ├── Exts_LHAssumptions.hs │ ├── Float_LHAssumptions.hs │ ├── ForeignPtr_LHAssumptions.hs │ ├── IO │ │ └── Handle_LHAssumptions.hs │ ├── Int_LHAssumptions.hs │ ├── List_LHAssumptions.hs │ ├── Maybe_LHAssumptions.hs │ ├── Num │ │ └── Integer_LHAssumptions.hs │ ├── Num_LHAssumptions.hs │ ├── Ptr_LHAssumptions.hs │ ├── Real_LHAssumptions.hs │ ├── Types_LHAssumptions.hs │ └── Word_LHAssumptions.hs ├── Liquid │ └── Prelude │ │ ├── Real_LHAssumptions.hs │ │ └── Totality_LHAssumptions.hs ├── LiquidHaskell.hs └── Prelude_LHAssumptions.hs ├── stack.yaml ├── stack.yaml.lock ├── tests-by-syntax.md ├── tests ├── DependentHaskell │ └── todo │ │ ├── ClassKind.hs │ │ ├── LF326.hs │ │ └── TypeFamilies.hs ├── README.md ├── RankNTypes │ └── pos │ │ ├── Test0.hs │ │ ├── Test00.hs │ │ └── Test1.hs ├── TestCommits.hs ├── absref │ ├── neg │ │ ├── Deppair0.hs │ │ ├── Deptup0.hs │ │ ├── DeptupW.hs │ │ ├── FlipArgs.hs │ │ ├── ListISort.hs │ │ ├── ListISort_LType.hs │ │ └── ListQSort.hs │ └── pos │ │ ├── AbsRef00.hs │ │ ├── Deppair0.hs │ │ ├── Deppair2.hs │ │ ├── Deptup0.hs │ │ ├── DeptupW.hs │ │ ├── FlipArgs.hs │ │ ├── ListISort.hs │ │ ├── ListISort_LType.hs │ │ ├── ListQSort.hs │ │ ├── Papp00.hs │ │ ├── State00.hs │ │ └── VectorLoop.hs ├── app │ └── Main.hs ├── basic │ ├── neg │ │ ├── AssmRefl01.hs │ │ ├── AssmRefl02.hs │ │ ├── AssmRefl03.hs │ │ ├── AssmRefl04.hs │ │ ├── DuplicateSpecs.hs │ │ ├── Inc01.hs │ │ ├── Inc01q.hs │ │ ├── Inc02.hs │ │ ├── Inc03.hs │ │ ├── Inc04.hs │ │ ├── Inc04Lib.hs │ │ ├── List00.hs │ │ ├── Poly00.hs │ │ ├── ReflExt01A.hs │ │ ├── ReflExt01B.hs │ │ ├── ReflExt02A.hs │ │ ├── ReflExt02B.hs │ │ ├── ShadowLogicSymbols.hs │ │ ├── T1459.hs │ │ └── T2349.hs │ └── pos │ │ ├── Alias00.hs │ │ ├── Alias01.hs │ │ ├── Alias02.hs │ │ ├── Alias03.hs │ │ ├── Alias04.hs │ │ ├── Alias05.hs │ │ ├── AssmRefl01.hs │ │ ├── AssmRefl02A.hs │ │ ├── AssmRefl02B.hs │ │ ├── AssmRefl02C.hs │ │ ├── AssmRefl02D.hs │ │ ├── AssmRefl03.hs │ │ ├── AssmReflFilter.hs │ │ ├── Float.hs │ │ ├── Inc00.hs │ │ ├── Inc01.hs │ │ ├── Inc01q.hs │ │ ├── Inc02.hs │ │ ├── Inc03.hs │ │ ├── Inc03Lib.hs │ │ ├── Inc04.hs │ │ ├── Infer00.hs │ │ ├── List00.hs │ │ ├── MeasureOverlapA.hs │ │ ├── MeasureOverlapB.hs │ │ ├── MeasureOverlapC.hs │ │ ├── MeasureOverlapD.hs │ │ ├── MeasureOverlapE.hs │ │ ├── OpaqueRefl01.hs │ │ ├── OpaqueRefl02.hs │ │ ├── OpaqueRefl03A.hs │ │ ├── OpaqueRefl03B.hs │ │ ├── OpaqueRefl03C.hs │ │ ├── OpaqueRefl03D.hs │ │ ├── OpaqueRefl04.hs │ │ ├── OpaqueRefl05.hs │ │ ├── OpaqueRefl06.hs │ │ ├── Poly00.hs │ │ ├── ReflExt01.hs │ │ ├── ReflExt02A.hs │ │ ├── ReflExt02B.hs │ │ ├── ReflExt03A.hs │ │ ├── ReflExt03B.hs │ │ ├── ReflExt04A.hs │ │ ├── ReflExt04B.hs │ │ ├── ReflExt05A.hs │ │ ├── ReflExt05B.hs │ │ ├── ReflExt06A.hs │ │ ├── ReflExt06B.hs │ │ ├── ReflExt06C.hs │ │ ├── ReflExt06D.hs │ │ ├── ReflExt07A.hs │ │ ├── ReflExt07B.hs │ │ ├── ReflExt08A.hs │ │ ├── ReflExt08B.hs │ │ ├── ShadowLogicSymbols.hs │ │ ├── SkipDerived00.hs │ │ ├── T2349.hs │ │ ├── T2369.hs │ │ └── TestAdmit.hs ├── benchmarks │ ├── NOTES.txt │ ├── base-4.5.1.0 │ │ ├── Control │ │ │ ├── Applicative.hs │ │ │ ├── Arrow.hs │ │ │ ├── Category.hs │ │ │ ├── Concurrent.hs │ │ │ ├── Concurrent │ │ │ │ ├── Chan.hs │ │ │ │ ├── MVar.hs │ │ │ │ ├── QSem.hs │ │ │ │ ├── QSemN.hs │ │ │ │ └── SampleVar.hs │ │ │ ├── Exception.hs │ │ │ ├── Exception │ │ │ │ └── Base.hs │ │ │ ├── Monad.hs │ │ │ ├── Monad │ │ │ │ ├── Fix.hs │ │ │ │ ├── Instances.hs │ │ │ │ ├── ST.hs │ │ │ │ ├── ST │ │ │ │ │ ├── Imp.hs │ │ │ │ │ ├── Lazy.hs │ │ │ │ │ ├── Lazy │ │ │ │ │ │ ├── Imp.hs │ │ │ │ │ │ ├── Safe.hs │ │ │ │ │ │ └── Unsafe.hs │ │ │ │ │ ├── Safe.hs │ │ │ │ │ ├── Strict.hs │ │ │ │ │ └── Unsafe.hs │ │ │ │ └── Zip.hs │ │ │ └── OldException.hs │ │ ├── Data │ │ │ ├── Bits.hs │ │ │ ├── Bool.hs │ │ │ ├── Char.hs │ │ │ ├── Complex.hs │ │ │ ├── Data.hs │ │ │ ├── Dynamic.hs │ │ │ ├── Either.hs │ │ │ ├── Eq.hs │ │ │ ├── Fixed.hs │ │ │ ├── Foldable.hs │ │ │ ├── Function.hs │ │ │ ├── Functor.hs │ │ │ ├── HashTable.hs │ │ │ ├── IORef.hs │ │ │ ├── Int.hs │ │ │ ├── Ix.hs │ │ │ ├── List.hs │ │ │ ├── Maybe.hs │ │ │ ├── Monoid.hs │ │ │ ├── Ord.hs │ │ │ ├── Ratio.hs │ │ │ ├── STRef.hs │ │ │ ├── STRef │ │ │ │ ├── Lazy.hs │ │ │ │ └── Strict.hs │ │ │ ├── String.hs │ │ │ ├── Traversable.hs │ │ │ ├── Tuple.hs │ │ │ ├── Typeable.hs │ │ │ ├── Typeable.hs-boot │ │ │ ├── Typeable │ │ │ │ ├── Internal.hs │ │ │ │ └── Internal.hs-boot │ │ │ ├── Unique.hs │ │ │ ├── Version.hs │ │ │ └── Word.hs │ │ ├── Debug │ │ │ └── Trace.hs │ │ ├── Foreign.hs │ │ ├── Foreign │ │ │ ├── C.hs │ │ │ ├── C │ │ │ │ ├── Error.hs │ │ │ │ ├── String.hs │ │ │ │ └── Types.hs │ │ │ ├── Concurrent.hs │ │ │ ├── ForeignPtr.hs │ │ │ ├── ForeignPtr │ │ │ │ ├── Imp.hs │ │ │ │ ├── Safe.hs │ │ │ │ └── Unsafe.hs │ │ │ ├── Marshal.hs │ │ │ ├── Marshal │ │ │ │ ├── Alloc.hs │ │ │ │ ├── Array.hs │ │ │ │ ├── Error.hs │ │ │ │ ├── Pool.hs │ │ │ │ ├── Safe.hs │ │ │ │ ├── Unsafe.hs │ │ │ │ └── Utils.hs │ │ │ ├── Ptr.hs │ │ │ ├── Safe.hs │ │ │ ├── StablePtr.hs │ │ │ └── Storable.hs │ │ ├── GHC │ │ │ ├── Arr.lhs │ │ │ ├── Base.lhs │ │ │ ├── Conc.lhs │ │ │ ├── Conc │ │ │ │ ├── IO.hs │ │ │ │ ├── Signal.hs │ │ │ │ ├── Sync.lhs │ │ │ │ └── Windows.hs │ │ │ ├── ConsoleHandler.hs │ │ │ ├── Constants.hs │ │ │ ├── Desugar.hs │ │ │ ├── Enum.lhs │ │ │ ├── Environment.hs │ │ │ ├── Err.lhs │ │ │ ├── Err.lhs-boot │ │ │ ├── Event.hs │ │ │ ├── Event │ │ │ │ ├── Array.hs │ │ │ │ ├── Clock.hsc │ │ │ │ ├── Control.hs │ │ │ │ ├── EPoll.hsc │ │ │ │ ├── IntMap.hs │ │ │ │ ├── Internal.hs │ │ │ │ ├── KQueue.hsc │ │ │ │ ├── Manager.hs │ │ │ │ ├── PSQ.hs │ │ │ │ ├── Poll.hsc │ │ │ │ ├── Thread.hs │ │ │ │ └── Unique.hs │ │ │ ├── Exception.lhs │ │ │ ├── Exts.hs │ │ │ ├── Fingerprint.hs │ │ │ ├── Fingerprint.hs-boot │ │ │ ├── Fingerprint │ │ │ │ └── Type.hs │ │ │ ├── Float.lhs │ │ │ ├── Float │ │ │ │ ├── ConversionUtils.hs │ │ │ │ └── RealFracMethods.hs │ │ │ ├── Foreign.hs │ │ │ ├── ForeignPtr.hs │ │ │ ├── Handle.hs │ │ │ ├── IO.hs │ │ │ ├── IO.hs-boot │ │ │ ├── IO │ │ │ │ ├── Buffer.hs │ │ │ │ ├── BufferedIO.hs │ │ │ │ ├── Device.hs │ │ │ │ ├── Encoding.hs │ │ │ │ ├── Encoding.hs-boot │ │ │ │ ├── Encoding │ │ │ │ │ ├── CodePage.hs │ │ │ │ │ ├── CodePage │ │ │ │ │ │ └── Table.hs │ │ │ │ │ ├── Failure.hs │ │ │ │ │ ├── Iconv.hs │ │ │ │ │ ├── Latin1.hs │ │ │ │ │ ├── Types.hs │ │ │ │ │ ├── UTF16.hs │ │ │ │ │ ├── UTF32.hs │ │ │ │ │ └── UTF8.hs │ │ │ │ ├── Exception.hs │ │ │ │ ├── Exception.hs-boot │ │ │ │ ├── FD.hs │ │ │ │ ├── Handle.hs │ │ │ │ ├── Handle.hs-boot │ │ │ │ ├── Handle │ │ │ │ │ ├── FD.hs │ │ │ │ │ ├── FD.hs-boot │ │ │ │ │ ├── Internals.hs │ │ │ │ │ ├── Text.hs │ │ │ │ │ └── Types.hs │ │ │ │ └── IOMode.hs │ │ │ ├── IOArray.hs │ │ │ ├── IOBase.hs │ │ │ ├── IORef.hs │ │ │ ├── Int.hs │ │ │ ├── List.lhs │ │ │ ├── MVar.hs │ │ │ ├── Num.lhs │ │ │ ├── PArr.hs │ │ │ ├── Pack.lhs │ │ │ ├── Ptr.lhs │ │ │ ├── Read.lhs │ │ │ ├── Real.lhs │ │ │ ├── ST.lhs │ │ │ ├── STRef.lhs │ │ │ ├── Show.lhs │ │ │ ├── Show.lhs-boot │ │ │ ├── Stable.lhs │ │ │ ├── Stack.hsc │ │ │ ├── Stats.hsc │ │ │ ├── Storable.lhs │ │ │ ├── TopHandler.lhs │ │ │ ├── Unicode.hs │ │ │ ├── Unicode.hs-boot │ │ │ ├── Weak.lhs │ │ │ ├── Windows.hs │ │ │ └── Word.hs │ │ ├── LICENSE │ │ ├── Numeric.hs │ │ ├── Prelude.hs │ │ ├── Setup.hs │ │ ├── System │ │ │ ├── CPUTime.hsc │ │ │ ├── Console │ │ │ │ └── GetOpt.hs │ │ │ ├── Environment.hs │ │ │ ├── Exit.hs │ │ │ ├── IO.hs │ │ │ ├── IO │ │ │ │ ├── Error.hs │ │ │ │ └── Unsafe.hs │ │ │ ├── Info.hs │ │ │ ├── Mem.hs │ │ │ ├── Mem │ │ │ │ ├── StableName.hs │ │ │ │ └── Weak.hs │ │ │ ├── Posix │ │ │ │ ├── Internals.hs │ │ │ │ ├── Internals.hs-boot │ │ │ │ └── Types.hs │ │ │ └── Timeout.hs │ │ ├── Text │ │ │ ├── ParserCombinators │ │ │ │ ├── ReadP.hs │ │ │ │ └── ReadPrec.hs │ │ │ ├── Printf.hs │ │ │ ├── Read.hs │ │ │ ├── Read │ │ │ │ └── Lex.hs │ │ │ ├── Show.hs │ │ │ └── Show │ │ │ │ └── Functions.hs │ │ ├── Unsafe │ │ │ └── Coerce.hs │ │ ├── aclocal.m4 │ │ ├── base.cabal │ │ ├── cbits │ │ │ ├── PrelIOUtils.c │ │ │ ├── WCsubst.c │ │ │ ├── Win32Utils.c │ │ │ ├── consUtils.c │ │ │ ├── iconv.c │ │ │ ├── inputReady.c │ │ │ ├── md5.c │ │ │ ├── primFloat.c │ │ │ └── selectUtils.c │ │ ├── config.guess │ │ ├── config.sub │ │ ├── configure │ │ ├── configure.ac │ │ ├── ieee-flpt.h │ │ ├── include │ │ │ ├── CTypes.h │ │ │ ├── EventConfig.h │ │ │ ├── HsBase.h │ │ │ ├── HsBaseConfig.h │ │ │ ├── Typeable.h │ │ │ ├── WCsubst.h │ │ │ ├── consUtils.h │ │ │ ├── ieee-flpt.h │ │ │ └── md5.h │ │ └── install-sh │ ├── bytestring-0.9.2.1 │ │ ├── Data │ │ │ ├── ByteString.hs │ │ │ └── ByteString │ │ │ │ ├── Char8.hs │ │ │ │ ├── Fusion.hs │ │ │ │ ├── Fusion │ │ │ │ └── T.hs │ │ │ │ ├── Internal.hs │ │ │ │ ├── Lazy.hs │ │ │ │ ├── Lazy │ │ │ │ ├── Char8.hs │ │ │ │ └── Internal.hs │ │ │ │ ├── LazyZip.hs │ │ │ │ ├── T.hs │ │ │ │ └── Unsafe.hs │ │ ├── cbits │ │ │ └── fpstring.c │ │ ├── count.py │ │ ├── count.sh │ │ └── include │ │ │ └── fpstring.h │ ├── containers-0.5.0.0 │ │ ├── Data │ │ │ ├── Graph.hs │ │ │ ├── IntMap.hs │ │ │ ├── IntMap │ │ │ │ ├── Base.hs │ │ │ │ ├── Lazy.hs │ │ │ │ └── Strict.hs │ │ │ ├── IntSet.hs │ │ │ ├── IntSet │ │ │ │ └── Base.hs │ │ │ ├── Map.hs │ │ │ ├── Map │ │ │ │ ├── Base.hs │ │ │ │ ├── Base0.hs │ │ │ │ ├── Base00.hs │ │ │ │ ├── Base1.hs │ │ │ │ ├── Lazy.hs │ │ │ │ └── Strict.hs │ │ │ ├── Sequence.hs │ │ │ ├── Set.hs │ │ │ ├── Set │ │ │ │ └── Base.hs │ │ │ ├── StrictPair.hs │ │ │ └── Tree.hs │ │ ├── LICENSE │ │ ├── Setup.hs │ │ ├── benchmarks │ │ │ ├── IntMap.hs │ │ │ ├── IntSet.hs │ │ │ ├── LookupGE │ │ │ │ ├── IntMap.hs │ │ │ │ ├── LookupGE_IntMap.hs │ │ │ │ ├── LookupGE_Map.hs │ │ │ │ ├── Makefile │ │ │ │ └── Map.hs │ │ │ ├── Makefile │ │ │ ├── Map.hs │ │ │ ├── Sequence.hs │ │ │ ├── Set.hs │ │ │ ├── SetOperations │ │ │ │ ├── Makefile │ │ │ │ ├── SetOperations-IntMap.hs │ │ │ │ ├── SetOperations-IntSet.hs │ │ │ │ ├── SetOperations-Map.hs │ │ │ │ ├── SetOperations-Set.hs │ │ │ │ └── SetOperations.hs │ │ │ ├── bench-cmp.pl │ │ │ └── bench-cmp.sh │ │ ├── containers.cabal │ │ ├── include │ │ │ └── Typeable.h │ │ └── tests │ │ │ ├── Makefile │ │ │ ├── intmap-properties.hs │ │ │ ├── intset-properties.hs │ │ │ ├── map-properties.hs │ │ │ ├── seq-properties.hs │ │ │ └── set-properties.hs │ ├── cse230 │ │ ├── LICENSE │ │ ├── README.md │ │ └── src │ │ │ └── Week10 │ │ │ ├── Axiomatic.hs │ │ │ ├── BigStep.hs │ │ │ ├── Expressions.hs │ │ │ ├── Imp.hs │ │ │ ├── Lec_3_11.hs │ │ │ ├── Lec_3_15.hs │ │ │ ├── ProofCombinators.hs │ │ │ ├── STLC.lhs │ │ │ ├── State.hs │ │ │ └── Verifier.hs │ ├── esop2013-submission │ │ ├── Array.hs │ │ ├── Base.hquals │ │ ├── Base.hs │ │ ├── Fib.hs │ │ ├── GhcListSort.hs │ │ ├── ListSort.hs │ │ ├── Splay.hs │ │ ├── Toy.hs │ │ ├── count.py │ │ └── count.sh │ ├── haskell16 │ │ └── pos │ │ │ └── tmp │ │ │ └── MonoidPeano.hs │ ├── hmatrix-0.15.0.1 │ │ ├── Config.hs │ │ ├── LICENSE │ │ ├── Setup.lhs │ │ ├── examples │ │ │ ├── bool.hs │ │ │ ├── data.txt │ │ │ ├── deriv.hs │ │ │ ├── devel │ │ │ │ ├── ej1 │ │ │ │ │ ├── functions.c │ │ │ │ │ └── wrappers.hs │ │ │ │ └── ej2 │ │ │ │ │ ├── functions.c │ │ │ │ │ └── wrappers.hs │ │ │ ├── error.hs │ │ │ ├── fitting.hs │ │ │ ├── inplace.hs │ │ │ ├── integrate.hs │ │ │ ├── kalman.hs │ │ │ ├── lie.hs │ │ │ ├── minimize.hs │ │ │ ├── monadic.hs │ │ │ ├── multiply.hs │ │ │ ├── ode.hs │ │ │ ├── parallel.hs │ │ │ ├── pca1.hs │ │ │ ├── pca2.hs │ │ │ ├── pinv.hs │ │ │ ├── plot.hs │ │ │ ├── root.hs │ │ │ └── vector.hs │ │ ├── hmatrix.cabal │ │ └── lib │ │ │ ├── Data │ │ │ ├── Packed.hs │ │ │ └── Packed │ │ │ │ ├── Development.hs │ │ │ │ ├── Foreign.hs │ │ │ │ ├── Internal.hs │ │ │ │ ├── Internal │ │ │ │ ├── Common.hs │ │ │ │ ├── Matrix.hs │ │ │ │ ├── Signatures.hs │ │ │ │ └── Vector.hs │ │ │ │ ├── Matrix.hs │ │ │ │ ├── Random.hs │ │ │ │ ├── ST.hs │ │ │ │ └── Vector.hs │ │ │ ├── Graphics │ │ │ └── Plot.hs │ │ │ └── Numeric │ │ │ ├── Chain.hs │ │ │ ├── Container.hs │ │ │ ├── ContainerBoot.hs │ │ │ ├── Conversion.hs │ │ │ ├── GSL.hs │ │ │ ├── GSL │ │ │ ├── Differentiation.hs │ │ │ ├── Fitting.hs │ │ │ ├── Fourier.hs │ │ │ ├── Integration.hs │ │ │ ├── Internal.hs │ │ │ ├── Minimization.hs │ │ │ ├── ODE.hs │ │ │ ├── Polynomials.hs │ │ │ ├── Root.hs │ │ │ ├── Vector.hs │ │ │ ├── gsl-aux.c │ │ │ └── gsl-ode.c │ │ │ ├── IO.hs │ │ │ ├── LinearAlgebra.hs │ │ │ ├── LinearAlgebra │ │ │ ├── Algorithms.hs │ │ │ ├── LAPACK.hs │ │ │ ├── LAPACK │ │ │ │ ├── lapack-aux.c │ │ │ │ └── lapack-aux.h │ │ │ ├── Util.hs │ │ │ └── Util │ │ │ │ └── Convolution.hs │ │ │ ├── Matrix.hs │ │ │ └── Vector.hs │ ├── icfp15 │ │ ├── MiniPosix.hs │ │ ├── neg │ │ │ ├── Composition.hs │ │ │ ├── DBMovies.hs │ │ │ ├── DataBase.hs │ │ │ ├── IfM.hs │ │ │ ├── RIO.hs │ │ │ ├── Records.hs │ │ │ ├── TestM.hs │ │ │ ├── TwiceM.hs │ │ │ └── WhileM.hs │ │ ├── pos │ │ │ ├── Append.hs │ │ │ ├── CompareConstraints.hs │ │ │ ├── Composition.hs │ │ │ ├── CopyRec.hs │ │ │ ├── DBMovies.hs │ │ │ ├── DataBase.hs │ │ │ ├── Dropwhile.hs │ │ │ ├── Filter.lhs │ │ │ ├── FindRec.hs │ │ │ ├── FoldAbs.hs │ │ │ ├── ICFP15.lhs │ │ │ ├── IfM.hs │ │ │ ├── IfM2.hs │ │ │ ├── Incr.hs │ │ │ ├── Incr_elim.hs │ │ │ ├── Overview.lhs │ │ │ ├── Privileges.hs │ │ │ ├── RIO.hs │ │ │ ├── RIO2.hs │ │ │ ├── TestM.hs │ │ │ ├── TwiceM.hs │ │ │ ├── WhileM.hs │ │ │ └── WhileTest.hs │ │ └── todo │ │ │ ├── Append_T.hs │ │ │ ├── Dyn.hs │ │ │ ├── FindRec.hs │ │ │ ├── Reverse.hs │ │ │ └── WhileM.hs │ ├── kmeans-0.1.2 │ │ ├── Data │ │ │ ├── KMeans.hs │ │ │ ├── KMeans.orig.hs │ │ │ └── KMeans0.hs │ │ ├── LICENSE │ │ ├── Setup.lhs │ │ └── kmeans.cabal │ ├── llrbtree-0.1.1 │ │ ├── Data │ │ │ ├── Heap │ │ │ │ ├── Binominal.hs │ │ │ │ ├── Leftist.hs │ │ │ │ ├── Skew.hs │ │ │ │ └── Splay.hs │ │ │ └── Set │ │ │ │ ├── BUSplay.hs │ │ │ │ ├── LLRBTree.hs │ │ │ │ ├── RBTree-appel-height.hs │ │ │ │ ├── RBTree-appel.hs │ │ │ │ ├── RBTree-mini-color.hs │ │ │ │ ├── RBTree-mini.hs │ │ │ │ ├── RBTree-ord.hs │ │ │ │ ├── RBTree.hs │ │ │ │ ├── RBTree0.hs │ │ │ │ ├── Splay.hs │ │ │ │ ├── Splay0.hs │ │ │ │ ├── WBTree.hs │ │ │ │ └── fixme.hs │ │ ├── LICENSE │ │ ├── Setup.hs │ │ └── llrbtree.cabal │ ├── nofib │ │ └── imaginary │ │ │ ├── bernouilli │ │ │ └── Main.hs │ │ │ ├── digits-of-e1 │ │ │ └── Main.lhs │ │ │ ├── digits-of-e2 │ │ │ └── Main.lhs │ │ │ ├── exp3_8 │ │ │ └── Main.hs │ │ │ ├── gen_regexps │ │ │ └── Main.hs │ │ │ ├── integrate │ │ │ └── Main.hs │ │ │ ├── paraffins │ │ │ └── Main.hs │ │ │ ├── primes │ │ │ └── Main.hs │ │ │ ├── queens │ │ │ └── Main.hs │ │ │ ├── rfib │ │ │ └── Main.hs │ │ │ ├── tak │ │ │ └── Main.hs │ │ │ ├── wheel-sieve1 │ │ │ └── Main.hs │ │ │ ├── wheel-sieve2 │ │ │ └── Main.hs │ │ │ └── x2n1 │ │ │ └── Main.hs │ ├── originals │ │ ├── base-4.5.1.0.tar.gz │ │ ├── bytestring-0.9.0.2.tar.gz │ │ ├── containers-0.5.0.0.tar.gz │ │ ├── ghc-7.4.1.tgz │ │ ├── hmatrix-0.15.0.1.tar.gz │ │ ├── llrbtree-0.1.1.tar.gz │ │ ├── text-0.11.2.3.tar.gz │ │ ├── unordered-containers-0.2.1.0.tar.gz │ │ ├── vector-0.10.0.1.tar.gz │ │ ├── vector-0.9.1.tar.gz │ │ ├── vector-algorithms-0.5.4.2.tar.gz │ │ ├── wouter-swierstra-xmonad-7715ec2.zip │ │ └── xmonad-0.10.tar.gz │ ├── popl18 │ │ ├── lib │ │ │ ├── Helper.hs │ │ │ ├── Proves.hs │ │ │ └── prover-ple-lib.cabal │ │ ├── nople │ │ │ ├── neg │ │ │ │ ├── Ackermann.hs │ │ │ │ ├── Append.hs │ │ │ │ ├── ApplicativeList.hs │ │ │ │ ├── ApplicativeMaybe.hs │ │ │ │ ├── BasicLambdas.hs │ │ │ │ ├── Fibonacci.hs │ │ │ │ ├── FunctorList.hs │ │ │ │ ├── FunctorMaybe.hs │ │ │ │ ├── MapFusion.hs │ │ │ │ ├── MonadList.hs │ │ │ │ ├── MonadMaybe.hs │ │ │ │ └── MonadReader.hs │ │ │ ├── pos │ │ │ │ ├── Ackermann.hs │ │ │ │ ├── Append.hs │ │ │ │ ├── ApplicativeId.hs │ │ │ │ ├── ApplicativeList.hs │ │ │ │ ├── ApplicativeMaybe.hs │ │ │ │ ├── ApplicativeReader.hs │ │ │ │ ├── BasicLambdas.hs │ │ │ │ ├── Compose.hs │ │ │ │ ├── Euclide.hs │ │ │ │ ├── Fibonacci.hs │ │ │ │ ├── FoldrUniversal.hs │ │ │ │ ├── FunctorId.hs │ │ │ │ ├── FunctorList.hs │ │ │ │ ├── FunctorMaybe.hs │ │ │ │ ├── FunctorReader.hs │ │ │ │ ├── FunctorReader_NoExtensionality.hs │ │ │ │ ├── MapFusion.hs │ │ │ │ ├── MonadId.hs │ │ │ │ ├── MonadList.hs │ │ │ │ ├── MonadMaybe.hs │ │ │ │ ├── MonadReader.hs │ │ │ │ ├── MonoidList.hs │ │ │ │ ├── MonoidMaybe.hs │ │ │ │ ├── NatInduction.hs │ │ │ │ ├── NaturalDeduction.hs │ │ │ │ ├── Overview.hs │ │ │ │ ├── OverviewListInfix.hs │ │ │ │ ├── Peano.hs │ │ │ │ ├── Solver.hs │ │ │ │ └── Unification.hs │ │ │ └── todo │ │ │ │ └── Soundness.hs │ │ └── ple │ │ │ └── pos │ │ │ ├── Ackermann.hs │ │ │ ├── Append.hs │ │ │ ├── ApplicativeId.hs │ │ │ ├── ApplicativeList.hs │ │ │ ├── ApplicativeMaybe.hs │ │ │ ├── BasicLambdas.hs │ │ │ ├── Compose.hs │ │ │ ├── Euclide.hs │ │ │ ├── Fibonacci.hs │ │ │ ├── FoldrUniversal.hs │ │ │ ├── FunctorId.hs │ │ │ ├── FunctorList.hs │ │ │ ├── FunctorMaybe.hs │ │ │ ├── Lists.hs │ │ │ ├── MapFusion.hs │ │ │ ├── Maybe.hs │ │ │ ├── MonadId.hs │ │ │ ├── MonadList.hs │ │ │ ├── MonadMaybe.hs │ │ │ ├── MonoidList.hs │ │ │ ├── MonoidMaybe.hs │ │ │ ├── NatInduction.hs │ │ │ ├── NaturalDeduction.hs │ │ │ ├── Overview.hs │ │ │ ├── OverviewListInfix.hs │ │ │ ├── Peano.hs │ │ │ ├── Solver.hs │ │ │ └── Unification.hs │ ├── sf │ │ ├── Basics.hs │ │ ├── Induction.hs │ │ ├── InductionRJ.hs │ │ └── Lists.hs │ ├── stitch-lh │ │ ├── .gitignore │ │ ├── CHANGES.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── main │ │ │ └── Main.hs │ │ ├── nixpkgs.nix │ │ ├── shell-stack.nix │ │ ├── shell.nix │ │ ├── src │ │ │ └── Language │ │ │ │ └── Stitch │ │ │ │ └── LH │ │ │ │ ├── CSE.hs │ │ │ │ ├── Check.hs │ │ │ │ ├── Data │ │ │ │ ├── List.hs │ │ │ │ └── Nat.hs │ │ │ │ ├── Eval.hs │ │ │ │ ├── Lex.hs │ │ │ │ ├── Monad.hs │ │ │ │ ├── Op.hs │ │ │ │ ├── Parse.hs │ │ │ │ ├── Pretty.hs │ │ │ │ ├── Repl.hs │ │ │ │ ├── Statement.hs │ │ │ │ ├── Step.hs │ │ │ │ ├── Token.hs │ │ │ │ ├── Type.hs │ │ │ │ ├── Unchecked.hs │ │ │ │ └── Util.hs │ │ ├── stack.yaml │ │ ├── stitch-lh.cabal │ │ └── tests │ │ │ ├── Tests │ │ │ ├── Check.hs │ │ │ ├── Lex.hs │ │ │ ├── Main.hs │ │ │ ├── Parse.hs │ │ │ └── Util.hs │ │ │ ├── prime.stitch │ │ │ └── revapp.stitch │ ├── text-0.11.2.3 │ │ ├── Data │ │ │ ├── Text.hs │ │ │ └── Text │ │ │ │ ├── Array.hs │ │ │ │ ├── Axioms.hs │ │ │ │ ├── Encoding.hs │ │ │ │ ├── Encoding │ │ │ │ ├── Error.hs │ │ │ │ ├── Fusion.hs │ │ │ │ ├── Fusion │ │ │ │ │ └── Common.hs │ │ │ │ ├── Utf16.hs │ │ │ │ ├── Utf32.hs │ │ │ │ └── Utf8.hs │ │ │ │ ├── Foreign.hs │ │ │ │ ├── Fusion-debug.hs │ │ │ │ ├── Fusion.hs │ │ │ │ ├── Fusion │ │ │ │ ├── CaseMapping.hs │ │ │ │ ├── Common.hs │ │ │ │ ├── Internal.hs │ │ │ │ └── Size.hs │ │ │ │ ├── IO.hs │ │ │ │ ├── IO │ │ │ │ └── Internal.hs │ │ │ │ ├── Internal.hs │ │ │ │ ├── Lazy.hs │ │ │ │ ├── Lazy │ │ │ │ ├── Builder.hs │ │ │ │ ├── Builder │ │ │ │ │ ├── Functions.hs │ │ │ │ │ ├── Int.hs │ │ │ │ │ ├── RealFloat.hs │ │ │ │ │ └── RealFloat │ │ │ │ │ │ └── Functions.hs │ │ │ │ ├── Encoding.hs │ │ │ │ ├── Encoding │ │ │ │ │ └── Fusion.hs │ │ │ │ ├── Fusion.hs │ │ │ │ ├── IO.hs │ │ │ │ ├── Internal.hs │ │ │ │ ├── Read.hs │ │ │ │ └── Search.hs │ │ │ │ ├── Private.hs │ │ │ │ ├── Read.hs │ │ │ │ ├── Search.hs │ │ │ │ ├── Unsafe.hs │ │ │ │ ├── Unsafe │ │ │ │ └── Base.hs │ │ │ │ ├── UnsafeChar.hs │ │ │ │ ├── UnsafeShift.hs │ │ │ │ └── Util.hs │ │ ├── LICENSE │ │ ├── LIQUID.txt │ │ ├── README.markdown │ │ ├── Setup.lhs │ │ ├── cbits │ │ │ └── cbits.c │ │ ├── count.py │ │ ├── count.sh │ │ ├── tests-and-benchmarks.markdown │ │ └── text.cabal │ ├── unordered-containers-0.2.1.0 │ │ ├── Data │ │ │ ├── HashMap │ │ │ │ ├── Array.hs │ │ │ │ ├── Base.hs │ │ │ │ ├── Lazy.hs │ │ │ │ ├── PopCount.hs │ │ │ │ ├── Strict.hs │ │ │ │ └── UnsafeShift.hs │ │ │ └── HashSet.hs │ │ ├── LICENSE │ │ ├── Setup.hs │ │ ├── cbits │ │ │ └── popc.c │ │ ├── tests │ │ │ ├── HashMapProperties.hs │ │ │ ├── HashSetProperties.hs │ │ │ └── Regressions.hs │ │ └── unordered-containers.cabal │ ├── vector-0.10.0.1 │ │ ├── Data │ │ │ ├── Vector.hs │ │ │ └── Vector │ │ │ │ ├── Fusion │ │ │ │ ├── Stream.hs │ │ │ │ ├── Stream │ │ │ │ │ ├── Monadic.hs │ │ │ │ │ ├── Monadic.nocpp.hs │ │ │ │ │ └── Size.hs │ │ │ │ └── Util.hs │ │ │ │ ├── Generic.hs │ │ │ │ ├── Generic.nocpp.hs │ │ │ │ ├── Generic │ │ │ │ ├── Base.hs │ │ │ │ ├── Mutable.hs │ │ │ │ ├── New.hs │ │ │ │ ├── New.nocpp.hs │ │ │ │ └── New0.hs │ │ │ │ ├── Internal │ │ │ │ └── Check.hs │ │ │ │ ├── Mutable.hs │ │ │ │ ├── Primitive.hs │ │ │ │ ├── Primitive │ │ │ │ ├── Mutable.hs │ │ │ │ └── Mutable.nocpp.hs │ │ │ │ ├── Storable.hs │ │ │ │ ├── Storable │ │ │ │ ├── Internal.hs │ │ │ │ └── Mutable.hs │ │ │ │ ├── Unboxed.hs │ │ │ │ └── Unboxed │ │ │ │ ├── Base.hs │ │ │ │ └── Mutable.hs │ │ ├── LICENSE │ │ ├── Setup.hs │ │ ├── include │ │ │ └── vector.h │ │ ├── internal │ │ │ ├── GenUnboxTuple.hs │ │ │ └── unbox-tuple-instances │ │ └── vector.cabal │ ├── vector-algorithms-0.5.4.2 │ │ ├── Data │ │ │ └── Vector │ │ │ │ └── Algorithms │ │ │ │ ├── AmericanFlag.hs │ │ │ │ ├── Combinators.hs │ │ │ │ ├── Common.hs │ │ │ │ ├── Heap.hs │ │ │ │ ├── Insertion.hs │ │ │ │ ├── Intro.hs │ │ │ │ ├── Merge.hs │ │ │ │ ├── Optimal.hs │ │ │ │ ├── Radix.hs │ │ │ │ ├── Search.hs │ │ │ │ └── Termination.hs │ │ ├── LICENSE │ │ ├── Setup.lhs │ │ ├── count.py │ │ ├── count.sh │ │ ├── include │ │ │ └── vector.h │ │ ├── liquid.sh │ │ └── vector-algorithms.cabal │ ├── xmonad-0.10 │ │ ├── CONFIG │ │ ├── LICENSE │ │ ├── Main.hs │ │ ├── README │ │ ├── STYLE │ │ ├── Setup.lhs │ │ ├── TODO │ │ ├── XMonad.hs │ │ ├── XMonad │ │ │ ├── Config.hs │ │ │ ├── Core.hs │ │ │ ├── Layout.hs │ │ │ ├── LiquidStackSet.lhs │ │ │ ├── Main.hsc │ │ │ ├── ManageHook.hs │ │ │ ├── Operations.hs │ │ │ └── StackSet.hs │ │ ├── man │ │ │ ├── xmonad.1 │ │ │ ├── xmonad.1.markdown │ │ │ └── xmonad.hs │ │ ├── tests │ │ │ ├── Properties.hs │ │ │ └── loc.hs │ │ ├── util │ │ │ └── GenerateManpage.hs │ │ └── xmonad.cabal │ └── xmonad-0.11 │ │ ├── XMonad │ │ └── StackSet.hs │ │ └── tests │ │ └── Properties.txt ├── cabal_driver │ └── driver.hs ├── classes │ ├── neg │ │ ├── Class00.hs │ │ ├── Class01.hs │ │ ├── Inst00.hs │ │ └── RealProps0.hs │ └── pos │ │ ├── Class00.hs │ │ ├── HiddenMethod00.hs │ │ ├── Inst00.hs │ │ ├── RealProps0.hs │ │ ├── RealProps1.hs │ │ ├── STMonad.hs │ │ ├── TypeEquality00.hs │ │ └── TypeEquality01.hs ├── datacon │ ├── neg │ │ ├── AdtPeano2.hs │ │ ├── Data00.hs │ │ ├── Data00Lib.hs │ │ ├── Data01.hs │ │ ├── Data02.hs │ │ ├── Data02Lib.hs │ │ ├── Date.hs │ │ ├── NewTypes.hs │ │ └── NewTypes0.hs │ └── pos │ │ ├── AdtPeano2.hs │ │ ├── Data00.hs │ │ ├── Data00Lib.hs │ │ ├── Data01.hs │ │ ├── Data02.hs │ │ ├── Data02Lib.hs │ │ ├── Date.hs │ │ ├── NewType.hs │ │ ├── T1446.hs │ │ ├── T1473A.hs │ │ ├── T1473B.hs │ │ ├── T1476.hs │ │ ├── T1477.hs │ │ └── T1777.hs ├── errors │ ├── AmbiguousInline.hs │ ├── AmbiguousReflect.hs │ ├── BadAliasApp.hs │ ├── BadAnnotation.hs │ ├── BadAnnotation1.hs │ ├── BadData0.hs │ ├── BadData1.hs │ ├── BadData2.hs │ ├── BadDataCon2.hs │ ├── BadDataConType.hs │ ├── BadDataConType1.hs │ ├── BadDataConType2.hs │ ├── BadDataDeclTyVars.hs │ ├── BadGADT.hs │ ├── BadPragma0.hs │ ├── BadPragma1.hs │ ├── BadPragma2.hs │ ├── BadPredApp.hs │ ├── BadQualifier.hs │ ├── BadSig0.hs │ ├── BadSig1.hs │ ├── BadSyn1.hs │ ├── BadSyn2.hs │ ├── BadSyn3.hs │ ├── BadSyn4.hs │ ├── CyclicExprAlias0.hs │ ├── CyclicExprAlias1.hs │ ├── CyclicExprAlias2.hs │ ├── CyclicExprAlias3.hs │ ├── CyclicPredAlias0.hs │ ├── CyclicPredAlias1.hs │ ├── CyclicPredAlias2.hs │ ├── CyclicPredAlias3.hs │ ├── CyclicTypeAlias0.hs │ ├── CyclicTypeAlias1.hs │ ├── CyclicTypeAlias2.hs │ ├── CyclicTypeAlias3.hs │ ├── DupAlias.hs │ ├── DupData.hs │ ├── DupFunSigs.hs │ ├── DupMeasure.hs │ ├── ElabLocation.hs │ ├── ElabLocation2.hs │ ├── ElabLocation3.hs │ ├── EmptyData.hs │ ├── ErrLocation.hs │ ├── ErrLocation2.hs │ ├── ExportMeasure0.hs │ ├── ExportReflect0.hs │ ├── Fractional.hs │ ├── HigherOrderBinder.hs │ ├── HoleCrash1.hs │ ├── HoleCrash2.hs │ ├── HoleCrash3.hs │ ├── Inconsistent0.hs │ ├── Inconsistent1.hs │ ├── Inconsistent2.hs │ ├── InlineSubExp0.hs │ ├── InlineSubExp1.hs │ ├── IrregularData.hs │ ├── LiftMeasureCase.hs │ ├── LocalHole.hs │ ├── MissingAssume.hs │ ├── MissingField1.hs │ ├── MissingReflect.hs │ ├── MissingSizeFun.hs │ ├── MultiInstMeasures.hs │ ├── MultiRecSels.hs │ ├── Positivity1.hs │ ├── Positivity2.hs │ ├── PositivityCheck.hs │ ├── ReWrite5.hs │ ├── ReWrite6.hs │ ├── ReWrite7.hs │ ├── ReWrite8.hs │ ├── ReflectLam.hs │ ├── ShadowFieldInline.hs │ ├── ShadowFieldReflect.hs │ ├── ShadowMeasure.hs │ ├── ShadowMeasureVar.hs │ ├── SplitSubtype.hs │ ├── T1140.hs │ ├── T1498.hs │ ├── T1498A.hs │ ├── T2346.hs │ ├── T773.hs │ ├── T774.hs │ ├── TODOUnboundAbsRef.hs │ ├── TODOVarInTypeAlias.hs │ ├── TerminationExprNum.hs │ ├── TerminationExprSort.hs │ ├── TerminationExprUnb.hs │ ├── UnboundAbsRef.hs │ ├── UnboundCheckVar.hs │ ├── UnboundFunInSpec.hs │ ├── UnboundFunInSpec1.hs │ ├── UnboundFunInSpec2.hs │ ├── UnboundVarInAssume.hs │ ├── UnboundVarInLocSig.hs │ └── UnboundVarInSpec.hs ├── ffi-include │ ├── foo.c │ └── foo.h ├── golden │ ├── json_output.golden │ └── json_output.hs ├── gradual │ ├── neg │ │ ├── Gradual.hs │ │ ├── Interpretations.hs │ │ └── Intro.hs │ ├── pos │ │ ├── Discussion.hs │ │ ├── Dynamic.hs │ │ ├── Gradual.hs │ │ ├── Interpretations.hs │ │ └── Intro.hs │ └── todo │ │ └── Measures.hs ├── harness │ └── Test │ │ ├── Build.hs │ │ ├── Groups.hs │ │ └── Options.hs ├── import │ ├── client │ │ ├── C.hs │ │ ├── CliAliasGen00.hs │ │ ├── CliRedBlue.hs │ │ ├── Client0.hs │ │ ├── Client1Lib.hs │ │ ├── Client2Lib.hs │ │ ├── ExactGADT9.hs │ │ ├── FunClashLibLibClient.hs │ │ ├── LibRedBlue.hs │ │ ├── LiquidArrayInit.hs │ │ ├── LiquidArrayNullTerm.hs │ │ ├── ListClient.hs │ │ ├── NameClashClient.hs │ │ ├── RC1015.hs │ │ ├── ReExportClient.hs │ │ ├── ReflectClient0.hs │ │ ├── ReflectClient1.hs │ │ ├── ReflectClient2.hs │ │ ├── ReflectClient3.hs │ │ ├── ReflectClient4.hs │ │ ├── ReflectClient4a.hs │ │ ├── ReflectClient5.hs │ │ ├── ReflectClient6.hs │ │ ├── ReflectClient7.hs │ │ ├── ReflectClient8.hs │ │ ├── RewriteClient.hs │ │ ├── STClient.hs │ │ ├── T1096_Foo.hs │ │ ├── T1104Client.hs │ │ ├── T1117.hs │ │ ├── T1118.hs │ │ ├── T1180.hs │ │ ├── T1688.hs │ │ ├── T1738.hs │ │ ├── T2198.hs │ │ └── WrapClient.hs │ ├── deps │ │ ├── ALib.hs │ │ ├── BLib.hs │ │ ├── CLib.hs │ │ └── D.hs │ └── lib │ │ ├── B.hs │ │ ├── ExactGADT8Lib.hs │ │ ├── FunClashLib.hs │ │ ├── FunClashLibLib.hs │ │ ├── Language.hs │ │ ├── LibAliasGen00.hs │ │ ├── LibBlue.hs │ │ ├── LibRed.hs │ │ ├── LiquidArrayLib.hs │ │ ├── ListLib.hs │ │ ├── NameClashLib.hs │ │ ├── PeanoLib.hs │ │ ├── RL1015Lib.hs │ │ ├── ReExportLib.hs │ │ ├── ReflectLib0.hs │ │ ├── ReflectLib1.hs │ │ ├── ReflectLib2.hs │ │ ├── ReflectLib3.hs │ │ ├── ReflectLib4.hs │ │ ├── ReflectLib5.hs │ │ ├── ReflectLib6.hs │ │ ├── ReflectLib7.hs │ │ ├── ReflectLib8.hs │ │ ├── RewriteLib.hs │ │ ├── STLib.hs │ │ ├── SpecLib.hs │ │ ├── T1096_TypesLib.hs │ │ ├── T1102_LibX.hs │ │ ├── T1102_LibY.hs │ │ ├── T1102_LibZ.hs │ │ ├── T1104Lib.hs │ │ ├── T1112.hs │ │ ├── T1112Lib.hs │ │ ├── T1117Lib.hs │ │ ├── T1118Lib1.hs │ │ ├── T1118Lib2.hs │ │ ├── T1688Lib.hs │ │ ├── T1738Lib.hs │ │ ├── WrapLib.hs │ │ └── WrapLibCode.hs ├── liquidhaskell-test │ ├── Main.hs │ └── QuotRem.hs ├── log │ ├── summary-develop.csv │ └── summary-map_fusion.csv ├── logs │ ├── borscht-2015-06-09T20-35-28 │ │ └── summary.csv │ ├── borscht-2015-07-23T20-12-37 │ │ └── summary.csv │ ├── compare-PLE.csv │ ├── compare-develop-gradual.csv │ ├── defunctionalized.csv │ ├── f4764fa7e9b3992c80c4d9f73cbfbcaea4c16071-all-import.csv │ ├── f4764fa7e9b3992c80c4d9f73cbfbcaea4c16071-no-import.csv │ ├── f4764fa7e9b3992c80c4d9f73cbfbcaea4c16071-used-import.csv │ ├── gradual-with-bools.csv │ ├── gradual.csv │ ├── regrtest_results_goto_Fri_Feb__8_2013_POST_SPLITFIX_HUGHESPJ │ ├── regrtest_results_goto_Fri_Sep_21_171954_2012 │ ├── regrtest_results_goto_Mon_Feb__4_082521_2013 │ ├── regrtest_results_goto_Mon_Jul_14_master │ ├── regrtest_results_goto_Mon_Jul_14_post_parseparens │ ├── regrtest_results_goto_Mon_Oct_22_154504_2012 │ ├── regrtest_results_goto_Mon_Oct_22_205256_2012 │ ├── regrtest_results_goto_Sat_Feb_23_183819_2013 │ ├── regrtest_results_goto_Sun_Jan_13_171109_2013 │ ├── regrtest_results_goto_Sun_Jul_13_221212_2014_post_errormsg_parseparens │ ├── regrtest_results_goto_Sun_Oct_28_172434_2012 │ ├── regrtest_results_goto_Thu_Nov_21_2013-lazyinst │ ├── regrtest_results_goto_Thu_Nov_21_2013-master │ ├── regrtest_results_goto_Tue_Jul_15-post-parseparens-and-errormsg-improved │ ├── regrtest_results_goto_Wed_Nov_20_152850_2013-master │ ├── regrtest_results_goto_post_qualshrink_Mon_Jul_22_2013 │ ├── regrtest_results_goto_smtlib1_Thu_Jul_18_2013 │ ├── regrtest_results_goto_z3mem_Thu_Jul_18_2013 │ ├── regrtest_results_goto_z3mem_Thu_Jul_18_new_2013 │ ├── regrtest_results_nikiL_Fri_Mar_29_125637_2013 │ ├── regrtest_results_ubuntu_Fri_Jul_29_173855_2011 │ ├── regrtest_results_ubuntu_Mon_Dec__5_033239_2011 │ ├── regrtest_results_ubuntu_Sun_Sep_11_155257_2011 │ ├── regrtest_results_ubuntu_Sun_Sep_11_193855_2011 │ ├── regrtest_results_ubuntu_Sun_Sep_11_201206_2011 │ ├── regrtest_results_ubuntu_Thu_Dec_22_025146_2011 │ ├── regrtest_results_ubuntu_Tue_Jul_19_100718_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_031145_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_031429_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_164526_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_180931_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_184219_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_191326_2011 │ ├── regrtest_results_ubuntu_Wed_Dec_21_191410_2011 │ ├── regrtest_results_ubuntu_Wed_Sep__7_144519_2011 │ ├── slowdown.csv │ ├── summary-develop-for-gradual.csv │ ├── summary-develop.csv │ ├── summary-first-ghc8.csv │ ├── summary-fix-inst-borscht-9-27-2015.csv │ ├── summary-last-ghc7.csv │ ├── summary-master-borscht-9-27-2015.csv │ ├── summary-new.csv │ ├── summary-old-dev.csv │ ├── summary-old-develop.csv │ ├── summary-pAnd.csv │ ├── summary-ple.csv │ ├── summary-symbol-borscht-10-08-2015.csv │ ├── summary-symbol-intern-borscht-10-08-2015.csv │ └── typeclasses-analysis │ │ ├── analysis.R │ │ ├── compare-typeclass.csv │ │ ├── summary_dev.csv │ │ └── summary_typeclasses.csv ├── measure │ ├── neg │ │ ├── Bag.hs │ │ ├── Fst00.hs │ │ ├── Fst01.hs │ │ ├── Fst02.hs │ │ ├── GList00Lib.hs │ │ ├── Len00.hs │ │ ├── Len01.hs │ │ ├── List00.hs │ │ ├── List01.hs │ │ ├── List02.hs │ │ ├── Ple0.hs │ │ ├── Ple1.hs │ │ ├── Ple1Lib.hs │ │ └── Using00.hs │ └── pos │ │ ├── AbsMeasure.hs │ │ ├── Bag.hs │ │ ├── ExactFunApp.hs │ │ ├── Fst00.hs │ │ ├── Fst01.hs │ │ ├── Fst02.hs │ │ ├── GList000.hs │ │ ├── GList00Lib.hs │ │ ├── HiddenData.hs │ │ ├── HiddenDataLib.hs │ │ ├── Len00.hs │ │ ├── Len01.hs │ │ ├── Len02.hs │ │ ├── List00.hs │ │ ├── List00Lib.hs │ │ ├── List01.hs │ │ ├── List02.hs │ │ ├── List02Lib.hs │ │ ├── Ple00.hs │ │ ├── Ple01.hs │ │ ├── Ple1.hs │ │ ├── Ple1Lib.hs │ │ ├── PruneHO.hs │ │ ├── RecordAccessors.hs │ │ └── Using00.hs ├── name-resolution │ └── pos │ │ ├── A.hs │ │ ├── AData.hs │ │ ├── B.hs │ │ ├── BData.hs │ │ ├── C.hs │ │ ├── CData.hs │ │ └── MainData.hs ├── names │ ├── neg │ │ ├── Assume00.hs │ │ ├── Capture01.hs │ │ ├── DuplicatedAliases.hs │ │ ├── Local00.hs │ │ ├── Nat1.hs │ │ ├── Nat2.hs │ │ ├── QualifiedAliases.hs │ │ ├── Set00.hs │ │ ├── Set01.hs │ │ ├── Set02.hs │ │ ├── T1078.hs │ │ ├── Vector0.hs │ │ └── Vector1.hs │ └── pos │ │ ├── Alias00.hs │ │ ├── Assume00.hs │ │ ├── Assume01.hs │ │ ├── BasicLambdas00.hs │ │ ├── BasicLambdas01.hs │ │ ├── Capture01.hs │ │ ├── Capture02.hs │ │ ├── ClojurVector.hs │ │ ├── DataFields.hs │ │ ├── ExpandsDependentPairs.hs │ │ ├── HideName00.hs │ │ ├── HidePrelude.hs │ │ ├── List00.hs │ │ ├── Local00.hs │ │ ├── Local01.hs │ │ ├── Local02.hs │ │ ├── Local03.hs │ │ ├── LocalAssume.hs │ │ ├── LocalSpec.hs │ │ ├── Ord.hs │ │ ├── Set00.hs │ │ ├── Set01.hs │ │ ├── Set02.hs │ │ ├── Shadow00.hs │ │ ├── Shadow01.hs │ │ ├── T1521.hs │ │ ├── T675.hs │ │ ├── Uniques.hs │ │ ├── Vector0.hs │ │ ├── Vector04.hs │ │ └── Vector1.hs ├── neg │ ├── AbsApp.hs │ ├── AbsNegTest.hs │ ├── AdtPeano0.hs │ ├── AdtPeano1.hs │ ├── Alias00.hs │ ├── Ass0.hs │ ├── Ast.hs │ ├── AutoSize.hs │ ├── AutoTerm1.hs │ ├── Automate.hs │ ├── BadNats.hs │ ├── Bag1.hs │ ├── Baz.hs │ ├── BigNum.hs │ ├── BinarySearchOverflow.hs │ ├── Books.hs │ ├── CastedTotality.hs │ ├── CharLiterals.hs │ ├── CheckedNum.hs │ ├── CheckedNumLib.hs │ ├── Class1.hs │ ├── Class2.hs │ ├── Class3.hs │ ├── Class4.hs │ ├── CompareConstraints.hs │ ├── Concat.hs │ ├── Concat1.hs │ ├── Concat2.hs │ ├── Constraints.hs │ ├── ConstraintsAppend.hs │ ├── Contra0.hs │ ├── Coretologic.hs │ ├── CosNegTest.hs │ ├── Csv.hs │ ├── Datacon_eq.hs │ ├── DependentTypes.hs │ ├── Elim000.hs │ ├── Elim_ex_compose.hs │ ├── Elim_ex_let.hs │ ├── Elim_ex_list.hs │ ├── Elim_ex_map_1.hs │ ├── Elim_ex_map_2.hs │ ├── Elim_ex_map_3.hs │ ├── Errmsg.hs │ ├── Errorloc.hs │ ├── Eval.hs │ ├── EvalQuery.hs │ ├── Ex0_unsafe.hs │ ├── Ex1_unsafe.hs │ ├── ExactADT6.hs │ ├── ExactGADT6.hs │ ├── ExactGADT7.hs │ ├── ExpNegTest.hs │ ├── Exponential1NegTest.hs │ ├── Exponential2NegTest.hs │ ├── ExponentiationNegTest.hs │ ├── Fail.hs │ ├── Fail1.hs │ ├── FancyTerm.hs │ ├── FilterAbs.hs │ ├── FoldN.hs │ ├── FoldN1.hs │ ├── FunSoundness.hs │ ├── FunctionRef.hs │ ├── GeneralizedTermination.hs │ ├── Grty0.hs │ ├── Grty1.hs │ ├── Grty2.hs │ ├── Grty3.hs │ ├── HasElem.hs │ ├── Hex00.hs │ ├── HigherOrder.hs │ ├── HolesTop.hs │ ├── Inc2.hs │ ├── IntAbsRef.hs │ ├── LazyWhere.hs │ ├── LazyWhere1.hs │ ├── LetRecStack.hs │ ├── List00.hs │ ├── ListConcat.hs │ ├── ListElem.hs │ ├── ListKeys.hs │ ├── ListMSort.hs │ ├── ListRange.dat │ ├── ListRange.hs │ ├── Listne.hs │ ├── Lit.hs │ ├── LocalSpec.hs │ ├── LogNegTest.hs │ ├── Mapreduce.hs │ ├── Mapreduce_tiny.hs │ ├── Maps.hs │ ├── Maybe.hs │ ├── MaybeMonad.hs │ ├── Meas0.hs │ ├── Meas2.hs │ ├── Meas3.hs │ ├── Meas7.hs │ ├── Meas9.hs │ ├── MeasureContains.hs │ ├── MeasureDups.hs │ ├── MergeSort.hs │ ├── Monad3.hs │ ├── Monad4.hs │ ├── Monad5.hs │ ├── Monad6.hs │ ├── Monad7.hs │ ├── Mr00.hs │ ├── MultiParamTypeClasses.hs │ ├── Multi_pred_app_00.hs │ ├── MultipleInvariants.hs │ ├── MyBag.hs │ ├── MyBagDefine.hs │ ├── NameResolution.hs │ ├── NestedRecursion.hs │ ├── NoExhaustiveGuardsError.hs │ ├── NoMethodBindingError.hs │ ├── Null.hs │ ├── Pair.hs │ ├── Pair0.hs │ ├── PairMeasure.hs │ ├── Pargs.hs │ ├── Pargs1.hs │ ├── Partial.hs │ ├── Poly0.hs │ ├── Poly1.hs │ ├── Poly2.hs │ ├── Poly2_degenerate.hs │ ├── Polypred.hs │ ├── Poslist.hs │ ├── Pred.hs │ ├── Propability.hs │ ├── Propability0.hs │ ├── Prune0.hs │ ├── QQTySig.hs │ ├── QQTySyn1.hs │ ├── QQTySyn2.hs │ ├── RG.hs │ ├── Range.hs │ ├── ReWrite.hs │ ├── ReWrite2.hs │ ├── ReWrite3.hs │ ├── ReWrite4.hs │ ├── Rebind.hs │ ├── RecQSort.hs │ ├── RecSelector.hs │ ├── Record0.hs │ ├── RefCtor.hs │ ├── RefinedProp.hs │ ├── Revshape.hs │ ├── Risers.hs │ ├── SafePartialFunctions.hs │ ├── SinNegTest.hs │ ├── Solver.hs │ ├── SqrtNegTest.hs │ ├── Stacks.hs │ ├── State0.hs │ ├── State00.hs │ ├── StateConstraints.hs │ ├── StateConstraints0.hs │ ├── StateConstraints00.hs │ ├── StrictPair0.hs │ ├── StrictPair1.hs │ ├── String00.hs │ ├── Strings.hs │ ├── SumPoly.hs │ ├── Sumk.hquals │ ├── Sumk.hs │ ├── T1095C.hs │ ├── T1126.hs │ ├── T1198_3.hs │ ├── T1267.hs │ ├── T1286.hs │ ├── T1288.hs │ ├── T1490.hs │ ├── T1490A.hs │ ├── T1498.hs │ ├── T1498A.hs │ ├── T1546.hs │ ├── T1553.hs │ ├── T1553A.hs │ ├── T1555.hs │ ├── T1577.hs │ ├── T1604.hs │ ├── T1613.hs │ ├── T1642A.hs │ ├── T1657.hs │ ├── T1657A.hs │ ├── T1659.hs │ ├── T1814.hs │ ├── T1907.hs │ ├── T602.hs │ ├── T743.hs │ ├── T743_mini.hs │ ├── TermReal.hs │ ├── TerminationNum.hs │ ├── TerminationNum0.hs │ ├── Test00.hs │ ├── Test00a.hs │ ├── Test00b.hs │ ├── Test00c.hs │ ├── Test1.hs │ ├── Test2.hs │ ├── TopLevel.hs │ ├── TotalHaskell.hs │ ├── Trans.hs │ ├── Truespec.hs │ ├── Tyclass0_unsafe.hs │ ├── TypeLitNat.hs │ ├── Variance.hs │ ├── Variance1.hs │ ├── Vector00.hs │ ├── Vector0a.hs │ ├── Vector1a.hs │ ├── Vector2.hs │ ├── VerifiedNum.hs │ ├── Wrap0.hs │ └── Wrap1.hs ├── parser │ └── pos │ │ ├── NestedTuples.hs │ │ ├── Parens.hs │ │ ├── ReflectedInfix.hs │ │ ├── T1012.hs │ │ ├── T1481.hs │ │ ├── T1531.hs │ │ ├── T338.hs │ │ ├── T871.hs │ │ ├── T873.hs │ │ ├── T884.hs │ │ ├── T892.hs │ │ ├── TokensAsPrefixes.hs │ │ └── Tuples.hs ├── parsing-errors │ ├── EmptySig.hs │ ├── ParseBind.hs │ ├── ParseClass.hs │ └── app │ │ └── Main.hs ├── pattern │ └── pos │ │ ├── ANF.hs │ │ ├── Contra0.hs │ │ ├── Invariants.hs │ │ ├── Monad0.hs │ │ ├── Monad1.hs │ │ ├── Monad7.hs │ │ ├── MultipleInvariants.hs │ │ ├── Return00.hs │ │ ├── Return01.hs │ │ ├── ReturnStrata00.hs │ │ ├── TemplateHaskell.hs │ │ └── TemplateHaskellLib.hs ├── ple │ ├── neg │ │ ├── BinahQuery.hs │ │ ├── BinahUpdate.hs │ │ ├── BinahUpdateClient.hs │ │ ├── BinahUpdateLib.hs │ │ ├── BinahUpdateLib1.hs │ │ ├── ExactGADT5.hs │ │ ├── Ple0.hs │ │ ├── Ple_sum.hs │ │ ├── ReflectDefault.hs │ │ ├── T1173.hs │ │ ├── T1192.hs │ │ ├── T1289.hs │ │ ├── T1371_Tick.hs │ │ ├── T1409.hs │ │ └── T1424.hs │ └── pos │ │ ├── BinahQuery.hs │ │ ├── BinahUpdate.hs │ │ ├── CCDep.hs │ │ ├── Compiler.hs │ │ ├── ExactGADT4.hs │ │ ├── ExactGADT5.hs │ │ ├── ExactGADT7.hs │ │ ├── FilterPLE.hs │ │ ├── Fulcrum.hs │ │ ├── FuseMap.hs │ │ ├── FuseMapLam.hs │ │ ├── IndLast.hs │ │ ├── IndPal0.hs │ │ ├── IndPal00.hs │ │ ├── IndPalindrome.hs │ │ ├── IndPerm.hs │ │ ├── IndStar.hs │ │ ├── IndStarHole.hs │ │ ├── Isort_erase.hs │ │ ├── ListAnd.hs │ │ ├── ListPolySet.hs │ │ ├── Lists.hs │ │ ├── MJFix.hs │ │ ├── MergeSort.hs │ │ ├── MonadCont.hs │ │ ├── MonadList.hs │ │ ├── MonadReader.hs │ │ ├── MonadState.hs │ │ ├── MossakaBug.hs │ │ ├── NNFPiotr.hs │ │ ├── NegNormalForm.hs │ │ ├── PadLeft.hs │ │ ├── Permutations.hs │ │ ├── Ple0.hs │ │ ├── PleORM.hs │ │ ├── Ple_sum.hs │ │ ├── PolySetBar.hs │ │ ├── PolySetFoo.hs │ │ ├── ProposalLocalRewrites.hs │ │ ├── ReaderEta.hs │ │ ├── ReflectDefault.hs │ │ ├── RegexpDerivative.hs │ │ ├── RosePLEDiv.hs │ │ ├── SKIDC.hs │ │ ├── SKIEta.hs │ │ ├── SKILam.hs │ │ ├── STLC0.hs │ │ ├── STLC1.hs │ │ ├── STLC2.hs │ │ ├── STLCB0.hs │ │ ├── STLCB1.hs │ │ ├── StackCompiler.hs │ │ ├── StlcBug.hs │ │ ├── T1173.hs │ │ ├── T1190.hs │ │ ├── T1257.hs │ │ ├── T1289.hs │ │ ├── T1302b.hs │ │ ├── T1371.hs │ │ ├── T1371_NNF.hs │ │ ├── T1382.hs │ │ ├── T1409.hs │ │ ├── T1424.hs │ │ ├── T1424A.hs │ │ ├── Tmp.hs │ │ └── Tmp1.hs ├── pos │ ├── AVL.hs │ ├── AVLRJ.hs │ ├── Abs.hs │ ├── AbsPosTest.hs │ ├── Absref_crash.hs │ ├── Absref_crash0.hs │ ├── Ackermann.hs │ ├── Adt0.hs │ ├── AdtList0.hs │ ├── AdtList1.hs │ ├── AdtList2.hs │ ├── AdtList3.hs │ ├── AdtList4.hs │ ├── AdtList5.hs │ ├── AdtPeano0.hs │ ├── AdtPeano1.hs │ ├── Alias00.hs │ ├── Alias01.hs │ ├── AllowUnsafeCtor.hs │ ├── Alphaconvert_List.hs │ ├── Alphaconvert_Set.hs │ ├── AmortizedQueue.hs │ ├── Anfbug.hs │ ├── Anftest.hs │ ├── Anish1.hs │ ├── Assume.hs │ ├── AssumedRecursive.hs │ ├── AutoSize.hs │ ├── AutoTerm.hs │ ├── AutoTerm1.hs │ ├── Automate.hs │ ├── Avg.hs │ ├── BST.hs │ ├── BST000.hs │ ├── Bag1.hs │ ├── BangPatterns.hs │ ├── BinarySearch.hs │ ├── BinarySearchOverflow.hs │ ├── Books.hs │ ├── Bool0.hs │ ├── Bool1.hs │ ├── Bool2.hs │ ├── Bounds1.hs │ ├── Case_lambda_join.hs │ ├── CasesToLogic.hs │ ├── Cat.hs │ ├── CharLiterals.hs │ ├── CheckedNum.hs │ ├── CheckedNumLib.hs │ ├── Chunks.hs │ ├── Class.hs │ ├── Class2.hs │ ├── ClassReg.hs │ ├── Client521.hs │ ├── ClojurVector.hs │ ├── Cmptag0.hs │ ├── Coercion.hs │ ├── Coercion1.hs │ ├── Comma.hs │ ├── CommentedOut.hs │ ├── Compare.hs │ ├── Compare1.hs │ ├── Compare2.hs │ ├── CompareConstraints.hs │ ├── Comprehension.hs │ ├── ComprehensionTerm.hs │ ├── Constraints.hs │ ├── ConstraintsAppend.hs │ ├── Coretologic.hs │ ├── CosPosTest.hs │ ├── CountMonad.hs │ ├── Csgordon_issue_296.hs │ ├── Cut00.hs │ ├── DB00.hs │ ├── Data2.hs │ ├── DataBase.hs │ ├── DataConQuals.hs │ ├── Datacon0.hs │ ├── Datacon1.hs │ ├── Datacon_inv.hs │ ├── Deepmeas0.hs │ ├── DepData.hs │ ├── DepTriples.hs │ ├── DependentPairs.hs │ ├── DependentPairsFun.hs │ ├── Deptup.hs │ ├── Deptup1.hs │ ├── Deptup1.pred │ ├── Deptup3.hs │ ├── DeptupW.hs │ ├── Div000.hs │ ├── Dropwhile.hs │ ├── Duplicate_bind.hs │ ├── Elements.hs │ ├── Elems.hs │ ├── Elim00.hs │ ├── Elim01.hs │ ├── Elim_ex_compose.hs │ ├── Elim_ex_let.hs │ ├── Elim_ex_list.hs │ ├── Elim_ex_map_1.hs │ ├── Elim_ex_map_2.hs │ ├── Elim_ex_map_3.hs │ ├── Eq_poly_measure.hs │ ├── Eqelems.hs │ ├── Eval.hs │ ├── EvalQuery.hs │ ├── Even.hs │ ├── Even0.hs │ ├── Ex0.hs │ ├── Ex01.hs │ ├── Ex1.hs │ ├── ExactADT6.hs │ ├── ExactGADT.hs │ ├── ExactGADT0.hs │ ├── ExactGADT1.hs │ ├── ExactGADT2.hs │ ├── ExactGADT6.hs │ ├── Exp0.hs │ ├── ExpPosTest.hs │ ├── ExponentialPosTest.hs │ ├── ExponentiationPosTest.hs │ ├── Extype.hs │ ├── FFI.hs │ ├── Fail.hs │ ├── FailName.hs │ ├── FancyMutualTerm.hs │ ├── FancyTerm.hs │ ├── Fib0.hs │ ├── FibEq.hs │ ├── FilterAbs.hs │ ├── FingerTree.hs │ ├── FoldN.hs │ ├── Foldl.hs │ ├── Foldr.hs │ ├── Foo.hs │ ├── For.hs │ ├── Forloop.hs │ ├── Fractional.hs │ ├── FractionalInstance.hs │ ├── GCD.hs │ ├── GadtEval.hs │ ├── GeneralizedTermination.hs │ ├── GhcSort1.hs │ ├── GhcSort2.hs │ ├── GhcSort3.hs │ ├── GhcSort3_T.hs │ ├── Gimme.hs │ ├── Go.hs │ ├── Go_ugly_type.hs │ ├── GoodHMeas.hs │ ├── Graph.hs │ ├── Grty0.hs │ ├── Grty1.hs │ ├── Grty2.hs │ ├── Grty3.hs │ ├── GuardedNegative.hs │ ├── HasElem.hs │ ├── HaskellMeasure.hs │ ├── HedgeUnion.hs │ ├── Hello.hs │ ├── Hex00.hs │ ├── HigherOrderRecFun.hs │ ├── Hole00.hs │ ├── Hole_app.hs │ ├── Hole_fun.hs │ ├── Holes.hs │ ├── Holes_Slicing.hs │ ├── Hutton.hs │ ├── IcfpDemo.hs │ ├── IdNat.hs │ ├── IdNat0.hs │ ├── Ignores.hs │ ├── Imp0.hs │ ├── Implies.hs │ ├── Infinity.hs │ ├── Infix.hs │ ├── Inline.hs │ ├── Inline1.hs │ ├── Invlhs.hs │ ├── Ite.hs │ ├── Ite1.hs │ ├── Jeff.hs │ ├── KMeansHelper.hs │ ├── Keys.hs │ ├── Kmp.hs │ ├── KmpIO.hs │ ├── KmpVec.hs │ ├── LNot.hs │ ├── LambdaDeBruijn.hs │ ├── LambdaEval.hs │ ├── LambdaEvalMini.hs │ ├── LambdaEvalSuperTiny.hs │ ├── LambdaEvalTiny.hs │ ├── LazyWhere.hs │ ├── LazyWhere1.hs │ ├── Lets.hs │ ├── Lex.hs │ ├── Lib521.hs │ ├── ListAnf.hs │ ├── ListConcat.hs │ ├── ListElem.hs │ ├── ListISort_bag.hs │ ├── ListISort_perm.hs │ ├── ListKeys.hs │ ├── ListLen.hs │ ├── ListLen_LType.hs │ ├── ListMSort.hs │ ├── ListMSort_LType.hs │ ├── ListQSort_LType.hs │ ├── ListRange.hs │ ├── ListRange_LType.hs │ ├── ListReverse_LType.hs │ ├── ListSet.hs │ ├── ListSetDemo.hs │ ├── ListSort.hs │ ├── Listqual.hs │ ├── Lit.hs │ ├── Lit00.hs │ ├── Lit02.hs │ ├── LocalHole.hs │ ├── LocalLazy.hs │ ├── LocalSpec.hs │ ├── LocalSpecLib.hs │ ├── LogPosTest.hs │ ├── LogicCurry1.hs │ ├── Loo.hs │ ├── LooLib.hs │ ├── LooLibLib.hs │ ├── Malformed0.hs │ ├── Map.hs │ ├── Map0.hs │ ├── Map2.hs │ ├── MapFusion.hs │ ├── MapReduceVerified.hs │ ├── MapTvCrash.hs │ ├── Mapreduce_bare.hs │ ├── Maps.hs │ ├── Maps1.hs │ ├── MaskError.hs │ ├── Maybe.hs │ ├── Maybe0.hs │ ├── Maybe000.hs │ ├── Maybe1.hs │ ├── Maybe2.hs │ ├── Maybe3.hs │ ├── Maybe4.hs │ ├── Maybe5.hs │ ├── Meas0.hs │ ├── Meas00.hs │ ├── Meas00a.hs │ ├── Meas0a.hs │ ├── Meas1.hs │ ├── Meas10.hs │ ├── Meas11.hs │ ├── Meas12.hs │ ├── Meas2.hs │ ├── Meas4.hs │ ├── Meas5.hs │ ├── Meas6.hs │ ├── Meas7.hs │ ├── Meas8.hs │ ├── Meas9.hs │ ├── MeasureContains.hs │ ├── MeasureDups.hs │ ├── MeasureSets.hs │ ├── Measures.hs │ ├── Measures1.hs │ ├── Merge1.hs │ ├── MergeSort.hs │ ├── MergeSort_bag.hs │ ├── Mod.hs │ ├── ModLib.hs │ ├── ModTest.hs │ ├── Monad2.hs │ ├── Monad5.hs │ ├── Monad6.hs │ ├── Multi_pred_app_00.hs │ ├── Mutrec.hs │ ├── MutualRec.hs │ ├── MutuallyDependentADT.hs │ ├── MyBag.hs │ ├── MyBagDefine.hs │ ├── Nats.hs │ ├── Niki.hs │ ├── Niki1.hs │ ├── NoCaseExpand.hs │ ├── NoExhaustiveGuardsError.hs │ ├── NoPositivityCheck.hs │ ├── Null.hs │ ├── NumRefl.hs │ ├── NumRefl1.hs │ ├── ORM.hs │ ├── OrdList.hs │ ├── Pair.hs │ ├── Pair0.hs │ ├── Pair00.hs │ ├── PairMeasure.hs │ ├── PairMeasure0.hs │ ├── Pargs.hs │ ├── Pargs1.hs │ ├── Partial_tycon.hs │ ├── Partialmeasure.hs │ ├── Permutation.hs │ ├── PersistentVector.hs │ ├── Ple1.hs │ ├── PointDist.hs │ ├── Poly0.hs │ ├── Poly1.hs │ ├── Poly2.hs │ ├── Poly2_degenerate.hs │ ├── Poly3.hs │ ├── Poly3a.hs │ ├── Poly4.hs │ ├── PolyBag.hs │ ├── PolySet.hs │ ├── Polyfun.hs │ ├── Polyqual.hs │ ├── PositivityCheck.hs │ ├── Poslist.hs │ ├── Poslist_dc.hs │ ├── Pragma0.hs │ ├── Pred.hs │ ├── PrimInt0.hs │ ├── Product.hs │ ├── Profcrasher.hs │ ├── PromotedDataCons.hs │ ├── Propability.hs │ ├── Propmeasure.hs │ ├── Propmeasure1.hs │ ├── QQTySig.hs │ ├── QQTySigTyVars.hs │ ├── QQTySyn.hs │ ├── QualTest.hs │ ├── RBTree.hs │ ├── RBTree_col_height.hs │ ├── RBTree_color.hs │ ├── RBTree_height.hs │ ├── RBTree_ord.hs │ ├── Range.hs │ ├── Range1.hs │ ├── RangeAdt.hs │ ├── ReWrite.hs │ ├── ReWrite10.hs │ ├── ReWrite2.hs │ ├── ReWrite3.hs │ ├── ReWrite4.hs │ ├── ReWrite5.hs │ ├── ReWrite6.hs │ ├── ReWrite7.hs │ ├── ReWrite8.hs │ ├── ReWrite9.hs │ ├── RealProps.hs │ ├── Rebind.hs │ ├── RecQSort.hs │ ├── RecQSort0.hs │ ├── RecSelector.hs │ ├── Rec_annot_go.hs │ ├── Record0.hs │ ├── Record1.hs │ ├── RecordSelectorError.hs │ ├── Recursion0.hs │ ├── Reduction.hs │ ├── RefinedADTs.hs │ ├── Reflect0.hs │ ├── ReflectAlias.hs │ ├── ReflectBooleanFunctions.hs │ ├── ReflectMutual.hs │ ├── RelativeComplete.hs │ ├── Repeat.hs │ ├── RepeatHigherOrder.hs │ ├── Resolve.hs │ ├── ResolveA.hs │ ├── ResolveALib.hs │ ├── ResolveB.hs │ ├── ResolveBLib.hs │ ├── ResolvePred.hs │ ├── Rest.hs │ ├── Risers.hs │ ├── Rta.hs │ ├── SafePartialFunctions.hs │ ├── Scanr.hs │ ├── SelfList.hs │ ├── SimplerNotation.hs │ ├── SimplifyTup00.hs │ ├── SinPosTest.hs │ ├── SingletonLists.hs │ ├── Solver.hs │ ├── Spec0.hs │ ├── SqrtPosTest.hs │ ├── StackClass.hs │ ├── StackMachine.hs │ ├── Stacks0.hs │ ├── State.hquals │ ├── State.hs │ ├── State00.hs │ ├── StateConstraints.hs │ ├── StateConstraints0.hs │ ├── StateConstraints00.hs │ ├── StateF00.hs │ ├── StateInvarint.hs │ ├── StateLib.hs │ ├── Streams.hs │ ├── StrictPair0.hs │ ├── StrictPair1.hs │ ├── String00.hs │ ├── StringLit.hs │ ├── Strings.hs │ ├── StructRec.hs │ ├── Sum.hs │ ├── T1013.hs │ ├── T1013A.hs │ ├── T1024.hs │ ├── T1025.hs │ ├── T1025a.hs │ ├── T1034.hs │ ├── T1045.hs │ ├── T1045.hs-boot │ ├── T1045a.hs │ ├── T1045aLib.hs │ ├── T1060.hs │ ├── T1065.hs │ ├── T1074.hs │ ├── T1085.hs │ ├── T1092.hs │ ├── T1095A.hs │ ├── T1095B.hs │ ├── T1095C.hs │ ├── T1100.hs │ ├── T1120A.hs │ ├── T1126.hs │ ├── T1126a.hs │ ├── T1198_1.hs │ ├── T1198_2.hs │ ├── T1198_3.hs │ ├── T1198_4.hs │ ├── T1220.hs │ ├── T1223.hs │ ├── T1267.hs │ ├── T1278.hs │ ├── T1278_2.hs │ ├── T1278_3.hs │ ├── T1286.hs │ ├── T1288.hs │ ├── T1289a.hs │ ├── T1302.hs │ ├── T1336.hs │ ├── T1363.hs │ ├── T1461.hs │ ├── T1498.hs │ ├── T1543.hs │ ├── T1544.hs │ ├── T1547.hs │ ├── T1548.hs │ ├── T1550.hs │ ├── T1555.hs │ ├── T1556.hs │ ├── T1560.hs │ ├── T1560B.hs │ ├── T1567.hs │ ├── T1568.hs │ ├── T1571.hs │ ├── T1577.hs │ ├── T1593.hs │ ├── T1595.hs │ ├── T1597.hs │ ├── T1603.hs │ ├── T1633.hs │ ├── T1634.hs │ ├── T1636.hs │ ├── T1642.hs │ ├── T1642A.hs │ ├── T1647.hs │ ├── T1649MeasuresDef.hs │ ├── T1649WorkTypes.hs │ ├── T1657.hs │ ├── T1660.hs │ ├── T1669.hs │ ├── T1670A.hs │ ├── T1670B.hs │ ├── T1697.hs │ ├── T1697A.hs │ ├── T1697C.hs │ ├── T1708.hs │ ├── T1709.hs │ ├── T1749.hs │ ├── T1761.hs │ ├── T1775.hs │ ├── T1812.hs │ ├── T1874.hs │ ├── T2091.hs │ ├── T2093.hs │ ├── T2096.hs │ ├── T2235.hs │ ├── T2237.hs │ ├── T2404.hs │ ├── T2535.hs │ ├── T2535A.hs │ ├── T385.hs │ ├── T531.hs │ ├── T595.hs │ ├── T595a.hs │ ├── T598.hs │ ├── T716.hs │ ├── T819.hs │ ├── T819A.hs │ ├── T820.hs │ ├── T866.hs │ ├── T914.hs │ ├── TagBinder.hs │ ├── Take.hs │ ├── Term.hs │ ├── Term0.hs │ ├── Termination.hs │ ├── TerminationNum.hs │ ├── TerminationNum0.hs │ ├── Test0.hs │ ├── Test00.hs │ ├── Test000.hs │ ├── Test00_int.hs │ ├── Test00_old.hs │ ├── Test00b.hs │ ├── Test00c.hs │ ├── Test1.hs │ ├── Test2.hs │ ├── Test761.hs │ ├── TestRec.hs │ ├── TokenType.hs │ ├── Top0.hs │ ├── TopLevel.hs │ ├── ToyMVar.hs │ ├── Trans.hs │ ├── TransTAG.hs │ ├── Transpose.hs │ ├── Tup0.hs │ ├── Tupparse.hs │ ├── TyExpr.hs │ ├── Tyclass0.hs │ ├── Tyfam0.hs │ ├── TypeAlias.hs │ ├── TypeLitNat.hs │ ├── TypeLitString.hs │ ├── Tyvar.hs │ ├── UnboxedTuples.hs │ ├── UnboxedTuplesAndTH.hs │ ├── UndecidedGuards.hs │ ├── Unusedtyvars.hs │ ├── Variance.hs │ ├── Variance2.hs │ ├── Vector00.hs │ ├── Vector1.hs │ ├── Vector1a.hs │ ├── Vector1b.hs │ ├── Vector2.hs │ ├── VerifiedNum.hs │ ├── WBL.hs │ ├── WBL0.hs │ ├── WhyLH.hs │ ├── Words.hs │ ├── Words1.hs │ ├── Wrap0.hs │ ├── Wrap1.hs │ ├── WrapUnWrap.hs │ ├── ZipSO.hs │ ├── ZipW.hs │ ├── ZipW1.hs │ ├── ZipW2.hs │ ├── Zipper.hs │ ├── Zipper0.hs │ ├── Zipper000.hs │ ├── listSet.hquals │ └── test000.hs.hquals ├── refined-classes │ ├── semigroup.hs │ ├── semigroup_desugared.hs │ └── semigroup_unsound.hs ├── reflect │ ├── neg │ │ ├── DoubleLit.hs │ │ ├── ReflString0.hs │ │ └── ReflString1.hs │ └── pos │ │ ├── DoubleLit.hs │ │ ├── QuotRemInt.hs │ │ ├── ReflString0.hs │ │ ├── ReflString1.hs │ │ └── T2405.hs ├── relational │ ├── neg │ │ ├── Abs.hs │ │ ├── ApSum.hs │ │ ├── ApSumAsync.hs │ │ ├── Axiom.hs │ │ ├── CaseOnRec.hs │ │ ├── CheckedImp.hs │ │ └── SndOrdPred.hs │ ├── pos │ │ ├── Abs.hs │ │ ├── AsynchCase.hs │ │ ├── Axiom.hs │ │ ├── CheckedImp.hs │ │ ├── Isort.hs │ │ ├── MapFusion.hs │ │ ├── MutRec.hs │ │ └── SndOrdPredNonRel.hs │ └── rtest ├── spec │ ├── neg │ │ └── Compose1.hs │ └── pos │ │ ├── BS1.hs │ │ ├── Compose.hs │ │ └── Compose1.hs ├── stack_driver │ └── driver.hs ├── strings │ ├── neg │ │ └── StringIndexingStep1.hs │ ├── pos │ │ ├── DivideAndQunquer.hs │ │ ├── ProvesLib.hs │ │ ├── StringIndexing.hs │ │ ├── StringIndexingStep1.hs │ │ ├── StringIndexingStep2.hs │ │ ├── StringIndexingStep3.hs │ │ └── StringLib.hs │ └── todo │ │ ├── Boyer_Moore.hs │ │ └── StringIndexing.hs ├── tasty │ ├── ErrorFilterReportTests.hs │ └── Main.hs ├── terminate │ ├── neg │ │ ├── AutoTerm.hs │ │ ├── Div.hs │ │ ├── Even.hs │ │ ├── Qsloop.hs │ │ ├── Rename.hs │ │ ├── Sum.hs │ │ ├── T1404_0.hs │ │ ├── T1404_1.hs │ │ ├── T1404_2.hs │ │ ├── T1404_3.hs │ │ ├── T745.hs │ │ ├── Term00.hs │ │ ├── TestRec.hs │ │ ├── Total00.hs │ │ ├── Total01.hs │ │ └── Total02.hs │ └── pos │ │ ├── Ackermann.hs │ │ ├── AutoTerm.hs │ │ ├── Div.hs │ │ ├── Lexicographic.hs │ │ ├── List00.hs │ │ ├── List00_local.hs │ │ ├── List00_str.hs │ │ ├── List01.hs │ │ ├── List02.hs │ │ ├── List03.hs │ │ ├── List04.hs │ │ ├── List04_local.hs │ │ ├── List05_local.hs │ │ ├── LocalTermExpr.hs │ │ ├── StructSecondArg.hs │ │ ├── Sum.hs │ │ ├── T1245.hs │ │ ├── T1396_0.hs │ │ ├── T1396_1.hs │ │ ├── T1403.hs │ │ └── Term00.hs ├── tests.cabal ├── tmp │ ├── Class2.hs │ ├── Class3.hs │ ├── LiquidR.hs │ ├── LiquidR2.hs │ ├── Mode.hs │ ├── T776.hs │ └── T777.hs ├── todo-rebare │ ├── DataKinds.hs │ ├── Inst01_UNSAFE.hs │ ├── NatClass.hs │ ├── Strata.hs │ ├── T1089b.hs │ ├── VerifiedMonoid_NEG.hs │ └── VerifiedMonoid_POS.hs ├── todo │ ├── 12-case-study-AVL.lhs │ ├── 2013-01-10-measuring-lists-I.lhs │ ├── AALib.hs │ ├── AVLTree.hs │ ├── AbsRef.hs │ ├── AbsRefNameClash.hs │ ├── Adt0.hs │ ├── AdtBin.hs │ ├── Aliases.hs │ ├── AmortizedQueue.hs │ ├── Append.hs │ ├── Append0.hs │ ├── ApplicativeMaybe0.hs │ ├── ApplicativeMaybe1.hs │ ├── Ast.hs │ ├── AxiomBug.hs │ ├── AxiomatizeLib.hs │ ├── BadArguments.hs │ ├── Box.hs │ ├── Braun.hs │ ├── CatMaybes.hs │ ├── CheckProofs.hs │ ├── Class1.hs │ ├── Class2.hs │ ├── Class3.hs │ ├── Class4Import.hs │ ├── Class4Lib.hs │ ├── ClassMeasureBAD.hs │ ├── ClassMeasureIdeal.hs │ ├── ClassMeasureOK.hs │ ├── ClassReflect.hs │ ├── CmpBug.hs │ ├── CountMonadMap.hs │ ├── DB0.hs │ ├── DBMovies0.hs │ ├── DerivingRead.hs │ ├── DiffCheck.hs │ ├── Eff0.hs │ ├── Eff1.hs │ ├── Eff2.hs │ ├── EffSTTLib.hs │ ├── Ensure.hs │ ├── EnumFromTo.hs │ ├── EquationalLib.hs │ ├── ExactGADT3.hs │ ├── ExactGADT5.hs │ ├── ExactGADT6.hs │ ├── FixCrash.hs │ ├── FldBug.hs │ ├── GhcListSort.hs │ ├── ImportBoundLib.hs │ ├── ImportReflected.hs │ ├── ImportedNumericInstances.hs │ ├── IncrLib.hs │ ├── InfiniteLists.hs │ ├── InfixClient.hs │ ├── InfixLib.hs │ ├── InlineMeasure.hs │ ├── IntInvariants.hs │ ├── Interpreter.hs │ ├── Intervals.hs │ ├── InvBug.hs │ ├── Invariants.hs │ ├── Invariants1.hs │ ├── Invariants2.hs │ ├── InvariantsTermination.hs │ ├── LambdaDeBruijn.hs │ ├── LambdaDeBruijn0.hs │ ├── LazyVar.hs │ ├── LetRecStack.hs │ ├── ListDataCons-Neg.hs │ ├── ListDataCons-Pos.hs │ ├── ListDataCons.hs │ ├── ListMem.hs │ ├── LocalRecursiveFuns.hs │ ├── LocalSpec1.hs │ ├── LocalSpecImport.hs │ ├── LocalSpecLib.hs │ ├── LocalSpecTyVar.hs │ ├── LocalTermExpr1.hs │ ├── Machine.hs │ ├── Map-strict.hs │ ├── Map-wierd.hs │ ├── MaybeReflect0Lib.hs │ ├── MaybeReflect1Lib.hs │ ├── Means.hs │ ├── Measure.hs │ ├── MeasureImport.hs │ ├── MissingAbsRefArgs.hs │ ├── NameClash.hs │ ├── NativeFixCrash.hs │ ├── NeuralNetwork.hs │ ├── NewType00.hs │ ├── NoInlines.hs │ ├── NoInstance.hs │ ├── NotesOnProductivityTest.hs │ ├── Parse.hs │ ├── Parse1.hs │ ├── PartialAbsApplication.hs │ ├── Plus.hs │ ├── PositivityCases.hs │ ├── QualifCheck.hs │ ├── RG.hs │ ├── Recursion.hs │ ├── Recursion1.hs │ ├── RedBlack.hs │ ├── RefinedData.hs │ ├── RefinedEquality.hs │ ├── ReflImp.hs │ ├── RegexpDerivative.hs │ ├── SMTDiverge.hs │ ├── SS.hs │ ├── SYB_Literals.hs │ ├── SearchTree.hs │ ├── SelfRefPredicates.hs │ ├── Signal.hs │ ├── SortedLists.lhs │ ├── StateConstraints.hs │ ├── Strings.hs │ ├── SubType.hs │ ├── SuperClassBounds.hs │ ├── T1037A.hs │ ├── T1037B.hs │ ├── T1037C.hs │ ├── T1089.hs │ ├── T1094_Lib.hs │ ├── T1109.hs │ ├── T1189.hs │ ├── T1278.1.hs │ ├── T1326A.hs │ ├── T1326B.hs │ ├── T1326C.hs │ ├── T1481.hs │ ├── T1549.hs │ ├── T1551.hs │ ├── T1555.hs │ ├── T1649.hs │ ├── T2076.hs │ ├── T658.hs │ ├── T765.hs │ ├── T770.hs │ ├── T771.hs │ ├── T772.hs │ ├── T776.hs │ ├── T781.hs │ ├── T791.hs │ ├── T791a.hs │ ├── T870.hs │ ├── T995.hs │ ├── T996.hs │ ├── T997.hs │ ├── T997a.hs │ ├── Theorems0.hs │ ├── Times.hs │ ├── TreeMap.hs │ ├── TreeMap0.hs │ ├── TypeError.hs │ ├── TypeFun.hs │ ├── TypeSynonyms.hs │ ├── UnboundSigs.hs │ ├── UnboundVarInAssume1.hs │ ├── UnfoldDataCons.hs │ ├── Unsound.hs │ ├── UnsoundMeasure.hs │ ├── Until.hs │ ├── UseBound.hs │ ├── VerifiedNum.hs │ ├── WBL-crash.hs │ ├── When.hs │ ├── absref-crash0.hs │ ├── aliasConst.hs │ ├── aliasError.hs │ ├── appCheck.hs │ ├── apply.hs │ ├── baderror.hs │ ├── baffled.hs │ ├── binsearch.hs │ ├── boolparse.hs │ ├── cases.hs │ ├── cont.hs │ ├── contra.hs │ ├── decr.hs │ ├── doubleError.hs │ ├── dyn.hs │ ├── empty-or.hs │ ├── err0.hs │ ├── err1.hs │ ├── err10.hs │ ├── err11.hs │ ├── err12.hs │ ├── err13.hs │ ├── err2.hs │ ├── err3.hs │ ├── err4.hs │ ├── err5.hs │ ├── err6.hs │ ├── err7.hs │ ├── err8.hs │ ├── err9.hs │ ├── existsAbs.hs │ ├── false.hs │ ├── fft.hs │ ├── fio.hs │ ├── fixme.lhs │ ├── funrec.hs │ ├── gadtEval.hs │ ├── if.hs │ ├── inccheck0.hs │ ├── intP.hs │ ├── kmpMonad.hs │ ├── liftbug.hs │ ├── linspace-crash.hs │ ├── linspace.hs │ ├── list-screen.hs │ ├── lit01.hs │ ├── mapreduce.hs │ ├── maps.hs │ ├── maybe0.hs │ ├── maybe0000.hs │ ├── maybe4.hs │ ├── measbug.hs │ ├── measfield.hs │ ├── overload.hs │ ├── partialmeasureOld.hs │ ├── ptr.hs │ ├── ptr2.hs │ ├── ptr3.hs │ ├── read.hs │ ├── satsolver.hs │ ├── satsolver0.hs │ ├── splash-total.hs │ ├── splash-vector.hs │ ├── stacks1.hs │ ├── state.hs │ ├── tdb.hs │ ├── trans.lhs │ ├── tupleplus.hs │ ├── txrec0.hs │ └── vector2.hs └── typeclasses │ └── pos │ ├── All.hs │ ├── Lemma.hs │ ├── Lib.hs │ ├── PNat.hs │ └── SemigroupLib.hs └── typeclass-tests ├── Data ├── All.hs ├── All │ └── Semigroup.hs ├── Any.hs ├── Any │ └── Semigroup.hs ├── Dual.hs ├── Dual │ └── Semigroup.hs ├── Either.hs ├── Either │ └── Functor.hs ├── Endo.hs ├── Endo │ └── Semigroup.hs ├── Foldable │ └── Classes.hs ├── Function.hs ├── Functor.hs ├── Functor │ ├── Classes.hs │ ├── Const.hs │ ├── Const │ │ ├── Foldable.hs │ │ └── Functor.hs │ ├── Identity.hs │ ├── Identity │ │ ├── Foldable.hs │ │ ├── Functor.hs │ │ └── Semigroup.hs │ ├── State.hs │ └── State │ │ └── Functor.hs ├── Lattice.hs ├── List.hs ├── List │ ├── Foldable.hs │ ├── Functor.hs │ ├── NonEmpty.hs │ └── Semigroup.hs ├── Maybe.hs ├── Maybe │ ├── Foldable.hs │ ├── Functor.hs │ └── Semigroup.hs ├── Num │ └── Semigroup.hs ├── PNat.hs ├── PNat │ └── Semigroup.hs ├── Proxy.hs ├── Reader.hs ├── Reader │ └── Functor.hs ├── Semigroup │ └── Classes.hs ├── Successors.hs └── Successors │ └── Functor.hs └── Liquid └── ProofCombinators.hs /.ghci: -------------------------------------------------------------------------------- 1 | :set -isrc 2 | :set prompt "\ESC[34mλ> \ESC[m" 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "liquid-fixpoint"] 2 | path = liquid-fixpoint 3 | url = https://github.com/ucsd-progsys/liquid-fixpoint.git -------------------------------------------------------------------------------- /Setup.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Language.Haskell.Liquid.Cabal (liquidHaskellMain) 4 | 5 | main :: IO () 6 | main = liquidHaskellMain 7 | -------------------------------------------------------------------------------- /benchmark-timings/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Revision history for benchmark-timings 2 | 3 | ## 0.1.0.0 -- YYYY-mm-dd 4 | 5 | * First version. Released on an unsuspecting world. 6 | -------------------------------------------------------------------------------- /benchmarks/icfp15/README.md: -------------------------------------------------------------------------------- 1 | # Examples from _Bounded Refinement Types_ 2 | 3 | The source code of the examples from Vazou–Bakst–Jhala's ICFP'15 paper is now 4 | in [tests/benchmarks/icfp15](../../tests/benchmarks/icfp15). 5 | -------------------------------------------------------------------------------- /cleanup: -------------------------------------------------------------------------------- 1 | rm -rf **/.liquid . 2 | # find . | grep -E -e '\.(smt2|bak|json|css|md|hi|out|fqout|fq|o|err|annot|log|html|cgi|liquid)$' | xargs rm -rf 3 | -------------------------------------------------------------------------------- /docs/blog/todo/text-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/blog/todo/text-layout.png -------------------------------------------------------------------------------- /docs/blog/todo/text-lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/blog/todo/text-lifecycle.png -------------------------------------------------------------------------------- /docs/language/main.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/language/main.pdf -------------------------------------------------------------------------------- /docs/mkDocs/docs/blogposts/.pages: -------------------------------------------------------------------------------- 1 | 2 | # This file forces mkdocs-awesome-pages to show new blogposts first 3 | 4 | order: desc 5 | -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/angles.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/angles.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/ansel-adams-la-jolla.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/ansel-adams-la-jolla.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/beach.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/dafny-leftpad-spec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/dafny-leftpad-spec.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/emacs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/emacs.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/escher-helix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/escher-helix.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/falling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/falling.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/favicon.ico -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/garter-snake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/garter-snake.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/geisel2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/geisel2.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/hillel-tweet-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/hillel-tweet-1.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/hillel-tweet-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/hillel-tweet-2.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/ico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/ico.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/la-jolla-shores-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/la-jolla-shores-2.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/la-jolla-shores.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/la-jolla-shores.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/leftpad-spec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/leftpad-spec.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/lem_intersect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/lem_intersect.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/lem_sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/lem_sub.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/lem_union.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/lem_union.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/logo-header.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/logo.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/odometer-rollover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/odometer-rollover.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/out.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/plugin-emacs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/plugin-emacs.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/plugin-ghcid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/plugin-ghcid.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/plugin-vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/plugin-vim.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/plugin-vscode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/plugin-vscode.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/preloader.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/queue-lists.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/queue-lists.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/queue-rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/queue-rotate.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/queue.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/regehr-tweet-quantifiers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/regehr-tweet-quantifiers.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/ribbon.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/sea.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/sea.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-append.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-append.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-assocpf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-assocpf.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-assocpf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-assocpf.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-assocthm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-assocthm.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-assocthm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-assocthm.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-A.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-A.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-A.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-B.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-B.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-B.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-C.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-C.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-C.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-D.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-D.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-binarySearch-D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-binarySearch-D.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-dotproduct.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-dotproduct.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-dotproduct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-dotproduct.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-fib.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-fib.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-fib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-fib.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-head.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-head.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-head.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-insertsort.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-insertsort.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-insertsort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-insertsort.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-merge.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-merge.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-merge.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-unsafetake.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-unsafetake.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-unstutter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-unstutter.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-unstutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-unstutter.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-ups.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-ups.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-ups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-ups.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-vectorsum.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-vectorsum.gif -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/splash-vectorsum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/splash-vectorsum.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/text-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/text-layout.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/text-lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/text-lifecycle.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/white.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/white.jpg -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_1_1.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_1_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_1_2.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_1_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_1_3.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_2.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_2_1.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_2_2.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_3_1.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_3_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_3_2.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_3_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_3_3.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/static/img/why_types_3_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/mkDocs/docs/static/img/why_types_3_4.png -------------------------------------------------------------------------------- /docs/mkDocs/docs/tags.html: -------------------------------------------------------------------------------- 1 | 2 | This file gets overwritten by the plugin which generates the "tags" page. 3 | It's just here as a workaround to prevent `mkdocs build -s` from complaining. 4 | -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/_support/reveal.js/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/slides/BOS14/_support/reveal.js/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/_support/reveal.js/test/examples/assets/image2.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/RedBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/RedBlack.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/RobertMorris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/RobertMorris.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/bytestring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/bytestring.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/code-spec-indiv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/code-spec-indiv.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/code-spec-total.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/code-spec-total.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/firstbug-crop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/firstbug-crop.jpg -------------------------------------------------------------------------------- /docs/slides/BOS14/img/firstbug-crop2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/firstbug-crop2.jpg -------------------------------------------------------------------------------- /docs/slides/BOS14/img/firstbug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/firstbug.jpg -------------------------------------------------------------------------------- /docs/slides/BOS14/img/george-orwell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/george-orwell.jpg -------------------------------------------------------------------------------- /docs/slides/BOS14/img/gotofail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/gotofail.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/heartbleed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/heartbleed.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/minindex-classic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/minindex-classic.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/minindex-invariant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/minindex-invariant.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/minindex-modern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/minindex-modern.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/minindex-reduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/minindex-reduce.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/overflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/overflow.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/rbtree-bad1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/rbtree-bad1.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/rbtree-bad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/rbtree-bad2.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/rbtree-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/rbtree-ok.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/tension0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/tension0.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/tension1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/tension1.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/tension2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/tension2.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/tension3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/tension3.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/termination-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/termination-results.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/thoughtcrime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/thoughtcrime.png -------------------------------------------------------------------------------- /docs/slides/BOS14/img/ungood-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/BOS14/img/ungood-small.jpg -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/_support/reveal.js/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/slides/ETH14/_support/reveal.js/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/_support/reveal.js/test/examples/assets/image2.png -------------------------------------------------------------------------------- /docs/slides/ETH14/cleanup: -------------------------------------------------------------------------------- 1 | find . | grep -E -e '\.(smt2|bak|json|css|md|hi|out|fqout|fq|o|err|annot|log|html|cgi|liquid)$' | xargs rm -rf 2 | -------------------------------------------------------------------------------- /docs/slides/ETH14/img/RedBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/RedBlack.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/minindex-classic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/minindex-classic.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/minindex-invariant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/minindex-invariant.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/minindex-modern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/minindex-modern.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/minindex-reduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/minindex-reduce.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/tension0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/tension0.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/tension1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/tension1.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/tension2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/tension2.png -------------------------------------------------------------------------------- /docs/slides/ETH14/img/tension3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/ETH14/img/tension3.png -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/.template2.reveal.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/.template2.reveal.swp -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/reveal.js/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/slides/IHP14/_support/reveal.js/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/_support/reveal.js/test/examples/assets/image2.png -------------------------------------------------------------------------------- /docs/slides/IHP14/cleanup: -------------------------------------------------------------------------------- 1 | find . | grep -E -e '\.(smt2|bak|json|css|md|hi|out|fqout|fq|o|err|annot|log|html|cgi|liquid)$' | xargs rm -rf 2 | -------------------------------------------------------------------------------- /docs/slides/IHP14/img/RedBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/img/RedBlack.png -------------------------------------------------------------------------------- /docs/slides/IHP14/img/tension0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/img/tension0.png -------------------------------------------------------------------------------- /docs/slides/IHP14/img/tension1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/img/tension1.png -------------------------------------------------------------------------------- /docs/slides/IHP14/img/tension2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/img/tension2.png -------------------------------------------------------------------------------- /docs/slides/IHP14/img/tension3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/IHP14/img/tension3.png -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/js/.reveal.js.swo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/js/.reveal.js.swo -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/js/.reveal.js.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/js/.reveal.js.swp -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/js/.reveal.min.js.swo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/js/.reveal.min.js.swo -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/js/.reveal.min.js.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/js/.reveal.min.js.swp -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/lib/font/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/lib/font/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/lib/font/PT_Sans-Narrow-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/lib/font/PT_Sans-Narrow-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/flops14/_support/reveal/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/_support/reveal/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/flops14/cleanup: -------------------------------------------------------------------------------- 1 | find . | grep -E -e '\.(smt2|bak|json|css|md|hi|out|fqout|fq|o|err|annot|log|html|cgi|liquid)$' | xargs rm -rf 2 | -------------------------------------------------------------------------------- /docs/slides/flops14/img/RedBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/img/RedBlack.png -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .svn 3 | log/*.log 4 | tmp/** 5 | node_modules/ 6 | .sass-cache -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/reveal.js/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/reveal.js/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/slides/flops14/reveal.js/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/flops14/reveal.js/test/examples/assets/image2.png -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Mono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Mono-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Narrow-Web-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Narrow-Web-Bold.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Narrow-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Narrow-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Web-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Web-Bold.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Web-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Web-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Web-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Web-Italic.ttf -------------------------------------------------------------------------------- /docs/slides/niki/fonts/PT_Sans-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/fonts/PT_Sans-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/benchmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/benchmarks.png -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Mono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Mono-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Narrow-Web-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Narrow-Web-Bold.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Narrow-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Narrow-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Web-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Web-Bold.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Web-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Web-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Web-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Web-Italic.ttf -------------------------------------------------------------------------------- /docs/slides/niki/html/fonts/PT_Sans-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/niki/html/fonts/PT_Sans-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/js/.reveal.js.swo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/js/.reveal.js.swo -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/js/.reveal.js.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/js/.reveal.js.swp -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/js/.reveal.min.js.swo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/js/.reveal.min.js.swo -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/js/.reveal.min.js.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/js/.reveal.min.js.swp -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/lib/font/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/lib/font/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/lib/font/PT_Sans-Narrow-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/lib/font/PT_Sans-Narrow-Web-Regular.ttf -------------------------------------------------------------------------------- /docs/slides/plpv14/_support/reveal/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/_support/reveal/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/plpv14/lhs/.01_SimpleRefinements.lhs.swn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/lhs/.01_SimpleRefinements.lhs.swn -------------------------------------------------------------------------------- /docs/slides/plpv14/pdcreveal.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/pdcreveal.tgz -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .svn 3 | log/*.log 4 | tmp/** 5 | node_modules/ 6 | .sass-cache -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/reveal.js/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/reveal.js/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/slides/plpv14/reveal.js/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/docs/slides/plpv14/reveal.js/test/examples/assets/image2.png -------------------------------------------------------------------------------- /files/README.md: -------------------------------------------------------------------------------- 1 | This folder is here only to offer the `main.css` file that `ghc-timings` 2 | expects when running. `ghc-timings` is used to collect timing measures. 3 | -------------------------------------------------------------------------------- /liquid-parallel/Setup.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Language.Haskell.Liquid.Cabal (liquidHaskellMain) 4 | 5 | main :: IO () 6 | main = liquidHaskellMain 7 | -------------------------------------------------------------------------------- /liquid-prelude/Setup.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Language.Haskell.Liquid.Cabal (liquidHaskellMain) 4 | 5 | main :: IO () 6 | main = liquidHaskellMain 7 | -------------------------------------------------------------------------------- /liquid-vector/Setup.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Language.Haskell.Liquid.Cabal (liquidHaskellMain) 4 | 5 | main :: IO () 6 | main = liquidHaskellMain 7 | -------------------------------------------------------------------------------- /liquidhaskell-boot/src/Language/Haskell/Liquid/Types/Annotations.hs: -------------------------------------------------------------------------------- 1 | module Language.Haskell.Liquid.Types.Annotations ( 2 | ) where 3 | 4 | import Data.Data 5 | import Data.Typeable 6 | 7 | import Language.Haskell.TH.Syntax 8 | 9 | -------------------------------------------------------------------------------- /nixpkgs.nix: -------------------------------------------------------------------------------- 1 | let 2 | rev = "0cbe9f69c234a7700596e943bfae7ef27a31b735"; 3 | sha256 = "15znwycfmbdcccqgld97x6375s5j028v6zmgvvr811dbny7cgy4c"; 4 | in 5 | import (fetchTarball { 6 | inherit sha256; 7 | url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz"; 8 | }) 9 | -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/resources/icon.png -------------------------------------------------------------------------------- /resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/resources/logo.png -------------------------------------------------------------------------------- /src/Data/Word_LHAssumptions.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -fplugin=LiquidHaskellBoot #-} 2 | module Data.Word_LHAssumptions where 3 | 4 | import GHC.Word_LHAssumptions() 5 | -------------------------------------------------------------------------------- /src/GHC/Maybe_LHAssumptions.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -fplugin=LiquidHaskellBoot #-} 2 | module GHC.Maybe_LHAssumptions where 3 | 4 | {-@ 5 | data Maybe a = Nothing | Just a 6 | @-} 7 | -------------------------------------------------------------------------------- /src/Liquid/Prelude/Real_LHAssumptions.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -fplugin=LiquidHaskellBoot #-} 2 | {-# OPTIONS_GHC -Wno-unused-imports #-} 3 | module Liquid.Prelude.Real_LHAssumptions where 4 | 5 | {-@ 6 | assume * :: Num a => x:a -> y:a -> {v:a | v = x * y} 7 | @-} 8 | -------------------------------------------------------------------------------- /src/LiquidHaskell.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -Wno-missing-signatures #-} 2 | module LiquidHaskell (plugin, lq) where 3 | 4 | import LiquidHaskellBoot(plugin, lq) 5 | -------------------------------------------------------------------------------- /tests/absref/pos/AbsRef00.hs: -------------------------------------------------------------------------------- 1 | 2 | -- TAG: absref 3 | 4 | module AbsRef00 where 5 | 6 | boo :: (Int, Int) 7 | boo = (10, 20) 8 | -------------------------------------------------------------------------------- /tests/absref/pos/Deppair0.hs: -------------------------------------------------------------------------------- 1 | module Deppair0 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | incr x = x + 1 6 | 7 | baz x = (x, incr x) 8 | 9 | prop :: Bool 10 | prop = chk $ baz n 11 | where n = choose 100 12 | 13 | chk (x, y) = liquidAssertB (x < y) 14 | -------------------------------------------------------------------------------- /tests/absref/pos/State00.hs: -------------------------------------------------------------------------------- 1 | module State00 () where 2 | 3 | data ST s = S { act :: s -> s } 4 | 5 | {-@ data ST s

Bool> = S { act :: (s

-> s

) } @-} 6 | 7 | {-@ foo :: forall Bool>. ST sip @-} 8 | foo :: ST s 9 | foo = S (\s -> s) 10 | -------------------------------------------------------------------------------- /tests/app/Main.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | main :: IO () 4 | main = putStrLn "Hello, Haskell!" 5 | -------------------------------------------------------------------------------- /tests/basic/neg/Inc02.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Inc02 where 3 | 4 | {-@ inc :: {v:Int | v >= 0} -> {v:Int | v >= 0} @-} 5 | inc :: Int -> Int 6 | inc x = x - 1 7 | -------------------------------------------------------------------------------- /tests/basic/neg/Inc03.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Inc03 where 3 | 4 | {-@ type NN = {v:Int | v <= 0 } @-} 5 | 6 | {-@ inc :: NN -> NN @-} 7 | inc :: Int -> Int 8 | inc x = x + 1 9 | -------------------------------------------------------------------------------- /tests/basic/neg/Inc04.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Inc04 where 3 | 4 | import Inc04Lib 5 | 6 | -- Check that the alias and SIG for down are getting imported 7 | {-@ test1 :: NN -> NN @-} 8 | test1 :: Int -> Int 9 | test1 x = down x 10 | 11 | -------------------------------------------------------------------------------- /tests/basic/neg/List00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module List00 where 3 | 4 | data List a = Emp 5 | 6 | {-@ foo :: List a -> { v : Int | 200 <= v } @-} 7 | foo :: List a -> Int 8 | foo Emp = 100 9 | -------------------------------------------------------------------------------- /tests/basic/neg/Poly00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Poly00 where 3 | 4 | {-@ zoo :: x:a -> {v:a | v /= x} @-} 5 | zoo :: goober -> goober 6 | zoo x = x 7 | -------------------------------------------------------------------------------- /tests/basic/pos/Alias00.hs: -------------------------------------------------------------------------------- 1 | module Alias00 where 2 | 3 | {-@ type RealUp Thing = {v:Int | Thing < v} @-} 4 | 5 | {-@ type Up Paw = RealUp Paw @-} 6 | 7 | {-@ inc :: x:Int -> (Up x) @-} 8 | inc :: Int -> Int 9 | inc x = x + 1 10 | -------------------------------------------------------------------------------- /tests/basic/pos/Alias01.hs: -------------------------------------------------------------------------------- 1 | module Alias01 where 2 | 3 | {-@ predicate LessThan Thing V = Thing < V @-} 4 | 5 | {-@ inc :: x:Int -> {v:Int | LessThan x v} @-} 6 | inc :: Int -> Int 7 | inc x = x + 1 8 | -------------------------------------------------------------------------------- /tests/basic/pos/Alias02.hs: -------------------------------------------------------------------------------- 1 | module Alias02 where 2 | 3 | {-@ predicate Less X Y = X < Y @-} 4 | 5 | {-@ inc :: x:Int -> {v:Int | Less x v} @-} 6 | inc :: Int -> Int 7 | inc x = x + 1 8 | -------------------------------------------------------------------------------- /tests/basic/pos/Alias03.hs: -------------------------------------------------------------------------------- 1 | module Alias03 where 2 | 3 | {-@ type Less X = {v:Int | X < v} @-} 4 | {-@ data Zoo = Z { zA :: Int, zB :: Less zA } @-} 5 | 6 | data Zoo = Z { zA :: Int, zB :: Int } 7 | 8 | test :: Int -> Zoo 9 | test x = Z x (x + 1) 10 | 11 | -------------------------------------------------------------------------------- /tests/basic/pos/Alias04.hs: -------------------------------------------------------------------------------- 1 | module Alias04 where 2 | 3 | {-@ predicate Less X Y = X < Y @-} 4 | 5 | {-@ data Zoo = Z { zA :: Int, zB :: {v:Int | Less zA v} } @-} 6 | 7 | data Zoo = Z { zA :: Int, zB :: Int } 8 | 9 | test :: Int -> Zoo 10 | test x = Z x (x + 1) 11 | 12 | -------------------------------------------------------------------------------- /tests/basic/pos/AssmRefl02A.hs: -------------------------------------------------------------------------------- 1 | -- | Assume reflect import test 2 | {-@ LIQUID "--reflection" @-} 3 | {-@ LIQUID "--ple" @-} 4 | 5 | module AssmRefl02A where 6 | 7 | foobar :: Int -> Bool 8 | foobar n = n `mod` 2 <= 4 -------------------------------------------------------------------------------- /tests/basic/pos/Float.hs: -------------------------------------------------------------------------------- 1 | module Float where 2 | 3 | 4 | {-@ roxette :: {v:Float | v > 0} @-} 5 | roxette :: Float 6 | roxette = 0.014 7 | 8 | cmp :: Bool 9 | cmp = roxette > 0 10 | -------------------------------------------------------------------------------- /tests/basic/pos/Inc00.hs: -------------------------------------------------------------------------------- 1 | -- | test if basic LH pipeline is functioning 2 | 3 | module Inc00 where 4 | 5 | inc :: Int -> Int 6 | inc x = x + 1 7 | -------------------------------------------------------------------------------- /tests/basic/pos/Inc02.hs: -------------------------------------------------------------------------------- 1 | module Inc02 where 2 | 3 | {-@ inc :: {v:Int | v >= 0} -> {v:Int | v >= 0} @-} 4 | inc :: Int -> Int 5 | inc x = x + 1 6 | -------------------------------------------------------------------------------- /tests/basic/pos/Inc03.hs: -------------------------------------------------------------------------------- 1 | module Inc03 where 2 | 3 | import Inc03Lib 4 | 5 | {-@ incr2 :: NN -> NN @-} 6 | incr2 :: Int -> Int 7 | incr2 x = incr (incr x) 8 | 9 | {-@ incr3 :: NN -> NN @-} 10 | incr3 :: Int -> Int 11 | incr3 = incr . incr . incr 12 | -------------------------------------------------------------------------------- /tests/basic/pos/Inc03Lib.hs: -------------------------------------------------------------------------------- 1 | module Inc03Lib where 2 | 3 | {-@ type NN = {v:Int | 0 <= v} @-} 4 | 5 | {-@ incr :: NN -> NN @-} 6 | incr :: Int -> Int 7 | incr x = x + 1 8 | -------------------------------------------------------------------------------- /tests/basic/pos/Inc04.hs: -------------------------------------------------------------------------------- 1 | module Inc04 where 2 | 3 | {-@ inc :: Nat -> Nat @-} 4 | inc :: Int -> Int 5 | inc x = x + 1 6 | -------------------------------------------------------------------------------- /tests/basic/pos/Infer00.hs: -------------------------------------------------------------------------------- 1 | module Infer00 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | myId :: Int -> Int 6 | myId x = x 7 | 8 | prop n = liquidAssertB (n == m) 9 | where 10 | m = myId n 11 | 12 | -------------------------------------------------------------------------------- /tests/basic/pos/List00.hs: -------------------------------------------------------------------------------- 1 | module List00 where 2 | 3 | data List a = Emp 4 | 5 | {-@ foo :: List a -> { v : Int | 20 <= v } @-} 6 | foo :: List a -> Int 7 | foo Emp = 100 8 | -------------------------------------------------------------------------------- /tests/basic/pos/MeasureOverlapA.hs: -------------------------------------------------------------------------------- 1 | -- | See "MeasureOverlapC". 2 | module MeasureOverlapA where 3 | 4 | {-@ 5 | measure foo :: Bool -> Bool 6 | foo False = False 7 | foo True = True 8 | @-} 9 | -------------------------------------------------------------------------------- /tests/basic/pos/MeasureOverlapB.hs: -------------------------------------------------------------------------------- 1 | -- | See "MeasureOverlapC". 2 | module MeasureOverlapB where 3 | 4 | import MeasureOverlapA 5 | 6 | {-@ 7 | measure foo :: Bool -> Bool 8 | foo False = True 9 | foo True = False 10 | 11 | @-} 12 | 13 | -------------------------------------------------------------------------------- /tests/basic/pos/MeasureOverlapD.hs: -------------------------------------------------------------------------------- 1 | -- | See "MeasureOverlapE". 2 | module MeasureOverlapD where 3 | 4 | import MeasureOverlapA 5 | import MeasureOverlapB 6 | 7 | -------------------------------------------------------------------------------- /tests/basic/pos/OpaqueRefl01.hs: -------------------------------------------------------------------------------- 1 | -- | test if basic opaque reflection is functioning 2 | 3 | {-@ LIQUID "--reflection" @-} 4 | 5 | module OpaqueRefl01 (inc) where 6 | 7 | c :: Int 8 | c = 15 9 | 10 | {-@ reflect inc @-} 11 | inc :: Ord a => a -> a -> Int 12 | inc a b = 9 + c -------------------------------------------------------------------------------- /tests/basic/pos/OpaqueRefl03C.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module OpaqueRefl03C where 4 | 5 | import OpaqueRefl03D (foobar) 6 | 7 | {-@ reflect myfoobar1 @-} 8 | myfoobar1 :: Int -> Int -> Int 9 | myfoobar1 n m = foobar n m -------------------------------------------------------------------------------- /tests/basic/pos/OpaqueRefl03D.hs: -------------------------------------------------------------------------------- 1 | 2 | module OpaqueRefl03D where 3 | 4 | foobar :: Int -> Int -> Int 5 | foobar n m = n + m -------------------------------------------------------------------------------- /tests/basic/pos/OpaqueRefl04.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module OpaqueRefl04 where 4 | 5 | {-@ reflect keepEvens @-} 6 | keepEvens :: [Int] -> [Int] 7 | keepEvens = filter even 8 | -------------------------------------------------------------------------------- /tests/basic/pos/Poly00.hs: -------------------------------------------------------------------------------- 1 | module Poly00 where 2 | 3 | {-@ zoo :: x:a -> {v:a | v = x} @-} 4 | zoo :: goober -> goober 5 | zoo x = x 6 | -------------------------------------------------------------------------------- /tests/basic/pos/ReflExt05A.hs: -------------------------------------------------------------------------------- 1 | -- | some fruity test to check reflection of foreign functions with data selectors 2 | 3 | {-@ LIQUID "--reflection" @-} 4 | 5 | module ReflExt05A where 6 | 7 | import ReflExt05B 8 | 9 | {-@ reflect calories @-} 10 | -------------------------------------------------------------------------------- /tests/basic/pos/ReflExt08A.hs: -------------------------------------------------------------------------------- 1 | -- | test reflection of a function that is using a datatype, but not in case split alternatives 2 | 3 | {-@ LIQUID "--reflection" @-} 4 | 5 | module ReflExt08A where 6 | 7 | import ReflExt08B 8 | 9 | {-@ reflect fromCal @-} 10 | -------------------------------------------------------------------------------- /tests/basic/pos/SkipDerived00.hs: -------------------------------------------------------------------------------- 1 | module SkipDerived00 where 2 | 3 | data WeekDay = Mon | Tue deriving (Read) 4 | -------------------------------------------------------------------------------- /tests/benchmarks/NOTES.txt: -------------------------------------------------------------------------------- 1 | Changes: 2 | 3 | [base/Data/List.hs] 4 | findIndices: Change Int# to Int 5 | -------------------------------------------------------------------------------- /tests/benchmarks/base-4.5.1.0/GHC/IO.hs-boot: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE Unsafe #-} 2 | {-# LANGUAGE NoImplicitPrelude #-} 3 | 4 | module GHC.IO where 5 | 6 | import GHC.Types 7 | 8 | failIO :: [Char] -> IO a 9 | 10 | -------------------------------------------------------------------------------- /tests/benchmarks/base-4.5.1.0/GHC/IO/Handle.hs-boot: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE Trustworthy #-} 2 | {-# LANGUAGE NoImplicitPrelude #-} 3 | 4 | module GHC.IO.Handle where 5 | 6 | import GHC.IO 7 | import GHC.IO.Handle.Types 8 | 9 | hFlush :: Handle -> IO () 10 | 11 | -------------------------------------------------------------------------------- /tests/benchmarks/base-4.5.1.0/Setup.hs: -------------------------------------------------------------------------------- 1 | module Main (main) where 2 | 3 | import Distribution.Simple 4 | 5 | main :: IO () 6 | main = defaultMainWithHooks defaultUserHooks 7 | -------------------------------------------------------------------------------- /tests/benchmarks/base-4.5.1.0/System/Posix/Internals.hs-boot: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE Trustworthy #-} 2 | {-# LANGUAGE NoImplicitPrelude #-} 3 | module System.Posix.Internals where 4 | 5 | import GHC.IO 6 | import GHC.Base 7 | 8 | puts :: String -> IO () 9 | 10 | -------------------------------------------------------------------------------- /tests/benchmarks/base-4.5.1.0/cbits/selectUtils.c: -------------------------------------------------------------------------------- 1 | 2 | #include "HsBase.h" 3 | void hsFD_ZERO(fd_set *fds) { FD_ZERO(fds); } 4 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/Data/StrictPair.hs: -------------------------------------------------------------------------------- 1 | module Data.StrictPair (strictPair) where 2 | 3 | -- | Evaluate both argument to WHNF and create a pair of the result. 4 | strictPair :: a -> b -> (a, b) 5 | strictPair x y = x `seq` y `seq` (x, y) 6 | {-# INLINE strictPair #-} 7 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/Setup.hs: -------------------------------------------------------------------------------- 1 | module Main (main) where 2 | 3 | import Distribution.Simple 4 | 5 | main :: IO () 6 | main = defaultMain 7 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/benchmarks/LookupGE/Makefile: -------------------------------------------------------------------------------- 1 | TOP = .. 2 | 3 | include ../Makefile 4 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/benchmarks/SetOperations/Makefile: -------------------------------------------------------------------------------- 1 | TOP = .. 2 | 3 | include ../Makefile 4 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/benchmarks/SetOperations/SetOperations-IntSet.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Data.IntSet as C 4 | import SetOperations 5 | 6 | main = benchmark fromList True [("union", C.union), ("difference", C.difference), ("intersection", C.intersection)] 7 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/benchmarks/SetOperations/SetOperations-Set.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Data.Set as C 4 | import SetOperations 5 | 6 | main = benchmark fromList True [("union", C.union), ("difference", C.difference), ("intersection", C.intersection)] 7 | -------------------------------------------------------------------------------- /tests/benchmarks/containers-0.5.0.0/benchmarks/bench-cmp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./bench-cmp.pl "$@" | column -nts\; | less -SR 4 | -------------------------------------------------------------------------------- /tests/benchmarks/cse230/README.md: -------------------------------------------------------------------------------- 1 | Retrieved from: https://github.com/ucsd-progsys/230-wi19-web/ 2 | -------------------------------------------------------------------------------- /tests/benchmarks/esop2013-submission/Base.hquals: -------------------------------------------------------------------------------- 1 | qualif Bound1(v: Data.Map.Base.Map k a , x : k): ((isBin v) => (x < (key v))) 2 | qualif Bound2(v: Data.Map.Base.Map k a , x : k): ((isBin v) => (x > (key v))) 3 | 4 | -------------------------------------------------------------------------------- /tests/benchmarks/hmatrix-0.15.0.1/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Alberto Ruiz 2006-2007 2 | GPL license 3 | -------------------------------------------------------------------------------- /tests/benchmarks/hmatrix-0.15.0.1/examples/data.txt: -------------------------------------------------------------------------------- 1 | 0.9 1.1 2 | 2.1 3.9 3 | 3.1 9.2 4 | 4.0 51.8 5 | 4.9 25.3 6 | 6.1 35.7 7 | 7.0 49.4 8 | 7.9 3.6 9 | 9.1 81.5 10 | 10.2 99.5 -------------------------------------------------------------------------------- /tests/benchmarks/hmatrix-0.15.0.1/examples/deriv.hs: -------------------------------------------------------------------------------- 1 | -- Numerical differentiation 2 | 3 | import Numeric.GSL 4 | 5 | d :: (Double -> Double) -> (Double -> Double) 6 | d f x = fst $ derivCentral 0.01 f x 7 | 8 | main = print $ d (\x-> x * d (\y-> x+y) 1) 1 9 | -------------------------------------------------------------------------------- /tests/benchmarks/kmeans-0.1.2/Setup.lhs: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env runhaskell 2 | 3 | > import Distribution.Simple 4 | > main = defaultMain 5 | -------------------------------------------------------------------------------- /tests/benchmarks/llrbtree-0.1.1/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /tests/benchmarks/originals/base-4.5.1.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/base-4.5.1.0.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/bytestring-0.9.0.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/bytestring-0.9.0.2.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/containers-0.5.0.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/containers-0.5.0.0.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/ghc-7.4.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/ghc-7.4.1.tgz -------------------------------------------------------------------------------- /tests/benchmarks/originals/hmatrix-0.15.0.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/hmatrix-0.15.0.1.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/llrbtree-0.1.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/llrbtree-0.1.1.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/text-0.11.2.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/text-0.11.2.3.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/unordered-containers-0.2.1.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/unordered-containers-0.2.1.0.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/vector-0.10.0.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/vector-0.10.0.1.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/vector-0.9.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/vector-0.9.1.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/vector-algorithms-0.5.4.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/vector-algorithms-0.5.4.2.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/originals/wouter-swierstra-xmonad-7715ec2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/wouter-swierstra-xmonad-7715ec2.zip -------------------------------------------------------------------------------- /tests/benchmarks/originals/xmonad-0.10.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ucsd-progsys/liquidhaskell/eb585061ffad22ea4ba232cc3f08fd7a2dfb3dfc/tests/benchmarks/originals/xmonad-0.10.tar.gz -------------------------------------------------------------------------------- /tests/benchmarks/stitch-lh/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | dist-newstyle 3 | *.swp 4 | -------------------------------------------------------------------------------- /tests/benchmarks/stitch-lh/CHANGES.md: -------------------------------------------------------------------------------- 1 | Version 1.0 2 | =========== 3 | 4 | * Initial release 5 | -------------------------------------------------------------------------------- /tests/benchmarks/stitch-lh/main/Main.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--skip-module" @-} 2 | 3 | module Main where 4 | 5 | import qualified Language.Stitch.LH.Repl as Repl ( main ) 6 | 7 | main :: IO () 8 | main = Repl.main 9 | -------------------------------------------------------------------------------- /tests/benchmarks/stitch-lh/nixpkgs.nix: -------------------------------------------------------------------------------- 1 | import (fetchTarball "https://github.com/tweag/nixpkgs/archive/e544ee88fa4590df75e221e645a03fe157a99e5b.tar.gz") 2 | -------------------------------------------------------------------------------- /tests/benchmarks/stitch-lh/tests/revapp.stitch: -------------------------------------------------------------------------------- 1 | -- Stitch test file 2 | revapp = \x:Int. \y:Int->Int. y x; 3 | plus1 = \x:Int. x + 1 4 | -------------------------------------------------------------------------------- /tests/benchmarks/text-0.11.2.3/Setup.lhs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env runhaskell 2 | > import Distribution.Simple 3 | > main = defaultMain 4 | -------------------------------------------------------------------------------- /tests/benchmarks/unordered-containers-0.2.1.0/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /tests/benchmarks/vector-0.10.0.1/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | 4 | -------------------------------------------------------------------------------- /tests/benchmarks/vector-algorithms-0.5.4.2/Setup.lhs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env runhaskell 2 | > import Distribution.Simple 3 | > main = defaultMain 4 | -------------------------------------------------------------------------------- /tests/benchmarks/xmonad-0.10/Setup.lhs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env runhaskell 2 | > import Distribution.Simple 3 | > main = defaultMain 4 | -------------------------------------------------------------------------------- /tests/cabal_driver/driver.hs: -------------------------------------------------------------------------------- 1 | -- | Test driver for cabal-based builds. 2 | 3 | import Test.Build 4 | import Test.Options 5 | 6 | main :: IO () 7 | main = program cabalTestEnv cabalRun =<< parseOptions 8 | -------------------------------------------------------------------------------- /tests/classes/neg/Class00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Class00 where 3 | 4 | class Zoo a where 5 | zoo :: Int -> a 6 | 7 | {-@ class Zoo a where 8 | zoo :: {v:Int | v > 0} -> a 9 | @-} 10 | 11 | zing :: (Zoo a) => a 12 | zing = zoo 0 13 | 14 | -------------------------------------------------------------------------------- /tests/classes/neg/Class01.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | -- tests the "default method" 3 | 4 | module Class01 where 5 | 6 | {-@ class Foo a where 7 | foo :: a -> Nat 8 | @-} 9 | 10 | class Foo a where 11 | foo :: a -> Int 12 | foo _ = 0 - 10 13 | -------------------------------------------------------------------------------- /tests/classes/neg/RealProps0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | 3 | -- Issue overload-div-int-real #579 4 | 5 | module RealProps0 where 6 | 7 | divId :: Double -> Double 8 | divId x = x / 0.0 9 | 10 | -------------------------------------------------------------------------------- /tests/classes/pos/Class00.hs: -------------------------------------------------------------------------------- 1 | module Class00 where 2 | 3 | class Zoo a where 4 | zoo :: a -> Int 5 | 6 | {-@ class Zoo a where 7 | zoo :: a -> {v:Int | v > 0} 8 | @-} 9 | 10 | {-@ zing :: (Zoo a) => a -> {v:Int | v > 0} @-} 11 | zing x = zoo x 12 | 13 | -------------------------------------------------------------------------------- /tests/classes/pos/HiddenMethod00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module HiddenMethod00 where 4 | 5 | import Prelude hiding (mod, gcd) 6 | 7 | foo :: a -> a 8 | foo x = x 9 | -------------------------------------------------------------------------------- /tests/classes/pos/RealProps0.hs: -------------------------------------------------------------------------------- 1 | 2 | -- Issue overload-div-int-real #579 3 | 4 | module RealProps0 where 5 | 6 | {-@ divId :: x:Double -> {v:Double | v = x} @-} 7 | divId :: Double -> Double 8 | divId x = x / 1.0 9 | 10 | -------------------------------------------------------------------------------- /tests/datacon/neg/Data00.hs: -------------------------------------------------------------------------------- 1 | module Data00 where 2 | 3 | import Data00Lib 4 | 5 | test2 :: Int -> Thing 6 | test2 = Thing 7 | -------------------------------------------------------------------------------- /tests/datacon/neg/Data00Lib.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Data00Lib where 3 | 4 | {-@ data Thing = Thing { fldThing :: {v:Int | 0 <= v} } @-} 5 | data Thing = Thing { fldThing :: Int } 6 | 7 | test2 :: Int -> Thing 8 | test2 = Thing 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/datacon/neg/Data01.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Data01 where 3 | 4 | {-@ data Thing = Thing { fldThing :: Nat } @-} 5 | data Thing = Thing { fldThing :: Int } 6 | 7 | 8 | test2 :: Int -> Thing 9 | test2 = Thing 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/datacon/neg/Data02.hs: -------------------------------------------------------------------------------- 1 | module Data02 where 2 | 3 | import Data02Lib 4 | 5 | {-@ test4 :: Nat -> Pair @-} 6 | test4 x = P x (x - 1) 7 | -------------------------------------------------------------------------------- /tests/datacon/neg/Data02Lib.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Data02Lib where 3 | 4 | {-@ data Pair = P { pX :: Nat, pY :: {v:Nat | pX < v} } @-} 5 | data Pair = P { pX :: Int, pY :: Int } 6 | 7 | {-@ test1 :: Pair -> TT @-} 8 | test1 (P a b) = a < a 9 | 10 | -------------------------------------------------------------------------------- /tests/datacon/pos/Data00.hs: -------------------------------------------------------------------------------- 1 | module Data00 where 2 | 3 | import Data00Lib 4 | 5 | {-@ test3 :: Thing -> Nat @-} 6 | test3 :: Thing -> Int 7 | test3 (Thing x) = x 8 | 9 | {-@ test4 :: Nat -> Thing @-} 10 | test4 :: Int -> Thing 11 | test4 = Thing 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/datacon/pos/Data02.hs: -------------------------------------------------------------------------------- 1 | module Data02 where 2 | 3 | import Data02Lib 4 | 5 | {-@ test3 :: Pair -> TT @-} 6 | test3 (P a b) = a < b 7 | 8 | {-@ test4 :: Nat -> Pair @-} 9 | test4 x = P x (x + 1) 10 | 11 | -------------------------------------------------------------------------------- /tests/errors/BadAliasApp.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed application of type alias `ListN`" @-} 2 | module BadAliasApp where 3 | 4 | {-@ type ListN a N = {v:[a] | len v = N} @-} 5 | 6 | {-@ foo :: ListN 0 0 @-} 7 | foo :: [a] 8 | foo = undefined 9 | -------------------------------------------------------------------------------- /tests/errors/BadAnnotation.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed annotation" @-} 2 | module BadAnnotation where 3 | 4 | {-@ incr :: x:Int -> {v:Int | x < v } -} 5 | incr :: Int -> Int 6 | incr x = x - 1 7 | -------------------------------------------------------------------------------- /tests/errors/BadAnnotation1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed annotation" @-} 2 | module BadAnnotation1 where 3 | 4 | {-@ incr :: x:Int 5 | -> {v:Int | x < v } 6 | -} 7 | incr :: Int -> Int 8 | incr x = x - 1 9 | -------------------------------------------------------------------------------- /tests/errors/BadData0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Unknown type constructor `Zoog`" @-} 2 | module BadData0 where 3 | 4 | data Zog = Z Int 5 | {-@ data Zoog = Z { mkZ :: Nat } @-} 6 | 7 | frog = Z (0 - 5) 8 | -------------------------------------------------------------------------------- /tests/errors/BadDataCon2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=GHC and Liquid specifications have different numbers of fields for `BadDataCon2.Cuthb`" @-} 2 | module BadDataCon2 where 3 | 4 | {-@ data T = Cuthb { fldX :: Int, fldY :: Int } @-} 5 | 6 | data T = Cuthb { fldX :: Int } 7 | -------------------------------------------------------------------------------- /tests/errors/BadDataConType2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=different numbers of fields for `BadDataConType2.C`" @-} 2 | module BadDataConType2 where 3 | 4 | {-@ data T = C { fldX :: Int } @-} 5 | 6 | data T = C { fldX :: Int, fldY :: Int } 7 | -------------------------------------------------------------------------------- /tests/errors/BadPragma0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Illegal pragma" @-} 2 | {-@ LIQUID "--idirs=.." @-} 3 | 4 | module BadPragma0 where 5 | 6 | i :: Int 7 | i = 1 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/BadPragma1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Illegal pragma" @-} 2 | {-@ LIQUID "--c-files=./wow.c" @-} 3 | 4 | module BadPragma1 where 5 | 6 | i :: Int 7 | i = 1 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/BadPragma2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Illegal pragma" @-} 2 | {-@ LIQUID "--ghc-option=-O0" @-} 3 | 4 | module BadPragma2 where 5 | 6 | i :: Int 7 | i = 1 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/BadQualifier.hs: -------------------------------------------------------------------------------- 1 | module BadQualifier where 2 | data RGRef a 3 | {-@ measure tv :: RGRef a -> a @-} 4 | {-@ qualif TERMINALVALUE(r:RGRef a): (tv r) @-} 5 | 6 | 7 | data A 8 | data B 9 | 10 | {-@ qualif Foo(x:A, y:B): (x == y) @-} 11 | -------------------------------------------------------------------------------- /tests/errors/BadSyn1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed application of type alias `Fooz`" @-} 2 | module BadSyn1 where 3 | 4 | type Foo = Int 5 | 6 | {-@ type Fooz = {v:Int | 1 < v} @-} 7 | 8 | {-@ bob :: Fooz 1000 @-} 9 | bob = 10 :: Int 10 | 11 | -------------------------------------------------------------------------------- /tests/errors/BadSyn2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed application of type alias `BadSyn2.Foo`" @-} 2 | module BadSyn2 where 3 | 4 | type Foo = Int 5 | 6 | {-@ bob :: Foo 1000 @-} 7 | bob = 10 :: Int 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/BadSyn3.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed application of type alias `BadSyn3.Foo`" @-} 2 | module BadSyn3 where 3 | 4 | type Foo = Int 5 | 6 | {-@ bob :: Foo String @-} 7 | bob = 10 :: Int 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/CyclicExprAlias0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition" @-} 2 | module CyclicExprAlias0 () where 3 | 4 | {-@ expression CyclicA1 Q = CyclicA1 Q @-} 5 | 6 | -------------------------------------------------------------------------------- /tests/errors/CyclicExprAlias1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition" @-} 2 | module CyclicExprAlias1 () where 3 | 4 | {-@ expression CyclicB1 Q = CyclicB2 Q @-} 5 | {-@ expression CyclicB2 Q = CyclicB1 Q @-} 6 | 7 | -------------------------------------------------------------------------------- /tests/errors/CyclicPredAlias0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicA1`" @-} 2 | module CyclicPredAlias0 () where 3 | 4 | {-@ predicate CyclicA1 Q = CyclicA1 Q @-} 5 | 6 | -------------------------------------------------------------------------------- /tests/errors/CyclicPredAlias1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicB1`" @-} 2 | module CyclicPredAlias1 () where 3 | 4 | {-@ predicate CyclicB1 Q = CyclicB2 Q @-} 5 | {-@ predicate CyclicB2 Q = CyclicB1 Q @-} 6 | 7 | -------------------------------------------------------------------------------- /tests/errors/CyclicTypeAlias0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicA1`" @-} 2 | module CyclicTypeAlias0 () where 3 | 4 | {-@ type CyclicA1 = CyclicA2 @-} 5 | {-@ type CyclicA2 = CyclicA1 @-} 6 | 7 | -------------------------------------------------------------------------------- /tests/errors/CyclicTypeAlias1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicB1`" @-} 2 | module CyclicTypeAlias1 () where 3 | 4 | {-@ type CyclicB1 = CyclicB2 @-} 5 | {-@ type CyclicB2 = CyclicB3 @-} 6 | {-@ type CyclicB3 = CyclicB1 @-} 7 | 8 | -------------------------------------------------------------------------------- /tests/errors/CyclicTypeAlias2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicC`" @-} 2 | module CyclicTypeAlias2 () where 3 | 4 | {-@ type CyclicC = [CyclicC] @-} 5 | 6 | -------------------------------------------------------------------------------- /tests/errors/CyclicTypeAlias3.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Cyclic type alias definition for `CyclicD2" @-} 2 | module CyclicTypeAlias3 () where 3 | 4 | {-@ type CyclicD1 = CyclicD2 @-} 5 | {-@ type CyclicD2 = CyclicD3 @-} 6 | {-@ type CyclicD3 = CyclicD2 @-} 7 | 8 | -------------------------------------------------------------------------------- /tests/errors/EmptyData.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=one or more fields in the data declaration for `A`" @-} 2 | -- | see: https://github.com/ucsd-progsys/liquidhaskell/issues/1169 3 | 4 | module EmptyData where 5 | 6 | {-@ data A @-} 7 | data A = B 8 | -------------------------------------------------------------------------------- /tests/errors/ErrLocation.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=ErrLocation.hs:10:13" @-} 2 | 3 | module ErrLocation where 4 | 5 | {-@ inc :: Nat -> Nat @-} 6 | inc :: Int -> Int 7 | inc x = x + 1 8 | 9 | bar :: Int -> Int 10 | bar x = inc (x - 1) 11 | 12 | -------------------------------------------------------------------------------- /tests/errors/HoleCrash2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Malformed application of type alias `Geq`" @-} 2 | module HoleCrash2 where 3 | 4 | data Poo a = C { t :: Poo a } 5 | 6 | {-@ type Geq a N = {v:a | N <= v} @-} 7 | 8 | {-@ data Poo a = C { t :: Poo (Geq 0) } @-} 9 | -------------------------------------------------------------------------------- /tests/errors/Inconsistent1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Specified type does not refine Haskell type for `Inconsistent1.incr` (Checked)" @-} 2 | module Inconsistent1 where 3 | 4 | {-@ incr :: Int -> Bool @-} 5 | incr :: Int -> Int 6 | incr x = x + 1 7 | -------------------------------------------------------------------------------- /tests/errors/Inconsistent2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Specified type does not refine Haskell type for `Inconsistent2.foo` (Checked)" @-} 2 | module Inconsistent2 where 3 | 4 | {-@ foo :: Nat @-} 5 | foo :: Bool 6 | foo = True 7 | -------------------------------------------------------------------------------- /tests/errors/MissingField1.hs: -------------------------------------------------------------------------------- 1 | -- TODO-REBARE: LH _should_ (?) complain: "Unknown field `goober` in refined definition of `Foo`" 2 | 3 | module MissingField1 where 4 | 5 | data Foo = F Int 6 | 7 | {-@ data Foo = F { goober :: Int } @-} 8 | 9 | -------------------------------------------------------------------------------- /tests/errors/ReWrite6.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Unable to use ReWrite6.bad as a rewrite because it does not prove an equality" @-} 2 | module ReWrite6 where 3 | 4 | -- Reject non equalities 5 | {-@ rewrite bad @-} 6 | {-@ bad :: {1 < 2} @-} 7 | bad :: () 8 | bad = () 9 | -------------------------------------------------------------------------------- /tests/errors/UnboundCheckVar.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--checks=ink" @-} 2 | 3 | module UnboundCheckVar where 4 | 5 | inc :: Int -> Int 6 | inc x = x + 1 7 | 8 | -------------------------------------------------------------------------------- /tests/errors/UnboundFunInSpec1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Unknown logic name `rubbish`" @-} 2 | {-@ LIQUID "--expect-error-containing=Unknown logic name `this`" @-} 3 | module UnboundFunInSpec1 where 4 | 5 | {-@ foo :: xs:_ -> {v:_ | this = rubbish } @-} 6 | foo _ _ = 0 7 | -------------------------------------------------------------------------------- /tests/errors/UnboundVarInAssume.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Unknown logic name `x`" @-} 2 | module UnboundVarInAssume where 3 | 4 | {-@ assume incr :: Int -> {v : Int | v == x} @-} 5 | incr :: Int -> Int 6 | incr x = x + 1 7 | -------------------------------------------------------------------------------- /tests/errors/UnboundVarInSpec.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Unknown logic name `y`" @-} 2 | module UnboundVarInSpec where 3 | 4 | 5 | {-@ foo :: forall

s -> Bool>. 6 | xs:s

-> s

@-} 7 | foo :: s -> s 8 | foo s = s 9 | -------------------------------------------------------------------------------- /tests/ffi-include/foo.c: -------------------------------------------------------------------------------- 1 | #include "foo.h" 2 | int foo(int x) { 3 | return x; 4 | } 5 | -------------------------------------------------------------------------------- /tests/ffi-include/foo.h: -------------------------------------------------------------------------------- 1 | int foo(int); 2 | -------------------------------------------------------------------------------- /tests/import/client/C.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module C where 4 | import Language 5 | import B 6 | 7 | {-@ getVal :: {e:Expr l st r | isEFalse e } -> {v:Int | false} @-} 8 | getVal :: Expr l st r -> Int 9 | getVal (EFalse v) = v -------------------------------------------------------------------------------- /tests/import/client/CliAliasGen00.hs: -------------------------------------------------------------------------------- 1 | module CliAliasGen00 where 2 | 3 | import LibAliasGen00 4 | 5 | bar = foo 10 6 | -------------------------------------------------------------------------------- /tests/import/client/CliRedBlue.hs: -------------------------------------------------------------------------------- 1 | module CliRedBlue where 2 | 3 | import LibBlue 4 | import qualified LibRedBlue as RB 5 | 6 | {-@ yumyum :: _ -> Nat @-} 7 | yumyum = RB.foo 8 | -------------------------------------------------------------------------------- /tests/import/client/Client0.hs: -------------------------------------------------------------------------------- 1 | module Client0 where 2 | 3 | import Client1Lib 4 | 5 | a :: Eq a => B a -> Bool 6 | a (B x y) = x == y 7 | -------------------------------------------------------------------------------- /tests/import/client/Client1Lib.hs: -------------------------------------------------------------------------------- 1 | module Client1Lib where 2 | 3 | import Client2Lib 4 | 5 | data B a = B {b1 :: a, b2 :: a } 6 | {-@ data B a = B {b1 :: a, b2 :: {v:a | cProp b1 v } } @-} 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/import/client/Client2Lib.hs: -------------------------------------------------------------------------------- 1 | module Client2Lib where 2 | 3 | {-@ reflect cProp @-} 4 | 5 | cProp :: Eq a => a -> a -> Bool 6 | cProp x y = x == y 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/import/client/LibRedBlue.hs: -------------------------------------------------------------------------------- 1 | module LibRedBlue where 2 | 3 | import LibRed 4 | import qualified LibBlue as Blue 5 | 6 | {-@ foo :: Thing -> Nat @-} 7 | foo :: Thing -> Int 8 | foo _ = 10 9 | -------------------------------------------------------------------------------- /tests/import/client/NameClashClient.hs: -------------------------------------------------------------------------------- 1 | module NameClashClient where 2 | 3 | import qualified NameClashLib as Lib 4 | 5 | data Foo = FooClient Int 6 | 7 | {-@ bar :: FooAlias -> Nat @-} 8 | bar :: Lib.Foo -> Int 9 | bar _ = 20 10 | 11 | baz = Lib.foo 12 | -------------------------------------------------------------------------------- /tests/import/client/ReflectClient1.hs: -------------------------------------------------------------------------------- 1 | module ReflectClient1 where 2 | 3 | import ReflectLib1 4 | 5 | {-@ myHead :: {v:[a] | not (isNull v) } -> a @-} 6 | myHead :: [a] -> a 7 | myHead (x:_) = x 8 | -------------------------------------------------------------------------------- /tests/import/client/ReflectClient2.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--higherorder" @-} 2 | 3 | module ReflectClient2 where 4 | 5 | import ReflectLib2 6 | 7 | {-@ proof :: a -> { v: Int | incr 5 == 6 } @-} 8 | proof _ = incr 5 9 | -------------------------------------------------------------------------------- /tests/import/client/T1096_Foo.hs: -------------------------------------------------------------------------------- 1 | module T1096_Foo where 2 | 3 | import T1096_TypesLib 4 | 5 | {-@ foo :: f:Foo -> Foo / [size f] @-} 6 | foo :: Foo -> Foo 7 | foo (A x) = A (foo x) 8 | foo x = x 9 | -------------------------------------------------------------------------------- /tests/import/client/T1180.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE GADTs #-} 2 | 3 | {-@ LIQUID "--exact-data-con" @-} 4 | {-@ LIQUID "--noadt" @-} 5 | 6 | module T1180 where 7 | 8 | import PeanoLib 9 | 10 | pInt :: Peano -> Int 11 | pInt Z = 0 12 | pInt (S n) = 1 + pInt n 13 | -------------------------------------------------------------------------------- /tests/import/client/T1738.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module T1738 where 4 | 5 | import T1738Lib 6 | 7 | {-@ reflect bar @-} 8 | bar :: Int -> Int 9 | bar n = incr n 10 | -------------------------------------------------------------------------------- /tests/import/client/T2198.hs: -------------------------------------------------------------------------------- 1 | -- Tests that annotations from GHC.Types are available 2 | -- when using the Ord class. 3 | module T2198 where 4 | 5 | g :: Int -> Bool 6 | g x = x >= 0 7 | -------------------------------------------------------------------------------- /tests/import/client/WrapClient.hs: -------------------------------------------------------------------------------- 1 | module WrapClient where 2 | 3 | import WrapLib 4 | import WrapLibCode 5 | 6 | {-@ bar :: {v:Int | v = 2 } @-} 7 | bar = foo 1 8 | 9 | -------------------------------------------------------------------------------- /tests/import/deps/ALib.hs: -------------------------------------------------------------------------------- 1 | module ALib where 2 | 3 | {-@ plus :: x:Int -> y:Int -> {v:Int | v = x + y} @-} 4 | plus :: Int -> Int -> Int 5 | plus x y = x + y 6 | 7 | test :: String -> (String, String) 8 | test x = ("test", x) 9 | 10 | -------------------------------------------------------------------------------- /tests/import/deps/BLib.hs: -------------------------------------------------------------------------------- 1 | module BLib where 2 | 3 | {-@ minus :: x:Int -> y:Int -> {v:Int | v = x - y} @-} 4 | minus :: Int -> Int -> Int 5 | minus x y = x - y 6 | 7 | -------------------------------------------------------------------------------- /tests/import/deps/CLib.hs: -------------------------------------------------------------------------------- 1 | module CLib where 2 | 3 | import ALib 4 | import BLib 5 | 6 | {-@ quux :: x:Int -> y:Int -> z:Int -> {v:Int | v = x + y - z} @-} 7 | quux :: Int -> Int -> Int -> Int 8 | quux x y z = x `plus` y `minus` z 9 | -------------------------------------------------------------------------------- /tests/import/deps/D.hs: -------------------------------------------------------------------------------- 1 | module D where 2 | 3 | import qualified CLib 4 | 5 | {-@ gloob :: x:Nat -> Nat @-} 6 | gloob :: Int -> Int 7 | gloob x = C.quux x x x 8 | 9 | -------------------------------------------------------------------------------- /tests/import/lib/B.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | module B where 3 | import Language 4 | 5 | {-@ reflect subst @-} 6 | subst :: Expr l st r -> Expr l st r 7 | subst EUnit = EUnit 8 | subst e = e -------------------------------------------------------------------------------- /tests/import/lib/FunClashLib.hs: -------------------------------------------------------------------------------- 1 | module FunClashLib (blob) where 2 | 3 | import FunClashLibLib 4 | 5 | {-@ blob :: Nat -> Nat @-} 6 | blob :: Int -> Int 7 | blob = incr 8 | 9 | -------------------------------------------------------------------------------- /tests/import/lib/FunClashLibLib.hs: -------------------------------------------------------------------------------- 1 | 2 | module FunClashLibLib where 3 | 4 | {-@ incr :: Nat -> Nat @-} 5 | incr :: Int -> Int 6 | incr x = x + 1 7 | -------------------------------------------------------------------------------- /tests/import/lib/LibBlue.hs: -------------------------------------------------------------------------------- 1 | module LibBlue where 2 | 3 | data Thing = ThingBlue Int 4 | 5 | {-@ foo :: Int -> Thing @-} 6 | foo :: Int -> Thing 7 | foo = ThingBlue 8 | 9 | -------------------------------------------------------------------------------- /tests/import/lib/LibRed.hs: -------------------------------------------------------------------------------- 1 | module LibRed where 2 | 3 | data Thing = ThingRed Int 4 | 5 | {-@ foo :: Int -> Thing @-} 6 | foo :: Int -> Thing 7 | foo = ThingRed 8 | 9 | -------------------------------------------------------------------------------- /tests/import/lib/NameClashLib.hs: -------------------------------------------------------------------------------- 1 | module NameClashLib where 2 | 3 | data Foo = FooLib Int 4 | 5 | {-@ type FooAlias = {v : Foo | False} @-} 6 | foo :: Foo -> Int 7 | foo _ = 10 8 | -------------------------------------------------------------------------------- /tests/import/lib/ReExportLib.hs: -------------------------------------------------------------------------------- 1 | module ReExportLib ( module ReExportLib 2 | , module X 3 | ) where 4 | 5 | 6 | import SpecLib as X 7 | -------------------------------------------------------------------------------- /tests/import/lib/ReflectLib0.hs: -------------------------------------------------------------------------------- 1 | module ReflectLib0 where 2 | 3 | {-@ inline gtThan @-} 4 | gtThan :: Int -> Int -> Bool 5 | gtThan x y = x > y 6 | 7 | 8 | {-@ predicate GreaterThanA X Y = X > Y @-} 9 | -------------------------------------------------------------------------------- /tests/import/lib/ReflectLib1.hs: -------------------------------------------------------------------------------- 1 | module ReflectLib1 where 2 | 3 | {-@ measure isNull @-} 4 | isNull :: [a] -> Bool 5 | isNull [] = True 6 | isNull (x:xs) = False 7 | -------------------------------------------------------------------------------- /tests/import/lib/ReflectLib7.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--higherorder" @-} 2 | {-@ LIQUID "--exactdc" @-} 3 | 4 | module ReflectLib7 where 5 | 6 | {-@ reflect compose @-} 7 | compose :: (b -> c) -> (a -> b) -> a -> c 8 | compose f g x = f (g x) 9 | -------------------------------------------------------------------------------- /tests/import/lib/SpecLib.hs: -------------------------------------------------------------------------------- 1 | module SpecLib where 2 | 3 | data Foo = FooDC Int 4 | {-@ data Foo = FooDC {unfoo :: {v:Int | 0 < v }} @-} 5 | 6 | {-@ measure cfun @-} 7 | {-@ cfun :: Foo -> {v:Int | 0 < v} @-} 8 | cfun :: Foo -> Int 9 | cfun (FooDC x) = x 10 | -------------------------------------------------------------------------------- /tests/import/lib/T1102_LibX.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-con" @-} 2 | 3 | module T1102_LibX where 4 | 5 | import T1102_LibY 6 | -- import T1102_LibZ 7 | -- zink = fooA 8 | 9 | {-@ theorem :: x:Bar -> {bar x = bar x} @-} 10 | theorem :: Bar -> () 11 | theorem _ = () 12 | -------------------------------------------------------------------------------- /tests/import/lib/T1102_LibY.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-con" @-} 2 | 3 | module T1102_LibY where 4 | 5 | import T1102_LibZ 6 | 7 | data Bar = Bar {barFoo :: Foo Int Int} 8 | 9 | {-@ reflect bar @-} 10 | bar :: Bar -> Int 11 | bar (Bar (Foo x _)) = x 12 | -------------------------------------------------------------------------------- /tests/import/lib/T1102_LibZ.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-con" @-} 2 | 3 | module T1102_LibZ where 4 | 5 | {-@ data Foo a b = Foo { fooA :: a, fooB :: b} @-} 6 | data Foo a b = Foo {fooA :: a, fooB :: b} 7 | -------------------------------------------------------------------------------- /tests/import/lib/T1112Lib.hs: -------------------------------------------------------------------------------- 1 | module T1112Lib where 2 | 3 | data Product f g p = Product (f p) (g p) deriving Eq 4 | -------------------------------------------------------------------------------- /tests/import/lib/T1117Lib.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--higherorder" @-} 2 | {-@ LIQUID "--exactdc" @-} 3 | 4 | module T1117Lib where 5 | 6 | data U1 p = U1 7 | 8 | data Product f g p = Product (f p) (g p) 9 | -------------------------------------------------------------------------------- /tests/import/lib/T1118Lib1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--higherorder" @-} 2 | {-@ LIQUID "--exactdc" @-} 3 | module T1118Lib1 where 4 | 5 | import T1118Lib2 6 | 7 | {- data Product @-} 8 | -------------------------------------------------------------------------------- /tests/import/lib/T1118Lib2.hs: -------------------------------------------------------------------------------- 1 | module T1118Lib2 where 2 | 3 | data U1 p = U1 4 | data Product f g p = Product (f p) (g p) 5 | -------------------------------------------------------------------------------- /tests/import/lib/T1738Lib.hs: -------------------------------------------------------------------------------- 1 | module T1738Lib where 2 | 3 | {-@ inline incr @-} 4 | incr :: Int -> Int 5 | incr x = x + 1 6 | -------------------------------------------------------------------------------- /tests/import/lib/WrapLib.hs: -------------------------------------------------------------------------------- 1 | module WrapLib ( module WrapLibCode ) where 2 | 3 | import WrapLibCode 4 | 5 | {-@ assume WrapLibCode.foo :: x:Nat -> {v:Nat | v = x + 1} @-} 6 | 7 | -------------------------------------------------------------------------------- /tests/import/lib/WrapLibCode.hs: -------------------------------------------------------------------------------- 1 | module WrapLibCode (foo) where 2 | 3 | foo :: Int -> Int 4 | foo x = x + 1 5 | -------------------------------------------------------------------------------- /tests/liquidhaskell-test/Main.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Test.Tasty 4 | import qualified QuotRem (tests) 5 | 6 | main :: IO () 7 | main = defaultMain QuotRem.tests 8 | -------------------------------------------------------------------------------- /tests/measure/neg/Fst02.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | -- TAG: measure 3 | -- test if the "builtin" fst and snd measures work. 4 | 5 | module Fst02 where 6 | 7 | {-@ foo :: z:_ -> {v:_ | v = snd z} @-} 8 | foo :: (a, a) -> a 9 | foo z = fst z 10 | 11 | -------------------------------------------------------------------------------- /tests/measure/neg/Using00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Using00 where 3 | 4 | {-@ using [a] as {v : [a] | (len v) > 0 } @-} 5 | 6 | 7 | xs = [] 8 | 9 | add x xs = x:xs 10 | 11 | bar xs = head xs 12 | foo xs = tail xs 13 | -------------------------------------------------------------------------------- /tests/measure/pos/GList000.hs: -------------------------------------------------------------------------------- 1 | -- TAG: absref 2 | 3 | module GList000 where 4 | 5 | {-@ safeHead :: {v:[a] | false } -> a @-} 6 | safeHead :: [a] -> a 7 | safeHead (x:_) = x 8 | -------------------------------------------------------------------------------- /tests/measure/pos/HiddenData.hs: -------------------------------------------------------------------------------- 1 | module HiddenData where 2 | 3 | import HiddenDataLib (blub) 4 | 5 | {-@ foo :: Nat -> Nat @-} 6 | foo = blub 7 | -------------------------------------------------------------------------------- /tests/measure/pos/HiddenDataLib.hs: -------------------------------------------------------------------------------- 1 | module HiddenDataLib where 2 | 3 | {-@ data Thing = Red Nat | Blue Nat @-} 4 | data Thing = Red Int | Blue Int 5 | 6 | {-@ blub :: Nat -> Nat @-} 7 | blub :: Int -> Int 8 | blub x = x + 1 9 | -------------------------------------------------------------------------------- /tests/measure/pos/Ple00.hs: -------------------------------------------------------------------------------- 1 | -- TAG: reflect 2 | 3 | {-@ LIQUID "--reflection" @-} 4 | 5 | module Ple00 where 6 | 7 | {-@ reflect adder @-} 8 | adder :: Int -> Int -> Int 9 | adder x y = x + y 10 | 11 | {-@ prop :: { v: Int | adder 5 6 == 11 } @-} 12 | prop = adder 5 6 13 | -------------------------------------------------------------------------------- /tests/measure/pos/Using00.hs: -------------------------------------------------------------------------------- 1 | -- tag: using 2 | 3 | module Using00 where 4 | 5 | {-@ using [a] as {v : [a] | (len v) > 0 } @-} 6 | 7 | xs = repeat 1 8 | 9 | add x xs = x:xs 10 | 11 | bar xs = head xs 12 | foo xs = tail xs 13 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/A.hs: -------------------------------------------------------------------------------- 1 | module A where 2 | 3 | data Ty = TInt 4 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/AData.hs: -------------------------------------------------------------------------------- 1 | module AData where 2 | 3 | {-@ data Dat = C1A | C2A @-} 4 | data Dat = C1A | C2A 5 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/B.hs: -------------------------------------------------------------------------------- 1 | module B where 2 | 3 | import A 4 | 5 | data Exp = Lam Ty 6 | 7 | {-@ measure measureExp @-} 8 | measureExp :: Exp -> Int 9 | measureExp _ = 10 10 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/BData.hs: -------------------------------------------------------------------------------- 1 | module BData where 2 | 3 | {-@ data Dat = C1B @-} 4 | data Dat = C1B 5 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/CData.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -Wno-unused-imports -Wno-missing-signatures #-} 2 | module CData where 3 | 4 | import qualified AData 5 | import qualified BData 6 | 7 | {-@ ys :: AData.Dat @-} 8 | ys = AData.C1A 9 | -------------------------------------------------------------------------------- /tests/name-resolution/pos/MainData.hs: -------------------------------------------------------------------------------- 1 | -- | Tests that the names used in data specifications are resolved even 2 | -- when the specs are imported. 3 | module MainData where 4 | 5 | import qualified CData 6 | 7 | main :: IO () 8 | main = return () 9 | -------------------------------------------------------------------------------- /tests/names/neg/DuplicatedAliases.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Multiple definitions of Type Alias" @-} 2 | module DuplicatedAliases where 3 | 4 | {-@ type Nat = {v:Int | v >= 0} @-} 5 | -------------------------------------------------------------------------------- /tests/names/neg/Local00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Local00 where 3 | 4 | foo = incr 10 5 | where 6 | {-@ incr :: Nat -> Nat @-} 7 | incr :: Int -> Int 8 | incr x = x - 1 9 | -------------------------------------------------------------------------------- /tests/names/neg/Nat1.hs: -------------------------------------------------------------------------------- 1 | module Nat1 where 2 | 3 | {-@ type INat = {v:Int | v >= 0} @-} 4 | -------------------------------------------------------------------------------- /tests/names/neg/Nat2.hs: -------------------------------------------------------------------------------- 1 | module Nat2 where 2 | 3 | import Data.Int (Int32) 4 | 5 | {-@ type INat = {v:Int32 | v >= 0}@-} 6 | -------------------------------------------------------------------------------- /tests/names/neg/Set02.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Set02 where 3 | 4 | import Data.Set as S 5 | 6 | {-@ add :: x:a -> [a] -> {v:[a] | S.member x (listElts v)} @-} 7 | add :: a -> [a] -> [a] 8 | add apple pork = pork 9 | -------------------------------------------------------------------------------- /tests/names/pos/List00.hs: -------------------------------------------------------------------------------- 1 | -- | The `GHC.TypeLits` seems to royally mess up name resolution. 2 | 3 | module List00 where 4 | 5 | import GHC.TypeLits 6 | 7 | {-@ zoo :: [Int] @-} 8 | zoo :: [Int] 9 | zoo = [] 10 | 11 | -------------------------------------------------------------------------------- /tests/names/pos/Local02.hs: -------------------------------------------------------------------------------- 1 | module Local02 where 2 | 3 | {-@ foo :: x:_ -> y:_ -> {v:Int | v = x + y} @-} 4 | foo :: Int -> Int -> Int 5 | foo arg0 = bar 6 | where 7 | {-@ bar :: x:_ -> {v:Int | v = x + arg0} @-} 8 | bar arg1 = arg0 + arg1 9 | -------------------------------------------------------------------------------- /tests/names/pos/Ord.hs: -------------------------------------------------------------------------------- 1 | module Ord where 2 | 3 | {-@ bigger :: x:_ -> y:_ -> {v:_ | v >= x && v >= y} @-} 4 | bigger :: (Ord a) => a -> a -> a 5 | bigger x y | x `compare` y == GT = x 6 | | otherwise = y 7 | -------------------------------------------------------------------------------- /tests/names/pos/Set02.hs: -------------------------------------------------------------------------------- 1 | module Set02 where 2 | 3 | import Data.Set as S 4 | 5 | {-@ add :: x:a -> [a] -> {v:[a] | S.member x (listElts v)} @-} 6 | add :: a -> [a] -> [a] 7 | add apple pork = apple : pork 8 | -------------------------------------------------------------------------------- /tests/names/pos/Shadow01.hs: -------------------------------------------------------------------------------- 1 | -- TAG: resolve 2 | -- this tests whether we can resolve the name 'map' to the local binder, not 'GHC.Base.map'. 3 | 4 | module Shadow01 where 5 | 6 | {-@ incr :: map:Int -> {v:Int | v = map + 1} @-} 7 | incr :: Int -> Int 8 | incr x = x + 1 9 | -------------------------------------------------------------------------------- /tests/names/pos/T1521.hs: -------------------------------------------------------------------------------- 1 | module T1521 where 2 | 3 | -- https://github.com/ucsd-progsys/liquidhaskell/issues/1521 4 | 5 | data Foo = Bool 6 | 7 | {-@ measure bar :: Int -> Bool @-} 8 | 9 | main :: IO () 10 | main = pure () 11 | -------------------------------------------------------------------------------- /tests/neg/AbsNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=AbsNegTest.hs:6:1" @-} 2 | module AbsNegTest where 3 | 4 | {-@ f :: Int -> {n:Int | n < 0} @-} 5 | f :: Int -> Int 6 | f x = abs x 7 | -------------------------------------------------------------------------------- /tests/neg/BigNum.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module BigNum where 3 | 4 | {-@ type Foo = { v : Integer | 0 <= v && v < 4611686018427387903 * 8 } @-} 5 | 6 | {-@ f :: i : Foo -> { o : Foo | i < o } @-} 7 | f :: Integer -> Integer 8 | f i = i * 2 9 | -------------------------------------------------------------------------------- /tests/neg/CharLiterals.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | -- see #1286 3 | 4 | module CharLiterals where 5 | 6 | {-@ fails :: {v:Bool | v} @-} 7 | fails = 'a' == 'b' 8 | 9 | {-@ ok :: {v:Bool | v} @-} 10 | ok = "a" == "a" 11 | -------------------------------------------------------------------------------- /tests/neg/CosNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=CosNegTest.hs:6:1" @-} 2 | module CosNegTest where 3 | 4 | {-@ test :: a -> {x:a | x > 1} @-} 5 | test :: Floating a => a -> a 6 | test x = cos x 7 | -------------------------------------------------------------------------------- /tests/neg/Datacon_eq.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Datacon_eq (foo) where 3 | 4 | -- This is a blank file. 5 | 6 | data G = A | B 7 | 8 | {-@ foo :: Int -> {v:G | v = A} @-} 9 | foo :: Int -> G 10 | foo _ = B 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/neg/ExpNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=ExpNegTest.hs:6:1" @-} 2 | module ExpNegTest where 3 | 4 | {-@ test :: a -> {x:a | x <= 0} @-} 5 | test :: Floating a => a -> a 6 | test x = exp x 7 | -------------------------------------------------------------------------------- /tests/neg/Exponential1NegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Exponential1NegTest.hs:5:1" @-} 2 | module Exponential1NegTest where 3 | 4 | ex5 :: Float -> Int -> Float 5 | ex5 x y = x ^ y 6 | -------------------------------------------------------------------------------- /tests/neg/Exponential2NegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=Exponential2NegTest.hs:6:20" @-} 2 | module Exponential2NegTest where 3 | 4 | {-@ ex6 :: {n:Float | n /= 0} -> Int -> Float @-} 5 | ex6 :: Float -> Int -> Float 6 | ex6 x y = 1 / (x ^ y) 7 | -------------------------------------------------------------------------------- /tests/neg/ExponentiationNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=ExponentiationNegTest.hs:5:1" @-} 2 | module ExponentiationNegTest where 3 | 4 | test :: Floating a => a 5 | test = 0 ** (-1) 6 | -------------------------------------------------------------------------------- /tests/neg/Fail1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Fail1 where 3 | 4 | -- This should fail because the failing incr is SAFE 5 | {-@ fail incr @-} 6 | {-@ incr :: x:Int -> {v:Int | x < v } @-} 7 | incr :: Int -> Int 8 | incr x = x + 1 9 | -------------------------------------------------------------------------------- /tests/neg/FunSoundness.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module FunSoundness where 3 | 4 | 5 | {-@ deadfun :: {v:a | false} -> a @-} 6 | deadfun :: a -> a 7 | deadfun x = x 8 | 9 | bad = deadfun f 10 | where f x = x 11 | -------------------------------------------------------------------------------- /tests/neg/Grty3.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Grty3 () where 3 | 4 | 5 | {-@ choo :: [a] -> {v: Int | v > 0 } @-} 6 | choo = poo 7 | 8 | 9 | poo :: [a] -> Int 10 | poo (x:xs) = poo xs 11 | poo [] = 0 12 | -------------------------------------------------------------------------------- /tests/neg/Hex00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Hex00 where 3 | 4 | {-@ foo :: {x:Int | x = 0x7} -> {y:Int | y = 0x6} -> {v:Int | v = 0xF} @-} 5 | foo :: Int -> Int -> Int 6 | foo x y = x + y 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/neg/HigherOrder.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | {-@ LIQUID "--higherorder" @-} 3 | module HigherOrder where 4 | 5 | 6 | {-@ foo :: a: Int -> f: (Int -> Int) -> {v : Int | v = 123 + (f a) } @-} 7 | foo :: Int -> (Int -> Int) -> Int 8 | foo a f = f a 9 | -------------------------------------------------------------------------------- /tests/neg/HolesTop.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module HolesTop where 3 | 4 | import Language.Haskell.Liquid.Prelude 5 | 6 | {-@ foo :: _ -> Bool @-} 7 | foo = liquidAssertB 8 | 9 | bar = foo True 10 | -------------------------------------------------------------------------------- /tests/neg/ListRange.dat: -------------------------------------------------------------------------------- 1 | data List a << p:a (fld:a)>> = Nil | Cons x:a^True y:List a^p(x) << p(fld) >> -- 2 | -------------------------------------------------------------------------------- /tests/neg/Listne.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Listne where 3 | 4 | {-@ type ListNE a = {v:[a] | 0 < len v} @-} 5 | 6 | {-@ junkProp :: ListNE Int @-} 7 | junkProp :: [Int] 8 | junkProp = [] 9 | 10 | -------------------------------------------------------------------------------- /tests/neg/Lit.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Lit where 3 | 4 | {-@ test :: {v:Int | v == 30} @-} 5 | test = length "cat" 6 | -------------------------------------------------------------------------------- /tests/neg/LogNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=LogNegTest.hs:5:1" @-} 2 | module LogNegTest where 3 | 4 | test :: Floating a => a 5 | test = log 0 6 | -------------------------------------------------------------------------------- /tests/neg/Maybe.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Maybe where 3 | 4 | import Data.Maybe 5 | 6 | 7 | foo :: Maybe a -> a 8 | foo x = fromJust x 9 | -------------------------------------------------------------------------------- /tests/neg/Multi_pred_app_00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Multi_pred_app_00 () where 3 | 4 | {-@ bar :: forall < p :: Int -> Bool, q :: Int -> Bool>. Int

-> Int @-} 5 | bar :: Int -> Int 6 | bar x = x 7 | -------------------------------------------------------------------------------- /tests/neg/NestedRecursion.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module NestedRecursion (radicals) where 3 | 4 | radicals :: Int -> [a] 5 | radicals n = [ foo (radicals n) i | i <- [1..]] 6 | 7 | foo = undefined 8 | -------------------------------------------------------------------------------- /tests/neg/NoExhaustiveGuardsError.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module NoExhaustiveGuardsError where 3 | 4 | bar :: Int -> Int -> Int 5 | bar x y | x > y = 1 6 | | x == y = 0 7 | -------------------------------------------------------------------------------- /tests/neg/Null.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Null where 3 | 4 | foo :: [Int] -> Int 5 | foo xs = if null xs then head xs else 0 6 | -------------------------------------------------------------------------------- /tests/neg/Pred.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Pred () where 3 | 4 | {-@ predicate Gt X Y = (X < Y) @-} 5 | 6 | {-@ incr :: x:Int -> {v:Int | Gt v x} @-} 7 | incr :: Int -> Int 8 | incr x = x + 1 9 | -------------------------------------------------------------------------------- /tests/neg/QQTySig.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | {-# LANGUAGE QuasiQuotes #-} 3 | 4 | module QQTySig where 5 | 6 | import LiquidHaskell 7 | 8 | [lq| nats :: [{ v:Int | 0 <= v }] |] 9 | nats = [-1,0,1,2,3,4,5,6,7,8,9,10] 10 | 11 | -------------------------------------------------------------------------------- /tests/neg/SinNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=SinNegTest.hs:6:1" @-} 2 | module SinNegTest where 3 | 4 | {-@ test :: a -> {x:a | x > 1} @-} 5 | test :: Floating a => a -> a 6 | test x = sin x 7 | -------------------------------------------------------------------------------- /tests/neg/SqrtNegTest.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-error-containing=SqrtNegTest.hs:5:1" @-} 2 | module SqrtNegTest where 3 | 4 | test :: Floating a => a 5 | test = sqrt (-3) 6 | -------------------------------------------------------------------------------- /tests/neg/State00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module State00 () where 3 | 4 | type State = Int 5 | data ST a b = S (a -> (a, b)) | F a 6 | 7 | {-@ fresh :: ST Int {v:Int|v>=0} @-} 8 | fresh :: ST Int Int 9 | fresh = S $ \n -> (n, n+1) 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/neg/String00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module String00 () where 3 | 4 | import Language.Haskell.Liquid.Prelude 5 | 6 | foo = "dog" 7 | 8 | prop1 = liquidAssertB (0 == 1) 9 | prop2 = liquidAssertB (1 /= 1) 10 | -------------------------------------------------------------------------------- /tests/neg/SumPoly.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module SumPoly where 3 | 4 | {-@ sumPoly :: forall

Bool>. (Num a, Ord a) => [a

] -> a

@-} 5 | sumPoly :: (Num a, Ord a) => [a] -> a 6 | sumPoly (x:xs) = foldl (+) x xs 7 | 8 | -------------------------------------------------------------------------------- /tests/neg/Sumk.hquals: -------------------------------------------------------------------------------- 1 | qualif PPLUS0(v:int): v >= ~A + ~B 2 | qualif PPLUS1(v:int): v > ~A + ~B 3 | -------------------------------------------------------------------------------- /tests/neg/T1267.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | {-@ LIQUID "--max-case-expand=0" @-} 3 | 4 | module T1267 where 5 | 6 | data ABC = A | B | C 7 | 8 | foo :: Int -> ABC -> () 9 | foo 0 A = () 10 | foo x A | x /= 0 = () 11 | foo _ A = error " " 12 | foo _ t = () 13 | -------------------------------------------------------------------------------- /tests/neg/T1286.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module T1286 where 3 | 4 | {-@ fails :: {v:Bool | v} @-} 5 | fails = 'a' == 'b' 6 | 7 | {-@ ok :: {v:Bool | v} @-} 8 | ok = "a" == "a" 9 | -------------------------------------------------------------------------------- /tests/neg/T1288.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module T1288 where 3 | 4 | {-@ measure foo @-} 5 | foo :: () -> Int 6 | foo _ = 10 7 | 8 | {-@ blub :: {v:Int | v = 100} @-} 9 | blub = foo () 10 | -------------------------------------------------------------------------------- /tests/neg/T743.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module T743 where 3 | 4 | {-@ checkNat :: Nat -> Int @-} 5 | checkNat :: Int -> Int 6 | checkNat x = x 7 | 8 | unsound :: Int 9 | unsound = checkNat (-1) 10 | 11 | data TestBS = TestBS Int deriving (Read) 12 | -------------------------------------------------------------------------------- /tests/neg/TermReal.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module TermReal where 3 | 4 | {-@ search :: { hi : Int | 0 < hi } -> Int @-} 5 | search :: Int -> Int 6 | search hi = search (hi `div` 2) 7 | -------------------------------------------------------------------------------- /tests/neg/TerminationNum.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module TerminationNum where 3 | 4 | {-@ fak2 :: (Ord a, Eq a, Num a) => y:{x: a | x >= 0} -> a /[y]@-} 5 | fak2 :: (Ord a, Eq a, Num a) => a -> a 6 | fak2 0 = 1 7 | fak2 x = x * fak2 (x + 1) 8 | -------------------------------------------------------------------------------- /tests/neg/Test00a.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Test00a () where 3 | 4 | import Language.Haskell.Liquid.Prelude 5 | 6 | x = choose 0 7 | 8 | prop_abs = if x > 0 then baz x else False 9 | 10 | baz z = liquidAssertB (z >= 10) 11 | -------------------------------------------------------------------------------- /tests/neg/Test00c.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Test00c (ok, inc) where 3 | 4 | {-@ ok 5 | :: Int -> Nat 6 | @-} 7 | ok :: Int -> Int 8 | ok x = x + 120 9 | 10 | {-@ inc :: Int -> Nat @-} 11 | inc :: Int -> Int 12 | inc x = x + 10 13 | -------------------------------------------------------------------------------- /tests/neg/Test1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Test1 () where 3 | 4 | import Language.Haskell.Liquid.Prelude 5 | 6 | myabs x = if x `gt` 0 then x else 0 `minus` x 7 | 8 | n = choose 0 9 | 10 | prop_absf = liquidAssertB ((myabs n) `geq` 4) 11 | -------------------------------------------------------------------------------- /tests/neg/TopLevel.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module TopLevel where 3 | 4 | import Language.Haskell.Liquid.Prelude 5 | 6 | foo b = liquidAssertB b 7 | 8 | bar = foo True 9 | -------------------------------------------------------------------------------- /tests/neg/Truespec.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Truespec (foo) where 3 | 4 | import Language.Haskell.Liquid.Prelude (liquidAssert) 5 | 6 | {-@ foo :: Int -> Int @-} 7 | foo :: Int -> Int 8 | foo x = liquidAssert (x > 0) $ x + 1 9 | -------------------------------------------------------------------------------- /tests/neg/Variance1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Variance1 where 3 | 4 | import Data.Binary 5 | 6 | 7 | {-@ assume error :: { x : String | false } -> a @-} 8 | 9 | example :: Get () 10 | example = do 11 | _ <- return () 12 | error "URK" 13 | -------------------------------------------------------------------------------- /tests/parser/pos/T884.hs: -------------------------------------------------------------------------------- 1 | module T884 where 2 | 3 | {-@ isEmpty :: x:[Int] -> {v:Bool | v <=> len x == 0} @-} 4 | isEmpty :: [Int] -> Bool 5 | isEmpty [] = True 6 | isEmpty (_:_) = False 7 | -------------------------------------------------------------------------------- /tests/parser/pos/TokensAsPrefixes.hs: -------------------------------------------------------------------------------- 1 | module TokensAsPrefixes where 2 | 3 | {-@ instancesB :: Int -> Int @-} 4 | instancesB :: Int -> Int 5 | instancesB x = x 6 | -------------------------------------------------------------------------------- /tests/parsing-errors/EmptySig.hs: -------------------------------------------------------------------------------- 1 | -- This can't catch parse errors 2 | {-@ LIQUID "--expect-error-containing=Cannot parse specification" @-} 3 | 4 | module EmptySig where 5 | 6 | {-@ :: foo -> x:Int -> {v:Int | v > x} @-} 7 | foo :: Int -> Int 8 | foo x = x - 1 9 | -------------------------------------------------------------------------------- /tests/parsing-errors/ParseBind.hs: -------------------------------------------------------------------------------- 1 | -- We should reject the below to disallow uppercase binders 2 | 3 | module ParseBind where 4 | 5 | {-@ id :: Foo:Int -> Int @-} 6 | id :: Int -> Int 7 | id x = x 8 | -------------------------------------------------------------------------------- /tests/parsing-errors/app/Main.hs: -------------------------------------------------------------------------------- 1 | -- This is here so parsing fails on Main.hs too! 2 | {-@ id :: Foo:Int -> Int @-} 3 | 4 | module Main where 5 | 6 | main :: IO () 7 | main = putStrLn "Hello, Haskell!" 8 | -------------------------------------------------------------------------------- /tests/pattern/pos/Return00.hs: -------------------------------------------------------------------------------- 1 | 2 | module Return00 where 3 | 4 | 5 | 6 | {-@ silly :: (Monad m) => m Int @-} 7 | silly :: (Monad m) => m Int 8 | silly = return 0 9 | -------------------------------------------------------------------------------- /tests/pattern/pos/Return01.hs: -------------------------------------------------------------------------------- 1 | 2 | module Return01 where 3 | 4 | {-@ silly :: IO {v:Int | v = 0} @-} 5 | silly :: IO Int 6 | silly = return 0 7 | 8 | -------------------------------------------------------------------------------- /tests/pattern/pos/ReturnStrata00.hs: -------------------------------------------------------------------------------- 1 | 2 | module ReturnStrata00 where 3 | 4 | bar :: IO () 5 | bar = if True then return () else undefined 6 | -------------------------------------------------------------------------------- /tests/pattern/pos/TemplateHaskell.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TemplateHaskell #-} 2 | 3 | module TemplateHaskell where 4 | 5 | import TemplateHaskellLib 6 | 7 | hello = "World" 8 | bar 9 | 10 | -------------------------------------------------------------------------------- /tests/ple/pos/Ple0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | {-@ LIQUID "--ple" @-} 3 | 4 | module Ple0 where 5 | 6 | {-@ reflect adder @-} 7 | adder :: Int -> Int -> Int 8 | adder x y = x + y 9 | 10 | {-@ prop :: { adder 5 6 == 11 } @-} 11 | prop = () 12 | -------------------------------------------------------------------------------- /tests/pos/Absref_crash.hs: -------------------------------------------------------------------------------- 1 | module Absref_crash where 2 | 3 | data L a = C (L a) 4 | 5 | {-@ data L a

Bool> = C { xs :: L

a } @-} 6 | 7 | {-@ lazy foo @-} 8 | foo :: b -> L a 9 | foo x = C $ foo x 10 | -------------------------------------------------------------------------------- /tests/pos/Ackermann.hs: -------------------------------------------------------------------------------- 1 | module Ackermann () where 2 | 3 | {-@ ack :: m:Nat -> n:Nat -> Nat / [m, n]@-} 4 | ack :: Int -> Int -> Int 5 | ack m n 6 | | m == 0 = n + 1 7 | | m > 0 && n == 0 = ack (m-1) 1 8 | | m > 0 && n > 0 = ack (m-1) (ack m (n-1)) 9 | -------------------------------------------------------------------------------- /tests/pos/Adt0.hs: -------------------------------------------------------------------------------- 1 | module Adt0 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | data Pair a = P a Int | D a Bool 6 | 7 | 8 | goo z = P z z 9 | 10 | baz = goo 10 11 | -------------------------------------------------------------------------------- /tests/pos/Assume.hs: -------------------------------------------------------------------------------- 1 | module Assume where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | {-@ assume foo :: {v:Bool | v} @-} 6 | foo = False 7 | 8 | bar = liquidAssertB foo 9 | -------------------------------------------------------------------------------- /tests/pos/AssumedRecursive.hs: -------------------------------------------------------------------------------- 1 | module AssumedRecursive where 2 | 3 | {-@ lazy foo @-} 4 | {-@ assume foo :: a -> a @-} 5 | foo :: a -> a 6 | foo f = foo f 7 | -------------------------------------------------------------------------------- /tests/pos/BangPatterns.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE BangPatterns #-} 2 | module BangPatterns where 3 | 4 | import Data.IORef 5 | 6 | import Language.Haskell.Liquid.Prelude 7 | 8 | foo :: IORef a -> IORef a 9 | {-@ foo :: x:IORef a -> {v:IORef a | v = x} @-} 10 | foo !x = x 11 | -------------------------------------------------------------------------------- /tests/pos/Bool0.hs: -------------------------------------------------------------------------------- 1 | module Bool0 where 2 | 3 | {-@ myhead :: {v:[a] | nonEmpty v} -> a @-} 4 | myhead (x:_) = x 5 | 6 | {-@ measure nonEmpty @-} 7 | nonEmpty :: [a] -> Bool 8 | nonEmpty (x:xs) = True 9 | nonEmpty [] = False 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/pos/Bool1.hs: -------------------------------------------------------------------------------- 1 | module Bool1 where 2 | 3 | {-@ baz :: x:Bool -> {v:Bool | v == x} @-} 4 | baz :: Bool -> Bool 5 | baz x = x 6 | -------------------------------------------------------------------------------- /tests/pos/Bool2.hs: -------------------------------------------------------------------------------- 1 | module Bool2 where 2 | 3 | 4 | {-@ gerb :: (Ord a) => x:a -> {v:a | x <= v } -> {v:a | x <= v} @-} 5 | gerb :: (Ord a) => a -> a -> a 6 | gerb x y = y 7 | 8 | 9 | moo = gerb False False 10 | -------------------------------------------------------------------------------- /tests/pos/CharLiterals.hs: -------------------------------------------------------------------------------- 1 | -- see #1286 2 | module CharLiterals where 3 | 4 | {-@ fails :: {v:Bool | v} @-} 5 | fails = 'a' == 'a' 6 | 7 | {-@ ok :: {v:Bool | v} @-} 8 | ok = "a" == "a" 9 | -------------------------------------------------------------------------------- /tests/pos/Comma.hs: -------------------------------------------------------------------------------- 1 | module Comma where 2 | 3 | {-@ measure mysnd @-} 4 | mysnd :: (a, b) -> b 5 | mysnd (_, y) = y 6 | 7 | {-@ foo :: x:Int -> {v:Int | v == x} @-} 8 | foo :: Int -> Int 9 | foo x = mysnd (x, x) 10 | 11 | -------------------------------------------------------------------------------- /tests/pos/CommentedOut.hs: -------------------------------------------------------------------------------- 1 | module CommentedOut where 2 | 3 | {- {-@ nats :: [Nat] @-} -} 4 | nats :: [Int] 5 | nats = [-1,0,1,2,3,4,5,6,7,8,9,10] 6 | 7 | -------------------------------------------------------------------------------- /tests/pos/Comprehension.hs: -------------------------------------------------------------------------------- 1 | module Comprehension where 2 | 3 | {-@ foo :: n:Int -> [{v:Nat | v <= n}] @-} 4 | foo :: Int -> [Int] 5 | foo n = [0 .. n] 6 | 7 | {-@ assume enumFromTo :: (Enum a) => lo:a -> hi:a -> [{v:a | lo <= v && v <= hi}] @-} 8 | -------------------------------------------------------------------------------- /tests/pos/CosPosTest.hs: -------------------------------------------------------------------------------- 1 | module CosPosTest where 2 | 3 | test :: Floating a => a -> a 4 | test x = cos x 5 | -------------------------------------------------------------------------------- /tests/pos/Csgordon_issue_296.hs: -------------------------------------------------------------------------------- 1 | module Csgordon_issue_296 where 2 | 3 | {-@ measure fwd_extends :: IO () -> IO () -> Bool @-} 4 | {-@ assume fwd_extends_refl :: m:IO () -> {v:Bool | (fwd_extends m m)} @-} 5 | fwd_extends_refl :: IO () -> Bool 6 | fwd_extends_refl = undefined 7 | -------------------------------------------------------------------------------- /tests/pos/Datacon1.hs: -------------------------------------------------------------------------------- 1 | module Datacon1 () where 2 | 3 | data Foo a = F a a a 4 | 5 | z :: Foo Int 6 | z = F 1 2 3 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/Datacon_inv.hs: -------------------------------------------------------------------------------- 1 | module Datacon_inv where 2 | 3 | data T = A | B 4 | 5 | {-@ invariant {v:T | (v = A || v = B)} @-} 6 | 7 | thisIsA = A 8 | thisIsB = B 9 | -------------------------------------------------------------------------------- /tests/pos/DependentPairsFun.hs: -------------------------------------------------------------------------------- 1 | module DependentPairsFun where 2 | 3 | 4 | {-@ ex :: (y::Int, () -> {v:() | 0 < y } ) 5 | -> (y::Int, {v:() | 0 < y}) 6 | @-} 7 | ex ::(Int,() -> ()) -> (Int,()) 8 | ex (y, pxToqxy) = (y,pxToqxy ()) 9 | -------------------------------------------------------------------------------- /tests/pos/Deptup1.pred: -------------------------------------------------------------------------------- 1 | assumep mkPair :: forall a b. forAll p:b(fld:a). a -> b -> Pair a b <

> 2 | -------------------------------------------------------------------------------- /tests/pos/Div000.hs: -------------------------------------------------------------------------------- 1 | module Div000 (bar) where 2 | 3 | {-@ mydiv :: Int -> {v:Int | v /= 0} -> Int @-} 4 | mydiv :: Int -> Int -> Int 5 | mydiv = undefined 6 | 7 | foo :: Int -> Int 8 | foo _ = 12 9 | 10 | bar :: Int -> Int 11 | bar m = mydiv m z where z = foo m 12 | -------------------------------------------------------------------------------- /tests/pos/Duplicate_bind.hs: -------------------------------------------------------------------------------- 1 | module Duplicate_bind where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | insert key value [] = [(key, value)] 6 | insert _ _ _ = unsafeError "" 7 | -------------------------------------------------------------------------------- /tests/pos/Even.hs: -------------------------------------------------------------------------------- 1 | module Even where 2 | 3 | {-@ notEven :: Int -> Even @-} 4 | notEven :: Int -> Int 5 | notEven x = x * 2 6 | -------------------------------------------------------------------------------- /tests/pos/Even0.hs: -------------------------------------------------------------------------------- 1 | module Even0 () where 2 | 3 | {-@ isEven :: n:Nat -> Bool / [n, 0]@-} 4 | {-@ isOdd :: m:Nat -> Bool / [m, 1] @-} 5 | isEven, isOdd :: Int -> Bool 6 | 7 | isEven 0 = True 8 | isEven n = isOdd $ n - 1 9 | 10 | isOdd k = not $ isEven k 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/pos/ExactGADT0.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE GADTs #-} 2 | 3 | {-@ LIQUID "--exact-data-con" @-} 4 | 5 | 6 | module ExactGADT0 where 7 | 8 | data Value a where 9 | VInt :: Int -> Value Int 10 | VBool :: Bool -> Value Bool 11 | -------------------------------------------------------------------------------- /tests/pos/ExactGADT1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-con" @-} 2 | 3 | {-# LANGUAGE GADTs #-} 4 | 5 | module ExactGADT1 where 6 | 7 | data Field typ where 8 | FldX :: Field Int 9 | FldY :: Field Int 10 | 11 | poogle = FldY 12 | -------------------------------------------------------------------------------- /tests/pos/ExpPosTest.hs: -------------------------------------------------------------------------------- 1 | module ExpPosTest where 2 | 3 | test :: Floating a => a -> a 4 | test x = exp x 5 | -------------------------------------------------------------------------------- /tests/pos/ExponentiationPosTest.hs: -------------------------------------------------------------------------------- 1 | module ExponentiationPosTest where 2 | 3 | test :: Floating a => a 4 | test = 3 ** (-1) 5 | 6 | test2 :: Floating a => a 7 | test2 = 0 ** 2 8 | -------------------------------------------------------------------------------- /tests/pos/Fail.hs: -------------------------------------------------------------------------------- 1 | module Fail where 2 | 3 | {-@ fail incr @-} 4 | {-@ incr :: x:Int -> {v:Int | x < v } @-} 5 | incr :: Int -> Int 6 | incr x = x 7 | 8 | {-@ fail unsafe @-} 9 | {-@ unsafe :: () -> { 0 == 1 } @-} 10 | unsafe :: () -> () 11 | unsafe _ = () 12 | -------------------------------------------------------------------------------- /tests/pos/FailName.hs: -------------------------------------------------------------------------------- 1 | module FailName where 2 | 3 | bar = fail 4 | where fail = foo 5 | foo = 3 -- undefined 6 | 7 | 8 | bar1 = fail () 9 | where fail = foo 10 | foo = undefined 11 | -------------------------------------------------------------------------------- /tests/pos/Foldr.hs: -------------------------------------------------------------------------------- 1 | module Foldr where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | import Data.List (foldl') 5 | 6 | foo :: a -> b -> c -> d 7 | foo = \_ _ _ -> unsafeError "False" 8 | 9 | bar :: p -> [(q, r)] -> p 10 | bar = foldr (\(k, v) -> foo k v) 11 | -------------------------------------------------------------------------------- /tests/pos/Foo.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | bar = 0 4 | 5 | {-@ assume ++ :: [a] -> [a] -> [a] @-} 6 | -------------------------------------------------------------------------------- /tests/pos/Grty2.hs: -------------------------------------------------------------------------------- 1 | module Grty2 () where 2 | 3 | {-@ foo :: {vv:[{v:[a]|((len v) = 1)}]|((len vv)= 1)} -> [[a]] @-} 4 | foo [[x]] = [[x]] 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/Grty3.hs: -------------------------------------------------------------------------------- 1 | module Grty3 () where 2 | 3 | {-@ bar :: (a, {v:[b]|((len v) = 1)}) -> b @-} 4 | bar (_, [x]) = x 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/Hex00.hs: -------------------------------------------------------------------------------- 1 | module Hex00 where 2 | 3 | foo :: Int -> Int -> Int 4 | foo x y = x + y 5 | 6 | {-@ foo :: {x:Int | x = 0x7} -> {y:Int | y = 0x8} -> {v:Int | v = 0xF} @-} 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/HigherOrderRecFun.hs: -------------------------------------------------------------------------------- 1 | module HigherOrderRecFun () where 2 | 3 | foo :: [a] -> (b -> c) -> (b -> c) 4 | foo [] f = f 5 | foo (x:xs) f = foo xs f 6 | 7 | -------------------------------------------------------------------------------- /tests/pos/Hole_fun.hs: -------------------------------------------------------------------------------- 1 | module Hole_fun (test) where 2 | 3 | inc :: Int -> Int 4 | inc x = x + 1 5 | 6 | {-@ app :: _ -> Nat -> Nat @-} 7 | app :: (Int -> Int) -> Int -> Int 8 | app f x = f x 9 | 10 | test = app inc 7 11 | -------------------------------------------------------------------------------- /tests/pos/IdNat.hs: -------------------------------------------------------------------------------- 1 | module IdNat where 2 | 3 | {-@ nat :: Nat @-} 4 | nat :: Int 5 | nat = id 0 -- (id (id (id (id 0)))) 6 | -------------------------------------------------------------------------------- /tests/pos/IdNat0.hs: -------------------------------------------------------------------------------- 1 | module IdNat0 where 2 | 3 | {-@ nat :: Nat @-} 4 | nat :: Int 5 | nat = idd 0 6 | 7 | idd :: a -> a 8 | idd = undefined 9 | -------------------------------------------------------------------------------- /tests/pos/Ignores.hs: -------------------------------------------------------------------------------- 1 | module Ignores where 2 | 3 | {-@ ignore inc @-} 4 | {-@ inc :: Nat -> Nat @-} 5 | inc :: Int -> Int 6 | inc x = x - 1 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/Implies.hs: -------------------------------------------------------------------------------- 1 | module Implies where 2 | 3 | {-@ inline implies @-} 4 | implies p q = (not p) || q 5 | 6 | -------------------------------------------------------------------------------- /tests/pos/Ite.hs: -------------------------------------------------------------------------------- 1 | module Ite () where 2 | 3 | {-@ assert myabs :: x:Int -> {v: Int | if x > 0 then v = x else v + x = 0 } @-} 4 | myabs :: Int -> Int 5 | myabs x | x > 0 = x 6 | | otherwise = (0 - x) 7 | -------------------------------------------------------------------------------- /tests/pos/Ite1.hs: -------------------------------------------------------------------------------- 1 | module Ite1 () where 2 | 3 | {-@ assert myabs :: x:Int -> {v: Int | v = (if x > 0 then x else (0 - x)) } @-} 4 | myabs :: Int -> Int 5 | myabs x | x > 0 = x 6 | | otherwise = (0 - x) 7 | -------------------------------------------------------------------------------- /tests/pos/Lex.hs: -------------------------------------------------------------------------------- 1 | -- TAG: termination 2 | 3 | module Lex (foo) where 4 | 5 | bar = foo [1, 2, 3] [2, 3, 4] 6 | 7 | {- decrease foo 1 2 @-} 8 | foo xs (y:ys) = foo xs ys 9 | foo (x:xs) ys = foo xs ys 10 | foo xs ys = xs 11 | -------------------------------------------------------------------------------- /tests/pos/Lib521.hs: -------------------------------------------------------------------------------- 1 | module Lib521 where 2 | 3 | {-@ measure size @-} 4 | {-@ size :: xs:[a] -> {v:Nat | v = size xs} @-} 5 | size :: [a] -> Int 6 | size [] = 0 7 | size (_:rs) = 1 + size rs 8 | -------------------------------------------------------------------------------- /tests/pos/Lit.hs: -------------------------------------------------------------------------------- 1 | module Lit where 2 | 3 | {-@ test :: {v:Int | v == 3} @-} 4 | test = length "cat" 5 | -------------------------------------------------------------------------------- /tests/pos/LocalSpec.hs: -------------------------------------------------------------------------------- 1 | module LocalSpec where 2 | 3 | import LocalSpecLib 4 | 5 | {-@ bar :: {x:Int | x > 99} -> {v:Int | v > 100 } @-} 6 | bar :: Int -> Int 7 | bar x = foo x 8 | -------------------------------------------------------------------------------- /tests/pos/LocalSpecLib.hs: -------------------------------------------------------------------------------- 1 | module LocalSpecLib (foo) where 2 | 3 | {-@ foo :: x:Int -> {v:Int | v > x } @-} 4 | foo :: Int -> Int 5 | foo x = go x 6 | 7 | {-@ go :: n:Int -> {v:Int | v = n + 1} @-} 8 | go :: Int -> Int 9 | go x = x + 1 10 | -------------------------------------------------------------------------------- /tests/pos/LogPosTest.hs: -------------------------------------------------------------------------------- 1 | module LogPosTest where 2 | 3 | test :: Floating a => a 4 | test = log 3 5 | -------------------------------------------------------------------------------- /tests/pos/LooLib.hs: -------------------------------------------------------------------------------- 1 | module LooLib ( module LooLibLib , plusTwo ) where 2 | 3 | import LooLibLib 4 | 5 | {-@ plusTwo :: x:Int -> {v:Int | v = x + 2} @-} 6 | plusTwo :: Int -> Int 7 | plusTwo = plusOne . plusOne 8 | 9 | -------------------------------------------------------------------------------- /tests/pos/LooLibLib.hs: -------------------------------------------------------------------------------- 1 | module LooLibLib (plusOne) where 2 | 3 | {-@ plusOne :: x:Int -> {v:Int| v = x + 1 } @-} 4 | plusOne :: Int -> Int 5 | plusOne x = x + 1 6 | -------------------------------------------------------------------------------- /tests/pos/MapTvCrash.hs: -------------------------------------------------------------------------------- 1 | module MapTvCrash (foo) where 2 | 3 | import Foreign.ForeignPtr 4 | 5 | {-@ foo :: FinalizerPtr a -> a @-} 6 | foo :: FinalizerPtr a -> a 7 | foo = undefined 8 | -------------------------------------------------------------------------------- /tests/pos/MaskError.hs: -------------------------------------------------------------------------------- 1 | module MaskError where 2 | 3 | {-@ assume error :: String -> a @-} 4 | 5 | foo :: Int -> Int 6 | foo _ = error "oh no" 7 | -------------------------------------------------------------------------------- /tests/pos/Maybe5.hs: -------------------------------------------------------------------------------- 1 | module Maybe5 where 2 | 3 | import Data.Maybe 4 | 5 | 6 | {-@ foo :: {x:_ | isJust x} -> a @-} 7 | foo :: Maybe a -> a 8 | foo x = fromJust x 9 | -------------------------------------------------------------------------------- /tests/pos/Meas00a.hs: -------------------------------------------------------------------------------- 1 | module Meas00a () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | prop0 = liquidAssertB True 6 | -------------------------------------------------------------------------------- /tests/pos/Meas2.hs: -------------------------------------------------------------------------------- 1 | module Meas2 (n) where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | mylen :: [a] -> Int 6 | mylen [] = 0 7 | mylen (_:xs) = 1 + mylen xs 8 | 9 | 10 | zs :: [Int] 11 | zs = [1..100] 12 | 13 | n = mylen zs 14 | 15 | -------------------------------------------------------------------------------- /tests/pos/Mod.hs: -------------------------------------------------------------------------------- 1 | module Mod where 2 | 3 | import qualified ModLib as M 4 | 5 | {-@ inc :: x:M.Goo -> {v: M.Goo | M.myg v > M.myg x} @-} 6 | inc (M.G x) = M.G (x + 1) 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/ModLib.hs: -------------------------------------------------------------------------------- 1 | module ModLib where 2 | 3 | data Goo = G Int 4 | 5 | {-@ measure myg :: ModLib.Goo -> Int 6 | myg (ModLib.G n) = n 7 | @-} 8 | 9 | {-@ inc :: x:Goo -> {v: Goo | (myg v) > (myg x)} @-} 10 | inc (G x) = G (x + 1) 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/pos/Monad2.hs: -------------------------------------------------------------------------------- 1 | module Monad2 () where 2 | 3 | goo c = return c 4 | 5 | foo = 6 | do x <- Just 1 7 | y <- goo 3 8 | return $ x + y 9 | -------------------------------------------------------------------------------- /tests/pos/Multi_pred_app_00.hs: -------------------------------------------------------------------------------- 1 | module Multi_pred_app_00 () where 2 | 3 | {-@ foo :: forall < p :: Int -> Bool 4 | , q :: Int -> Bool >. Int -> Int

@-} 5 | foo :: Int -> Int 6 | foo x = x 7 | -------------------------------------------------------------------------------- /tests/pos/Nats.hs: -------------------------------------------------------------------------------- 1 | module Nats where 2 | 3 | {-@ nats :: [Nat] @-} 4 | nats :: [Int] 5 | nats = [1,2,3,4,5,6,7,8,9,10] 6 | -------------------------------------------------------------------------------- /tests/pos/NoExhaustiveGuardsError.hs: -------------------------------------------------------------------------------- 1 | module NoExhaustiveGuardsError where 2 | 3 | {-@ LIQUID "--no-totality" @-} 4 | bar :: Int -> Int -> Int 5 | bar x y | x > y = 1 6 | | x <= y = 0 7 | -------------------------------------------------------------------------------- /tests/pos/Null.hs: -------------------------------------------------------------------------------- 1 | module Null where 2 | 3 | foo :: [a] -> [a] 4 | foo xs = if null xs then [] else tail xs 5 | -------------------------------------------------------------------------------- /tests/pos/NumRefl1.hs: -------------------------------------------------------------------------------- 1 | module NumRefl1 where 2 | 3 | {- 4 | The `define` should be propagated from NumRefl, otherwise the test fails 5 | with the same error. 6 | -} 7 | import NumRefl 8 | 9 | {-@ reflect toNum1 @-} 10 | toNum1 :: Num p => () -> p 11 | toNum1 _ = -2 12 | 13 | -------------------------------------------------------------------------------- /tests/pos/Pargs.hs: -------------------------------------------------------------------------------- 1 | module Pargs () where 2 | 3 | {-@ foo :: forall a

x1:a -> Bool>. 4 | (i:Int -> a

) -> {v:Int| v=0} 5 | -> a

6 | @-} 7 | 8 | foo :: (Int -> a) -> Int -> a 9 | foo f i = f i 10 | 11 | -------------------------------------------------------------------------------- /tests/pos/Partial_tycon.hs: -------------------------------------------------------------------------------- 1 | module Partial_tycon () where 2 | 3 | data Id a = Id a 4 | 5 | data Foo m a = Foo (m a) 6 | 7 | foo :: Foo Id a 8 | foo = undefined 9 | -------------------------------------------------------------------------------- /tests/pos/Poly3.hs: -------------------------------------------------------------------------------- 1 | module Poly3 (goo) where 2 | 3 | expand :: (a -> [b]) -> [a] -> [b] 4 | expand f [] = [] 5 | expand f (x:xs) = (f x) ++ (expand f xs) 6 | 7 | baz :: a -> [Int] 8 | baz _ = [0] 9 | 10 | goo = expand baz 11 | 12 | -------------------------------------------------------------------------------- /tests/pos/Poly3a.hs: -------------------------------------------------------------------------------- 1 | module Poly3a (goo) where 2 | 3 | expand f [] = [] 4 | expand f (x:xs) = (f x) ++ (expand f xs) 5 | 6 | baz :: a -> [Int] 7 | baz _ = [0] 8 | 9 | goo = expand baz 10 | 11 | -------------------------------------------------------------------------------- /tests/pos/Poly4.hs: -------------------------------------------------------------------------------- 1 | module Poly4 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x = choose 0 6 | 7 | baz y = y 8 | 9 | prop = liquidAssertB (baz True) 10 | -------------------------------------------------------------------------------- /tests/pos/Polyfun.hs: -------------------------------------------------------------------------------- 1 | module Polyfun () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | foo :: a -> [Int] 6 | foo f = [0] 7 | 8 | prop = all (\z -> liquidAssertB (z >= 0)) zs 9 | where zs = foo id 10 | -------------------------------------------------------------------------------- /tests/pos/PositivityCheck.hs: -------------------------------------------------------------------------------- 1 | module PositivityCheck where 2 | 3 | data Good1 a = Nil | Cons a (Good1 a) 4 | data Good2 a = Yes ((Good2 a -> Int) -> Int) 5 | 6 | data GoodRec1 a = YesRec1 (GoodRec2 a -> Int) 7 | data GoodRec2 a = YesRec2 (GoodRec1 a -> Int) 8 | 9 | -------------------------------------------------------------------------------- /tests/pos/Pragma0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--notermination" @-} 2 | 3 | module Pragma0 where 4 | 5 | 6 | -- an obviously non-terminating function 7 | zoo :: Int -> Int 8 | zoo x = zoo x 9 | -------------------------------------------------------------------------------- /tests/pos/Profcrasher.hs: -------------------------------------------------------------------------------- 1 | module Profcrasher () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x :: Int 6 | x = 4 7 | -------------------------------------------------------------------------------- /tests/pos/Propmeasure1.hs: -------------------------------------------------------------------------------- 1 | module Propmeasure1 where 2 | 3 | nil = [] 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/pos/QQTySig.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE QuasiQuotes #-} 2 | 3 | module QQTySig where 4 | 5 | import LiquidHaskell 6 | 7 | [lq| nats :: [{ v:Int | 0 <= v }] |] 8 | nats = [0,1,2,3,4,5,6,7,8,9,10] 9 | 10 | -------------------------------------------------------------------------------- /tests/pos/Recursion0.hs: -------------------------------------------------------------------------------- 1 | module Recursion0 where 2 | 3 | 4 | {-@ total :: Nat -> Nat @-} 5 | total :: Int -> Int 6 | total 0 = 0 7 | total n = 1 + total (n-1) 8 | 9 | -------------------------------------------------------------------------------- /tests/pos/ReflectAlias.hs: -------------------------------------------------------------------------------- 1 | -- See LH #1086 2 | 3 | {-# LANGUAGE ScopedTypeVariables #-} 4 | 5 | module ReflectAlias where 6 | 7 | type Val = Int 8 | 9 | {-@ reflect poo @-} 10 | poo :: Int -> Int 11 | poo y = (\(x :: Val) -> x + 1) y 12 | -------------------------------------------------------------------------------- /tests/pos/ReflectBooleanFunctions.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exactdc" @-} 2 | {-@ LIQUID "--higherorder" @-} 3 | module ReflectBooleanFunctions where 4 | 5 | 6 | {-@ reflect foo @-} 7 | foo :: (Int -> Bool) -> (Int -> Bool) -> Bool 8 | foo f g = (f 1) && (g 1) 9 | -------------------------------------------------------------------------------- /tests/pos/Resolve.hs: -------------------------------------------------------------------------------- 1 | module Resolve where 2 | 3 | import qualified ResolveA as RA 4 | import qualified ResolveB as RB 5 | 6 | 7 | {-@ x :: {v:RB.Bar | ((v = RB.B) && (NotA v))} @-} 8 | x = RB.B 9 | 10 | zebra :: Int 11 | zebra = 12 12 | -------------------------------------------------------------------------------- /tests/pos/ResolveB.hs: -------------------------------------------------------------------------------- 1 | module ResolveB where 2 | 3 | {-@ measure getFoo :: Foo -> Int 4 | getFoo (Foo x) = x 5 | @-} 6 | 7 | data Foo = Foo Int 8 | 9 | data Bar = A | B | C 10 | -------------------------------------------------------------------------------- /tests/pos/ResolveBLib.hs: -------------------------------------------------------------------------------- 1 | module ResolveBLib where 2 | 3 | {-@ measure getFoo :: Foo -> Int 4 | getFoo (Foo x) = x 5 | @-} 6 | 7 | data Foo = Foo Int 8 | 9 | data Bar = A | B | C 10 | -------------------------------------------------------------------------------- /tests/pos/SimplerNotation.hs: -------------------------------------------------------------------------------- 1 | module SimplerNotation () where 2 | 3 | {-@ myDiv :: x:Int -> y:{Int | y != 0} -> {v:Int | v = x / y} @-} 4 | myDiv :: Int -> Int -> Int 5 | myDiv = div 6 | -------------------------------------------------------------------------------- /tests/pos/SinPosTest.hs: -------------------------------------------------------------------------------- 1 | module SinPosTest where 2 | 3 | test :: Floating a => a -> a 4 | test x = sin x 5 | -------------------------------------------------------------------------------- /tests/pos/SqrtPosTest.hs: -------------------------------------------------------------------------------- 1 | module SqrtPosTest where 2 | 3 | test :: Floating a => a 4 | test = sqrt 2 5 | -------------------------------------------------------------------------------- /tests/pos/State.hquals: -------------------------------------------------------------------------------- 1 | 2 | qualif Snd( v : b_t, 3 | p : Pred b_t a, 4 | a : fix##40##41# a b): 5 | (papp2 p v (fst a)) 6 | 7 | qualif Fst( v : a, 8 | a : fix##40##41# a b): 9 | (v = fst a) 10 | 11 | -------------------------------------------------------------------------------- /tests/pos/State00.hs: -------------------------------------------------------------------------------- 1 | module State00 () where 2 | 3 | type State = Int 4 | data ST a b = Superb (b -> (a, b)) 5 | 6 | {-@ fresh :: ST {v:Int | v >= 0} {v:Int | v >= 0} @-} 7 | fresh :: ST Int Int 8 | fresh = Superb (\n -> (n, n+1)) 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/pos/String00.hs: -------------------------------------------------------------------------------- 1 | module String00 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | foo = "dog" 6 | 7 | prop1 = liquidAssertB (0 == 0) 8 | prop2 = liquidAssertB (1 /= 0) 9 | -------------------------------------------------------------------------------- /tests/pos/StringLit.hs: -------------------------------------------------------------------------------- 1 | module StringLit where 2 | 3 | {-@ foo :: {v:String | len v = 3} @-} 4 | foo = "foo" 5 | -------------------------------------------------------------------------------- /tests/pos/T1045.hs: -------------------------------------------------------------------------------- 1 | module T1045 where 2 | 3 | import T1045a 4 | 5 | foo :: Int -> Int 6 | foo x = x 7 | -------------------------------------------------------------------------------- /tests/pos/T1045.hs-boot: -------------------------------------------------------------------------------- 1 | module T1045 where 2 | 3 | foo :: Int -> Int 4 | -------------------------------------------------------------------------------- /tests/pos/T1045a.hs: -------------------------------------------------------------------------------- 1 | module T1045a where 2 | 3 | import {-# SOURCE #-} T1045 4 | 5 | bar = foo 6 | -------------------------------------------------------------------------------- /tests/pos/T1045aLib.hs: -------------------------------------------------------------------------------- 1 | module T1045aLib where 2 | 3 | import {-# SOURCE #-} T1045 4 | 5 | bar = foo 6 | -------------------------------------------------------------------------------- /tests/pos/T1085.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-cons" @-} 2 | 3 | module T1085 where 4 | 5 | {-@ data HEither a b = HLeft a | HRight b @-} 6 | data HEither a b = HLeft a | HRight b 7 | 8 | {-@ data HMaybe a = HJust a | HNothing @-} 9 | data HMaybe a = HJust a | HNothing 10 | -------------------------------------------------------------------------------- /tests/pos/T1198_1.hs: -------------------------------------------------------------------------------- 1 | module T1198_1 where 2 | 3 | {-@ data Tree [sz] @-} 4 | data Tree a = Bin | Node (Tree a) (Tree a) 5 | 6 | {-@ measure sz @-} 7 | sz :: Tree a -> Int 8 | sz Bin = 0 9 | sz (Node t1 t2) = 1 + sz t1 + sz t2 10 | -------------------------------------------------------------------------------- /tests/pos/T1198_2.hs: -------------------------------------------------------------------------------- 1 | module T1198_2 where 2 | 3 | {-@ data Tree [sz] @-} 4 | data Tree a = Bin | Node (Tree a) 5 | 6 | {-@ measure sz @-} 7 | sz :: Tree a -> Int 8 | sz Bin = 0 9 | sz (Node t1) = 1 + sz t1 10 | -------------------------------------------------------------------------------- /tests/pos/T1198_3.hs: -------------------------------------------------------------------------------- 1 | module T1198_3 where 2 | 3 | {-@ data Tree [sz] @-} 4 | data Tree = Bin | Node Tree Tree 5 | 6 | {-@ measure sz @-} 7 | sz :: Tree -> Int 8 | sz Bin = 0 9 | sz (Node t1 t2) = 1 + sz t1 + sz t2 10 | -------------------------------------------------------------------------------- /tests/pos/T1198_4.hs: -------------------------------------------------------------------------------- 1 | module T1198_4 where 2 | 3 | {-@ data Tree [sz] @-} 4 | data Tree a = Node (Tree a) (Tree a) 5 | 6 | {-@ measure sz @-} 7 | sz :: Tree a -> Int 8 | sz (Node t1 t2) = 1 + sz t1 + sz t2 9 | -------------------------------------------------------------------------------- /tests/pos/T1267.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--max-case-expand=0" @-} 2 | {-@ LIQUID "--exactdc" @-} 3 | 4 | module T1267 where 5 | 6 | data ABC = A | B | C 7 | 8 | foo :: Int -> ABC -> () 9 | foo 0 A = () 10 | foo x A | x /= 0 = () 11 | foo _ A = error " " 12 | foo _ t = () 13 | -------------------------------------------------------------------------------- /tests/pos/T1278.hs: -------------------------------------------------------------------------------- 1 | module T1278 where 2 | 3 | data List a = Nil | Cons a (List a) 4 | 5 | sz :: List a -> Int 6 | sz Nil = 0 7 | sz (Cons _ Nil) = 1 8 | sz (Cons _ (Cons _ l)) = 2 + sz l 9 | -------------------------------------------------------------------------------- /tests/pos/T1286.hs: -------------------------------------------------------------------------------- 1 | module T1286 where 2 | 3 | {-@ fails :: {v:Bool | v} @-} 4 | fails = 'a' == 'a' 5 | 6 | {-@ ok :: {v:Bool | v} @-} 7 | ok = "a" == "a" 8 | -------------------------------------------------------------------------------- /tests/pos/T1288.hs: -------------------------------------------------------------------------------- 1 | 2 | module T1288 where 3 | 4 | {-@ measure foo @-} 5 | foo :: () -> Int 6 | foo _ = 10 7 | 8 | {-@ blub :: {v:Int | v = 10} @-} 9 | blub = foo () 10 | -------------------------------------------------------------------------------- /tests/pos/T1289a.hs: -------------------------------------------------------------------------------- 1 | 2 | module T1289a where 3 | 4 | {-@ measure bintId @-} 5 | bintId :: Int -> Int 6 | bintId 0 = 0 7 | bintId x = 1 8 | 9 | {-@ zig :: n:Int -> { 0 <= bintId n && bintId n <= 1} @-} 10 | zig :: Int -> () 11 | zig 0 = () 12 | zig n = () 13 | 14 | -------------------------------------------------------------------------------- /tests/pos/T1461.hs: -------------------------------------------------------------------------------- 1 | 2 | module T1461 where 3 | 4 | import Data.List (sortBy) 5 | import qualified Data.List.NonEmpty as NE 6 | 7 | foo :: NE.NonEmpty a -> Int 8 | foo = NE.length 9 | -------------------------------------------------------------------------------- /tests/pos/T1543.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | module T1543 where 3 | 4 | foo :: (Int -> Int) -> (Int -> Int, ()) 5 | {-@ foo :: f:(Int -> Int) -> (g::(Int -> Int),{v:() | f == g}) @-} 6 | foo f = (f,()) 7 | -------------------------------------------------------------------------------- /tests/pos/T1547.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module T1547 where 4 | 5 | {-@ myfst :: () -> {v:((a,b) -> a) | v == fst } @-} 6 | myfst :: () -> (a,b) -> a 7 | myfst _ = fst 8 | -------------------------------------------------------------------------------- /tests/pos/T1556.hs: -------------------------------------------------------------------------------- 1 | module T1556 where 2 | 3 | {-@ type Alias a b = (a,b) @-} 4 | type Alias a b = (a,b) 5 | 6 | {-@ foo :: Alias (a,b) a @-} 7 | foo :: Alias (a,b) a 8 | foo = undefined 9 | -------------------------------------------------------------------------------- /tests/pos/T1603.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflect" @-} 2 | 3 | module T1603 where 4 | 5 | {-@ reflect rAnd @-} 6 | rAnd :: Bool 7 | rAnd = and [True,False,True] 8 | 9 | {-@ reflect rOr @-} 10 | rOr :: Bool 11 | rOr = or [True,False,True] 12 | 13 | -------------------------------------------------------------------------------- /tests/pos/T1642.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | {-# LANGUAGE GADTs #-} 3 | {-# LANGUAGE KindSignatures #-} 4 | 5 | module T1642 where 6 | 7 | data A :: * -> * where 8 | A :: Eq a => a -> () -> A a 9 | 10 | -------------------------------------------------------------------------------- /tests/pos/T1709.hs: -------------------------------------------------------------------------------- 1 | module T1709 where 2 | 3 | {-@ incr :: x:Int -> {v:Int | x < v } @-} 4 | incr :: Int -> Int 5 | incr x = x + 1 6 | 7 | {-@ fail decr @-} 8 | {-@ decr :: x:Int -> {v:Int | x < v } @-} 9 | decr :: Int -> Int 10 | decr x = x - 1 11 | -------------------------------------------------------------------------------- /tests/pos/T2404.hs: -------------------------------------------------------------------------------- 1 | module T2404 where 2 | 3 | 4 | {-@ lists :: (l::Int, {v:[Char] | len v = l}, {v:[Int] | len v = l}) @-} 5 | lists :: (Int, [Char], [Int]) 6 | lists = (3, "abc", [7, 8, 9]) -------------------------------------------------------------------------------- /tests/pos/T531.hs: -------------------------------------------------------------------------------- 1 | module T531 where 2 | 3 | {-@ 4 | data Foo = Foo { _getFoo :: Int } 5 | @-} 6 | data Foo = Foo { _getFoo :: Int } 7 | -------------------------------------------------------------------------------- /tests/pos/T598.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DeriveGeneric #-} 2 | 3 | module T598 where 4 | 5 | import GHC.Generics (Generic) 6 | import Control.DeepSeq (NFData(..)) 7 | 8 | data Point = Point 9 | { x :: Int 10 | } deriving (Generic) 11 | 12 | instance NFData Point 13 | -------------------------------------------------------------------------------- /tests/pos/TagBinder.hs: -------------------------------------------------------------------------------- 1 | module TagBinder () where 2 | 3 | data Foo a = F Int a 4 | 5 | {-@ data Foo a = F {tag :: Int, f :: a} @-} 6 | 7 | foo = F 8 | -------------------------------------------------------------------------------- /tests/pos/TerminationNum.hs: -------------------------------------------------------------------------------- 1 | module TerminationNum where 2 | 3 | {-@ fak2 :: (Ord a, Eq a, Num a) => y:{x: a | x >= 0} -> a /[y]@-} 4 | fak2 :: (Ord a, Eq a, Num a) => a -> a 5 | fak2 0 = 1 6 | fak2 x = x * fak2 (x - 1) 7 | -------------------------------------------------------------------------------- /tests/pos/Test0.hs: -------------------------------------------------------------------------------- 1 | module Test0 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | myabs x = if x > 0 then x else (0 - x) 6 | 7 | prop_abs = let n1 = choose 0 in 8 | liquidAssertB ((myabs n1) >= 0) 9 | -------------------------------------------------------------------------------- /tests/pos/Test00.hs: -------------------------------------------------------------------------------- 1 | module Test00 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | 6 | prop_abs :: Bool 7 | prop_abs = if x > 0 then baz x else False 8 | where 9 | x = choose 0 10 | 11 | baz gooberding = liquidAssertB (gooberding >= 0) 12 | -------------------------------------------------------------------------------- /tests/pos/Test000.hs: -------------------------------------------------------------------------------- 1 | module Test000 () where 2 | 3 | -- import Language.Haskell.Liquid.Prelude 4 | {-@ toss :: Bool @-} 5 | toss :: Bool 6 | toss = (undefined 0) > 10 7 | 8 | -------------------------------------------------------------------------------- /tests/pos/Test00_old.hs: -------------------------------------------------------------------------------- 1 | module Test00_old () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x = choose 0 6 | 7 | prop_abs = if x `gt` 0 then baz x else False 8 | 9 | baz :: Int -> Bool 10 | baz z = liquidAssertB (z `geq` 0) 11 | 12 | -------------------------------------------------------------------------------- /tests/pos/Test00b.hs: -------------------------------------------------------------------------------- 1 | module Test00b () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x = choose 0 6 | 7 | foo x = x 8 | 9 | prop_abs = if x > 0 then baz (foo x) else False 10 | 11 | baz :: (Num a, Ord a) => a -> Bool 12 | baz z = liquidAssertB (z > 0) 13 | -------------------------------------------------------------------------------- /tests/pos/Test1.hs: -------------------------------------------------------------------------------- 1 | module Test1 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | myabs x = if x > 0 then x else 0 - x 6 | 7 | n = choose 0 8 | 9 | prop_absf = liquidAssertB ((myabs n) >= 0) 10 | -------------------------------------------------------------------------------- /tests/pos/Test2.hs: -------------------------------------------------------------------------------- 1 | module Test2 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | myabs x = if x > 0 then x else 0 - x 6 | 7 | n = choose 0 8 | 9 | prop_absf = 10 | let zz = (myabs n) >= 0 in 11 | liquidAssertB zz 12 | -------------------------------------------------------------------------------- /tests/pos/Test761.hs: -------------------------------------------------------------------------------- 1 | module Test761 () where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x = choose 0 6 | 7 | prop_abs :: Bool 8 | prop_abs = if x > 0 then baz x else False 9 | 10 | baz gooberding = liquidAssertB (gooberding >= 0) 11 | -------------------------------------------------------------------------------- /tests/pos/TokenType.hs: -------------------------------------------------------------------------------- 1 | module TokenType where 2 | 3 | 4 | data TokenType = Foo | CChar 5 | 6 | 7 | {-@ bar :: Char @-} 8 | bar :: Char 9 | bar = undefined 10 | -------------------------------------------------------------------------------- /tests/pos/TopLevel.hs: -------------------------------------------------------------------------------- 1 | module TopLevel (bar) where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | foo b = liquidAssertB b 6 | 7 | bar = foo True 8 | -------------------------------------------------------------------------------- /tests/pos/TyExpr.hs: -------------------------------------------------------------------------------- 1 | module TyExpr where 2 | 3 | {-@ type Range Lo Hi = {v:Int | Lo <= v && v < Hi} @-} 4 | 5 | {-@ bow :: Range 0 100 @-} 6 | bow :: Int 7 | bow = 12 8 | -------------------------------------------------------------------------------- /tests/pos/TypeAlias.hs: -------------------------------------------------------------------------------- 1 | module TypeAlias where 2 | 3 | data Foo a b = Foo a b 4 | 5 | type Bar = Foo Int 6 | 7 | 8 | {-@ foo :: String @-} 9 | foo :: String 10 | foo = "mpla" 11 | 12 | {-@ bar :: Bar {v:Int | v = 2} @-} 13 | bar :: Bar Int 14 | bar = Foo 1 2 15 | -------------------------------------------------------------------------------- /tests/pos/Tyvar.hs: -------------------------------------------------------------------------------- 1 | module Tyvar () where 2 | 3 | {-@ foo :: Eq b => a -> b -> a @-} 4 | foo :: Eq b => a -> b -> a 5 | foo = undefined 6 | -------------------------------------------------------------------------------- /tests/pos/UnboxedTuples.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE MagicHash #-} 2 | {-# LANGUAGE UnboxedTuples #-} 3 | module UnboxedTuples where 4 | 5 | import GHC.Int 6 | 7 | foo = let (# x, y #) = (# 1#, 1# #) in I# x 8 | 9 | -------------------------------------------------------------------------------- /tests/pos/Words.hs: -------------------------------------------------------------------------------- 1 | 2 | module Words where 3 | 4 | import Data.Word 5 | 6 | {-@ foo :: {v:Word | v = 4} @-} 7 | foo :: Word 8 | foo = 4 9 | -------------------------------------------------------------------------------- /tests/pos/Words1.hs: -------------------------------------------------------------------------------- 1 | module Words1 where 2 | 3 | import Data.Word 4 | 5 | main = print (quotRem (4 :: Word8) 128) 6 | -------------------------------------------------------------------------------- /tests/pos/ZipW2.hs: -------------------------------------------------------------------------------- 1 | module ZipW2 where 2 | 3 | 4 | foo :: [Int] -> [Int] 5 | foo zs = zipWith (+) zs zs 6 | -------------------------------------------------------------------------------- /tests/pos/test000.hs.hquals: -------------------------------------------------------------------------------- 1 | qualif Foo(v: Int): v = 10 2 | -------------------------------------------------------------------------------- /tests/reflect/pos/ReflString0.hs: -------------------------------------------------------------------------------- 1 | 2 | -- cf https://github.com/ucsd-progsys/liquidhaskell/issues/1044 3 | 4 | module ReflString0 where 5 | 6 | {-@ reflect foo @-} 7 | {-@ foo :: x:_ -> {v:_ | v <=> x == "cat"} @-} 8 | foo :: String -> Bool 9 | foo x = x == "cat" 10 | 11 | -------------------------------------------------------------------------------- /tests/relational/neg/Abs.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Abs where 3 | 4 | abs :: Int -> Int 5 | abs x = if x < 0 then -x else x 6 | 7 | {-@ relational abs ~ abs :: {x1:Int -> Int ~ x2:Int -> Int 8 | | x1 < x2 :=> r1 x1 < r2 x2} @-} 9 | -------------------------------------------------------------------------------- /tests/relational/pos/Axiom.hs: -------------------------------------------------------------------------------- 1 | module Axiom where 2 | 3 | foo :: Int -> Int 4 | foo x = x 5 | 6 | bar :: Int -> Int 7 | bar x = x 8 | 9 | {-@ relational foo ~ bar :: { x1:Int -> Int ~ x2:Int -> Int 10 | | x1 = x2 |- true :=> r1 x1 = r2 x2 } @-} 11 | -------------------------------------------------------------------------------- /tests/spec/pos/BS1.hs: -------------------------------------------------------------------------------- 1 | 2 | import Data.ByteString.Lazy as LB 3 | 4 | 5 | foo z = LB.pack z 6 | 7 | {-@ bar :: _ -> {v:_ | v >= 0} @-} 8 | bar z = LB.length z 9 | 10 | -------------------------------------------------------------------------------- /tests/spec/pos/Compose.hs: -------------------------------------------------------------------------------- 1 | {-@ incr :: x:_ -> {v:_ | v = x + 1} @-} 2 | incr :: Int -> Int 3 | incr x = x + 1 4 | 5 | {-@ incr2 :: x:_ -> {v:_ | v = x + 2} @-} 6 | incr2 = incr . incr 7 | 8 | -------------------------------------------------------------------------------- /tests/spec/pos/Compose1.hs: -------------------------------------------------------------------------------- 1 | -- override the input spec 2 | {-@ assume GHC.Base.. :: (b -> c) -> (a -> b) -> a -> c @-} 3 | 4 | {-@ incr :: Nat -> Nat @-} 5 | incr :: Int -> Int 6 | incr x = x + 1 7 | 8 | {-@ incr2 :: Nat -> Nat @-} 9 | incr2 = incr . incr 10 | -------------------------------------------------------------------------------- /tests/stack_driver/driver.hs: -------------------------------------------------------------------------------- 1 | import Test.Build 2 | import Test.Options 3 | 4 | main :: IO () 5 | main = program stackTestEnv stackRun =<< parseOptions 6 | -------------------------------------------------------------------------------- /tests/tasty/Main.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Test.Tasty 4 | import ErrorFilterReportTests 5 | 6 | main :: IO () 7 | main = defaultMain tests 8 | 9 | tests :: TestTree 10 | tests = testGroup "Tests" 11 | errorFilterReportTests 12 | -------------------------------------------------------------------------------- /tests/terminate/neg/Even.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Even () where 3 | 4 | {-@ isEven, isOdd :: Nat -> Bool @-} 5 | isEven :: Int -> Bool 6 | isEven 0 = True 7 | isEven n = isOdd $ n 8 | 9 | isOdd 0 = False 10 | isOdd m = isEven $ m - 1 11 | -------------------------------------------------------------------------------- /tests/terminate/neg/Rename.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Rename where 3 | 4 | foo x = let bar = foo in bar x 5 | -------------------------------------------------------------------------------- /tests/terminate/neg/T1404_0.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module T1404_0 where 3 | 4 | {-@ absurd :: {False} @-} 5 | absurd :: a 6 | absurd = let loop x = loop x in 7 | loop () 8 | 9 | {-@ oneIsTwo :: {1 == 2} @-} 10 | oneIsTwo :: () 11 | oneIsTwo = absurd 12 | -------------------------------------------------------------------------------- /tests/terminate/neg/T745.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | 3 | module T745 where 4 | 5 | foo :: () -> () 6 | foo () = foo () 7 | -------------------------------------------------------------------------------- /tests/terminate/neg/Term00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | -- NO PRAGMA version of tests/pos/pragma0.hs 3 | -- an obviously non-terminating function 4 | 5 | module Term00 where 6 | 7 | 8 | zoo :: Int -> Int 9 | zoo 0 = 0 10 | zoo x = zoo x 11 | -------------------------------------------------------------------------------- /tests/terminate/neg/Total00.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--expect-any-error" @-} 2 | module Total00 where 3 | 4 | foo :: Int -> Int 5 | foo 0 = 0 6 | foo 1 = 1 7 | -------------------------------------------------------------------------------- /tests/terminate/neg/Total02.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -Wno-missing-fields #-} 2 | {-@ LIQUID "--expect-any-error" @-} 3 | -- test recConError 4 | module Total02 where 5 | 6 | data Foo = Foo {a :: Int, b :: Int} 7 | 8 | foo :: Foo 9 | foo = Foo {a = 1} 10 | -------------------------------------------------------------------------------- /tests/terminate/pos/List00_str.hs: -------------------------------------------------------------------------------- 1 | 2 | module List00_str where 3 | 4 | lmap f [] = [] 5 | lmap f (x:xs) = f x : lmap f xs 6 | 7 | lref = go [] 8 | where 9 | go acc [] = acc 10 | go acc (x:xs) = go (x:acc) xs 11 | -------------------------------------------------------------------------------- /tests/terminate/pos/List05_local.hs: -------------------------------------------------------------------------------- 1 | 2 | module List05_local where 3 | 4 | rev = go [] 5 | where 6 | go :: [a] -> [a] -> [a] 7 | go acc [] = acc 8 | go acc (x:xs) = go (x:acc) xs 9 | -------------------------------------------------------------------------------- /tests/terminate/pos/StructSecondArg.hs: -------------------------------------------------------------------------------- 1 | 2 | module StructSecondArg where 3 | 4 | data Peano = Z | S Peano 5 | 6 | addToInt :: Int -> Peano -> Int 7 | addToInt n Z = n 8 | addToInt n (S p) = addToInt (n + 1) p 9 | -------------------------------------------------------------------------------- /tests/terminate/pos/Sum.hs: -------------------------------------------------------------------------------- 1 | 2 | module Sum where 3 | 4 | ssum :: Num a => [a] -> a 5 | ssum [] = 0 6 | ssum [x] = x 7 | ssum (x:xs) = x + ssum xs 8 | -------------------------------------------------------------------------------- /tests/terminate/pos/T1396_0.hs: -------------------------------------------------------------------------------- 1 | module T1396_0 where 2 | 3 | data Map k 4 | = Leaf 5 | | Node k (Map k) 6 | 7 | foo :: (Ord k) => Map k -> k -> () 8 | foo (Node k l) key 9 | | key == k = () 10 | | otherwise = foo l key 11 | foo Leaf _ = () 12 | -------------------------------------------------------------------------------- /tests/terminate/pos/Term00.hs: -------------------------------------------------------------------------------- 1 | 2 | module Term00 where 3 | 4 | zoo :: Int -> Int 5 | zoo n 6 | | 0 < n = n + zoo (n-1) 7 | | otherwise = 0 8 | -------------------------------------------------------------------------------- /tests/tmp/T777.hs: -------------------------------------------------------------------------------- 1 | module Goo where 2 | 3 | {-@ instance measure glub @-} 4 | glub :: [Int] -> Bool 5 | glub [] = True 6 | glub (x:xs) = ((x > 0) && (glub xs)) 7 | -------------------------------------------------------------------------------- /tests/todo/AALib.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exactdc" @-} 2 | 3 | module AALib where 4 | 5 | data Foo a b = Foo {fooA :: a, fooB :: b} | Bar 6 | 7 | 8 | 9 | {-@ measure isFoo @-} 10 | isFoo :: Foo a b -> Bool 11 | isFoo (Foo _ _)= True 12 | isFoo Bar = False 13 | -------------------------------------------------------------------------------- /tests/todo/AbsRef.hs: -------------------------------------------------------------------------------- 1 | module AbsRef where 2 | 3 | data F a = F a 4 | {-@ data F a

Prop> = F (x :: a)@-} 5 | 6 | 7 | 8 | {-@ foo :: F <{\v -> true}, {\v -> true}> Int @-} 9 | foo :: F Int 10 | foo = F 5 -------------------------------------------------------------------------------- /tests/todo/Aliases.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | {-@ type Foos = [Foo] @-} 4 | 5 | {-@ type Foo = {v:Int | vv > 0} @-} 6 | 7 | foo :: [Int] 8 | {-@ foo :: Foos @-} 9 | foo = [] 10 | -------------------------------------------------------------------------------- /tests/todo/AxiomBug.hs: -------------------------------------------------------------------------------- 1 | module Nats where 2 | 3 | {-@ poo :: {v:Int | v == 0 } @-} 4 | poo :: Int 5 | poo = 1 6 | 7 | data Peano = Z 8 | 9 | {-@ axiomatize zero @-} 10 | zero :: Peano 11 | zero = Z 12 | 13 | goober :: String 14 | goober = "I am a cat" 15 | -------------------------------------------------------------------------------- /tests/todo/CheckProofs.hs: -------------------------------------------------------------------------------- 1 | import Language.Haskell.Liquid.ProofCombinators 2 | 3 | 4 | {-@ foo :: () -> Proof @-} 5 | foo :: () -> Proof 6 | foo _ 7 | = 1 8 | ==. 2 9 | ==. 3 10 | *** QED -------------------------------------------------------------------------------- /tests/todo/Class4Import.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE ScopedTypeVariables #-} 2 | {-@ LIQUID "--no-termination" @-} 3 | 4 | module Class4Import where 5 | 6 | import Class4Lib 7 | 8 | instance Frog () where 9 | -------------------------------------------------------------------------------- /tests/todo/Class4Lib.hs: -------------------------------------------------------------------------------- 1 | module Class4Lib where 2 | 3 | {-@ class Pos s where 4 | allPos :: s a -> Bool 5 | @-} 6 | class Pos s where 7 | allPos :: s a -> Bool 8 | -------------------------------------------------------------------------------- /tests/todo/CmpBug.hs: -------------------------------------------------------------------------------- 1 | module Fixme where 2 | 3 | zipWith :: (Char -> Char -> a) -> b -> b -> [a] 4 | zipWith f = zipWith' ((. w2c) . f . w2c) 5 | 6 | zipWith' :: (b -> b -> a) -> c -> c -> [a] 7 | zipWith' = undefined 8 | 9 | w2c :: a -> Char 10 | w2c = undefined -------------------------------------------------------------------------------- /tests/todo/FldBug.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | {-@ data Foo = F { thing :: Nat } @-} 4 | data Foo = F { thing :: Int } 5 | 6 | 7 | {-@ bar :: Foo -> Nat @-} 8 | bar z = thing z 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/todo/ImportReflected.hs: -------------------------------------------------------------------------------- 1 | module ImportedReflect where 2 | 3 | import BLib 4 | 5 | {-@ theorem :: x:Bar -> {bar x = bar x} @-} 6 | theorem :: Bar -> () 7 | theorem _ = () 8 | -------------------------------------------------------------------------------- /tests/todo/IncrLib.hs: -------------------------------------------------------------------------------- 1 | module IncrLib (incr) where 2 | 3 | 4 | {-@ axiomatize incr @-} 5 | incr :: Int -> Int 6 | incr x = x + 1 7 | -------------------------------------------------------------------------------- /tests/todo/InfixClient.hs: -------------------------------------------------------------------------------- 1 | 2 | {-@ LIQUID "--ple" @-} 3 | 4 | import InfixLib 5 | 6 | -- GRRR... 7 | {- infix +++ @-} 8 | 9 | {-@ silly :: x:Int -> { x +++ 10 == x + 20} @-} 10 | silly :: Int -> () 11 | silly _ = () 12 | 13 | -------------------------------------------------------------------------------- /tests/todo/InfixLib.hs: -------------------------------------------------------------------------------- 1 | module InfixLib where 2 | 3 | {-@ infix +++ @-} 4 | {-@ reflect +++ @-} 5 | (+++) :: Int -> Int -> Int 6 | a +++ b = a + b + 10 7 | 8 | -------------------------------------------------------------------------------- /tests/todo/Invariants2.hs: -------------------------------------------------------------------------------- 1 | module Invariants where 2 | 3 | {-@ measure sum :: [Int] -> Nat 4 | sum() = 0 5 | sum(x:xs) = x + (sum xs) 6 | @-} 7 | 8 | 9 | {-@ good :: xs:[Int] -> {v:[Int] | (sum xs) >= 0} @-} 10 | good :: [Int] -> [Int] 11 | good x = x 12 | -------------------------------------------------------------------------------- /tests/todo/LocalSpecImport.hs: -------------------------------------------------------------------------------- 1 | module LocalSpecImport where 2 | 3 | import LocalSpecLib 4 | 5 | {-@ baz :: Nat -> Nat @-} 6 | baz :: Int -> Int 7 | baz x = x 8 | -------------------------------------------------------------------------------- /tests/todo/LocalSpecTyVar.hs: -------------------------------------------------------------------------------- 1 | module LocalSpecTyVar where 2 | 3 | foo = go 4 | where 5 | {-@ go :: xs:[a] -> {v:[a] | (len v) > (len xs)} @-} 6 | go [] = [] 7 | go (x:xs) = x : go xs 8 | -------------------------------------------------------------------------------- /tests/todo/Measure.hs: -------------------------------------------------------------------------------- 1 | module Measure where 2 | 3 | 4 | 5 | data Foo a = F a 6 | 7 | {-@ measure foo :: a -> Int @-} 8 | 9 | {-@ measure bar :: (Foo a) -> Bool 10 | bar(F xs) = (foo xs) @-} 11 | -------------------------------------------------------------------------------- /tests/todo/MeasureImport.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exactdc" @-} 2 | 3 | import AALib 4 | 5 | {-@ lazy bar @-} 6 | {-@ bar :: Foo a b -> {v:Foo a b | isFoo v} @-} 7 | bar :: Foo a b -> Foo a b 8 | bar x | isFoo x 9 | = x 10 | bar x = bar x 11 | -------------------------------------------------------------------------------- /tests/todo/MissingAbsRefArgs.hs: -------------------------------------------------------------------------------- 1 | module Fixme where 2 | 3 | 4 | -- foo :: [a] -> () 5 | {- foo :: [{v:a | v = 5}] -> () @-} 6 | -- foo _ = () 7 | 8 | 9 | bar :: a -> b -> a 10 | {-@ bar :: forall

b -> Bool>. x:a -> {xx:b

| xx > xx} -> a @-} 11 | bar x y = x 12 | -------------------------------------------------------------------------------- /tests/todo/NoInlines.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | foo :: IO () 4 | foo = 5 | if True 6 | then return () 7 | else return () 8 | -------------------------------------------------------------------------------- /tests/todo/Parse.hs: -------------------------------------------------------------------------------- 1 | module Fixme where 2 | 3 | 4 | data L a 5 | = C {x :: a , xs :: L a} 6 | 7 | {-@ data L a 8 | = C { x:: a , xs :: L a} 9 | @-} 10 | -------------------------------------------------------------------------------- /tests/todo/Parse1.hs: -------------------------------------------------------------------------------- 1 | module BadParse where 2 | 3 | 4 | {-@ test :: v:a -> (r:a, l:a) @-} 5 | test x = (x, x) 6 | -------------------------------------------------------------------------------- /tests/todo/QualifCheck.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | {-@ qualif Foo(v:a, x:List a) : (Set_mem v (listElts xs)) @-} 4 | 5 | {-@ foo :: Nat -> Nat @-} 6 | foo :: Int -> Int 7 | foo x = x 8 | 9 | -------------------------------------------------------------------------------- /tests/todo/RefinedData.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | data F = F {f1 :: Int, f2 :: Bool} 4 | 5 | {-@ data F = F {f2 :: Bool, f1 :: Int} @-} 6 | -------------------------------------------------------------------------------- /tests/todo/SMTDiverge.hs: -------------------------------------------------------------------------------- 1 | module Chunks where 2 | 3 | {-@ go :: Nat -> {v:Int | 1 < v} -> () @-} 4 | go :: Int -> Int -> () 5 | go d n 6 | | d <= n = () 7 | | otherwise = go (d `div` n) n -------------------------------------------------------------------------------- /tests/todo/T1037A.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--higherorder" @-} 2 | {-@ LIQUID "--exactdc" @-} 3 | 4 | module T1037A where 5 | 6 | import Language.Haskell.Liquid.ProofCombinators 7 | import qualified T1037C 8 | import qualified T1037B 9 | 10 | -------------------------------------------------------------------------------- /tests/todo/T1037C.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TypeFamilies #-} 2 | module T1037C where 3 | 4 | import Language.Haskell.Liquid.ProofCombinators 5 | 6 | class Generic a where 7 | type Rep a :: * -> * 8 | from :: a -> Rep a x 9 | to :: Rep a x -> a 10 | -------------------------------------------------------------------------------- /tests/todo/T1278.1.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--exact-data-cons" @-} 2 | module Term where 3 | 4 | {-@ data Tree [sz] @-} 5 | data Tree a = Tip | Node (Tree a, Tree a) 6 | 7 | {-@ measure sz @-} 8 | sz :: Tree a -> Int 9 | sy Tip = 0 10 | sz (Node (t1, t2)) = 1 + sz t1 + sz t2 11 | -------------------------------------------------------------------------------- /tests/todo/T1326B.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | 3 | module T1326B where 4 | 5 | import T1326A 6 | 7 | data Program l = PHole | Pg {pTerm :: Term l } 8 | -------------------------------------------------------------------------------- /tests/todo/T1326C.hs: -------------------------------------------------------------------------------- 1 | module T1326C where 2 | 3 | import T1326B 4 | 5 | {-@ measure terminates :: Program l -> Bool @-} 6 | -------------------------------------------------------------------------------- /tests/todo/T765.hs: -------------------------------------------------------------------------------- 1 | -- | issue #765 we get complete gibberish for inferred types 2 | -- * nothing for 'gunk' 3 | -- * {v = 1} for `z` 4 | 5 | module Bar where 6 | 7 | {-@ bar :: Nat -> Nat @-} 8 | bar :: Int -> Int 9 | bar z = let gunk = z + 1 10 | in gunk 11 | -------------------------------------------------------------------------------- /tests/todo/UnboundSigs.hs: -------------------------------------------------------------------------------- 1 | module DependeTypes where 2 | 3 | 4 | 5 | data MI s 6 | = Small { mi_input :: String } 7 | 8 | 9 | {-@ Small :: forall s. {v:String | s == v } -> MI s @-} 10 | -------------------------------------------------------------------------------- /tests/todo/UnboundVarInAssume1.hs: -------------------------------------------------------------------------------- 1 | a :: Int 2 | a = 0 3 | 4 | {-@ assume b :: { b : Int | a < b } @-} 5 | b :: Int 6 | b = 1 7 | 8 | {-@ 9 | f :: a : Int -> { b : Int | a < b } -> () 10 | @-} 11 | f :: Int -> Int -> () 12 | f _ _ = () 13 | 14 | g :: () 15 | g = f a b -------------------------------------------------------------------------------- /tests/todo/UnfoldDataCons.hs: -------------------------------------------------------------------------------- 1 | 2 | {-@ boo :: [{v:a | false }] -> {v:[a] | len v == 0 } @-} 3 | boo :: [a] -> [a] 4 | boo [] = [] 5 | boo (x:xs) = (x:xs) 6 | 7 | 8 | {-@ foo :: [{v:a | false }] -> {v:[a] | len v == 0 } @-} 9 | foo :: [a] -> [a] 10 | foo x = x 11 | -------------------------------------------------------------------------------- /tests/todo/Unsound.hs: -------------------------------------------------------------------------------- 1 | module Unsound where 2 | 3 | {-@ assume magic :: {v:() | false} @-} 4 | magic :: () 5 | magic = undefined 6 | 7 | bar = head [] -------------------------------------------------------------------------------- /tests/todo/UseBound.hs: -------------------------------------------------------------------------------- 1 | module UseBound where 2 | 3 | import ImportBoundLib 4 | 5 | -- This crashes because the type of `by` has a bound Chain that 6 | -- is unknown at import 7 | 8 | myby = by 9 | -------------------------------------------------------------------------------- /tests/todo/aliasConst.hs: -------------------------------------------------------------------------------- 1 | module Foo where 2 | 3 | -- TODO: Expressions inside applications of type and predicate aliases. 4 | 5 | {-@ predicate Rng Lo V Hi = (Lo <= V && V < Hi) @-} 6 | 7 | {-@ bog :: {v:Int | (Rng 0 v 10)} @-} 8 | bog :: Int 9 | bog = 5 10 | -------------------------------------------------------------------------------- /tests/todo/cases.hs: -------------------------------------------------------------------------------- 1 | module Zoo where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | data L a = C a (L a) | N | C2 a a (L a) 6 | 7 | bob (C x _) = x 8 | bob _ = liquidError "asdasd" 9 | -------------------------------------------------------------------------------- /tests/todo/err12.hs: -------------------------------------------------------------------------------- 1 | module BareCrash where 2 | 3 | {-@ measure isReal :: Space -> Prop 4 | isReal (Null) = false 5 | isReal (Rreal pv n) = true 6 | @-} 7 | 8 | 9 | data Space = Null | Real Int Int 10 | deriving (Show, Eq) 11 | -------------------------------------------------------------------------------- /tests/todo/err13.hs: -------------------------------------------------------------------------------- 1 | {-@ plus :: x:a -> y:a -> {v:a | v = x} @-} 2 | plus :: a -> a -> a 3 | plus = undefined -------------------------------------------------------------------------------- /tests/todo/err4.hs: -------------------------------------------------------------------------------- 1 | -- | Error Message Test: liquid type error 2 | 3 | module Err0 where 4 | 5 | {-@ zonk :: {v:Int | v = 0} @-} 6 | zonk = (12 :: Int) 7 | 8 | {-@ tonk :: {v:Int | v = 0} @-} 9 | tonk = (45 :: Int) 10 | -------------------------------------------------------------------------------- /tests/todo/err5.hs: -------------------------------------------------------------------------------- 1 | module Test0 where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | x = choose 0 6 | 7 | prop_abs = if x > 0 then baz x else False 8 | 9 | gob z = liquidAssertB (z `geq` 10) 10 | 11 | baz z = liquidAssertB (z `geq` 100) 12 | -------------------------------------------------------------------------------- /tests/todo/err6.hs: -------------------------------------------------------------------------------- 1 | -- | Error Message Test: liquid type error 2 | 3 | module Err0 where 4 | 5 | {-@ zonk :: {v:Int | v = z} @-} 6 | zonk = (12 :: Int) 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/todo/err7.hs: -------------------------------------------------------------------------------- 1 | -- | Error Message Test: liquid type error 2 | 3 | module Err0 where 4 | 5 | {-@ tonk :: {v:Int | (Prop v) = v } @-} 6 | tonk = (12 :: Int) 7 | 8 | -------------------------------------------------------------------------------- /tests/todo/err8.hs: -------------------------------------------------------------------------------- 1 | module Blank where 2 | 3 | -- instead of "ERROR ERROR ERROR" fail GRACEFULLY when spec has unknown var 4 | 5 | {-@ zoo :: Nat @-} 6 | 7 | {-@ x :: Poo @-} 8 | x :: Int 9 | x = 12 10 | -------------------------------------------------------------------------------- /tests/todo/false.hs: -------------------------------------------------------------------------------- 1 | 2 | {-@ diverge :: Int -> {false} @-} 3 | {-@ lazy diverge @-} 4 | diverge :: Int -> Int 5 | diverge n = diverge n 6 | 7 | {-@ one_eq_two :: { 1 == 2 } @-} 8 | one_eq_two = diverge 0 9 | -------------------------------------------------------------------------------- /tests/todo/funrec.hs: -------------------------------------------------------------------------------- 1 | module Foo () where 2 | 3 | data F a = F { f :: Int -> a } 4 | 5 | {-@ data F a = F { f :: Nat -> a } @-} 6 | -------------------------------------------------------------------------------- /tests/todo/intP.hs: -------------------------------------------------------------------------------- 1 | module Qoo where 2 | 3 | {-@ intid :: forall Bool>. i: Int -> Int @-} 4 | intid :: Int -> Int 5 | intid i = i 6 | 7 | -------------------------------------------------------------------------------- /tests/todo/liftbug.hs: -------------------------------------------------------------------------------- 1 | module AVL where 2 | 3 | data Tree = Nil | Tree Int Tree Tree 4 | 5 | {-@ measure height @-} 6 | height :: Tree -> Int 7 | height Nil = 0 :: Int 8 | height (Tree _ l r) = (if height l > height r then 1 + height l else 1 + height r) 9 | 10 | -------------------------------------------------------------------------------- /tests/todo/read.hs: -------------------------------------------------------------------------------- 1 | module Read where 2 | 3 | import Language.Haskell.Liquid.Prelude 4 | 5 | data Foo = Foo deriving Read 6 | 7 | bad = liquidAssertB (0 == 1) 8 | bad' = liquidAssert (0 == 1) True 9 | -------------------------------------------------------------------------------- /typeclass-tests/Data/All.hs: -------------------------------------------------------------------------------- 1 | module Data.All where 2 | data All = All {getAll :: Bool} 3 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Any.hs: -------------------------------------------------------------------------------- 1 | module Data.Any where 2 | data Any = Any {getAny :: Bool} 3 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Dual.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE RankNTypes #-} 2 | {-@ LIQUID "--reflection" @-} 3 | {-@ LIQUID "--ple" @-} 4 | 5 | 6 | module Data.Dual where 7 | 8 | {-@ data Dual a = Dual {getDual :: a} @-} 9 | data Dual a = Dual {getDual :: a} 10 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Either.hs: -------------------------------------------------------------------------------- 1 | module Data.Either where 2 | {-@ data Either l r = Left l | Right r @-} 3 | data Either l r = Left l | Right r 4 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Endo.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | module Data.Endo where 3 | 4 | {-@ data Endo a = Endo {appEndo :: a -> a} @-} 5 | data Endo a = Endo {appEndo :: a -> a} 6 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Functor/Const.hs: -------------------------------------------------------------------------------- 1 | module Data.Functor.Const where 2 | 3 | data Const a b = Const {getConst :: a} 4 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Functor/State.hs: -------------------------------------------------------------------------------- 1 | module Data.Functor.State where 2 | 3 | {-@ data State s a = State {runState :: s -> (a,s)} @-} 4 | data State s a = State {runState :: s -> (a,s)} 5 | -------------------------------------------------------------------------------- /typeclass-tests/Data/PNat.hs: -------------------------------------------------------------------------------- 1 | module Data.PNat where 2 | data PNat = Z | S PNat 3 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Proxy.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | {-@ LIQUID "--ple" @-} 3 | module Data.Proxy where 4 | 5 | import Prelude hiding ( foldr 6 | ) 7 | 8 | data Proxy a = Proxy 9 | 10 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Reader.hs: -------------------------------------------------------------------------------- 1 | module Data.Reader where 2 | 3 | data Reader r a = Reader {runReader :: r -> a} 4 | 5 | -------------------------------------------------------------------------------- /typeclass-tests/Data/Successors.hs: -------------------------------------------------------------------------------- 1 | {-@ LIQUID "--reflection" @-} 2 | {-@ LIQUID "--ple" @-} 3 | {-# LANGUAGE RankNTypes #-} 4 | {-# LANGUAGE ScopedTypeVariables #-} 5 | module Data.Successors where 6 | import Data.List 7 | 8 | data Succs a = Succs a (List a) 9 | --------------------------------------------------------------------------------