Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write an overview of liquid-fixpoint #543

Open
facundominguez opened this issue Apr 8, 2022 · 1 comment
Open

Write an overview of liquid-fixpoint #543

facundominguez opened this issue Apr 8, 2022 · 1 comment

Comments

@facundominguez
Copy link
Collaborator

facundominguez commented Apr 8, 2022

The README says this much

This package implements a Horn-Clause/Logical Implication constraint solver used for various Liquid Types. The solver uses SMTLIB2 to implement an algorithm similar to: ...

which I think is not quite sufficient to get people excited about it. liquid-fixpoint caught me only after I learned about the PLE algorithm, and then REST, I do not understand elim as well, but I regard it essential to deal with abstract predicates in LH and inference of refinement predicates in general.

When I explain liquid-fixpoint to someone, I say it does three things:

  1. It infers the refinement types of your program
  2. It does the unfolding of functions in your constraints to prove them
  3. It does the rewriting of your expressions using lemmas in the environment

I think these points, together with pointers to larger explanations, would be more compelling.

Ideally, I'd like to have a first defense of blogposts giving overviews for each algorithm, followed by a second defense with the academic publications. We already have the publications. Perhaps we have some of the blogposts too and we just need to put it all together, or perhaps there is some more writing to do.

@ranjitjhala
Copy link
Member

ranjitjhala commented Apr 8, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants