Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/ml/FStarC_Parser_Parse.mly
Original file line number Diff line number Diff line change
Expand Up @@ -419,8 +419,8 @@ rawDecl:
{
let r = rr $loc in
let lbs = focusLetBindings lbs r in
if q <> Rec && List.length lbs <> 1
then raise_error_text r Fatal_MultipleLetBinding "Unexpected multiple let-binding (Did you forget some rec qualifier ?)";
if q <> Rec && FStarC_List.length lbs > Prims.parse_int "1"
then raise_error_text (fst (nth lbs (Prims.parse_int "1"))).prange Fatal_MultipleLetBinding "Unexpected multiple let-binding (Did you forget some rec qualifier ?)";
TopLevelLet(q, lbs)
}
| VAL c=constant
Expand Down
8 changes: 4 additions & 4 deletions src/ml/pulseparser.mly
Original file line number Diff line number Diff line change
Expand Up @@ -359,10 +359,10 @@ mutOrRefQualifier:
| MUT { MUT }
| REF { REF }

typX(X,Y):
| t=Y { t }
typX(X):
| t=X { t }

| q=quantifier bs=binders DOT trigger=trigger e=X
| q=quantifier bs=binders DOT trigger=trigger e=typX(X)
{
match bs with
| [] ->
Expand All @@ -373,5 +373,5 @@ typX(X,Y):
}

pulseSLProp:
| p=typX(tmEqWith(appTermNoRecordExp), tmEqWith(appTermNoRecordExp))
| p=typX(tmEqWith(appTermNoRecordExp))
{ p }
26 changes: 26 additions & 0 deletions test/nolib/QuantifierOps.fst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module QuantifierOps

#lang-pulse
open Pulse.Nolib

let ( exists* ) : #a:Type -> (a -> slprop) -> slprop = admit()
let ( forall+ ) : #a:Type -> (a -> slprop) -> slprop = admit()

let test =
forall+ (x : int).
exists* (y : int).
emp

let test2 =
exists* (y : int).
forall+ (x : int).
emp

fn def ()
preserves
forall+ (x : int).
exists* (y : int).
emp
{
()
}
Loading