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

Inconsistent qualifiers when explicitly annotating a definition with a forall #1189

Closed
tchajed opened this issue Aug 10, 2017 · 2 comments
Closed

Comments

@tchajed
Copy link
Contributor

tchajed commented Aug 10, 2017

You can't annotate a let binding with a formula because of an automatic logic annotation:

module Logic_qual

val prop : Type0
let prop = forall (_:unit). True
(* Inconsistent qualifier annotations on prop; Expected {}, got {logic} *)
module Logic_qual2

logic val prop : Type0
let prop = forall (_:unit). True
(* The qualifier list "[logic logic]" is not permissible for this element: duplicate qualifiers *)

I can make the latter work by editing FStar.ToSyntax.ToSyntax.fst L2163 to not add a duplicate logic qualifier to let prop = .... FStar.ToSyntax.ToSyntax.fst L1689 should probably also be fixed. It's an unsatisfying conclusion since F* is adding a qualifier to a let binding and it's your job to fix the val to match; at the very least there should be an error asking you to add logic to the val.

@catalin-hritcu
Copy link
Member

Problem seems similar to #638. One idea behind prop (#1048) was that we could also get rid of the logic qualifier.

@aseemr
Copy link
Collaborator

aseemr commented May 14, 2018

This is fixed in master. The logic qualifier is now deprecated and these errors no longer show up. Adding the example to the regressions.

@aseemr aseemr closed this as completed May 14, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants