Skip to content

Commit 0420e80

Browse files
Merge pull request #2594 from ucsd-progsys/fd/qualifiers
Update LF after requiring braces for qualifiers
2 parents 1ac93fb + 77d34fe commit 0420e80

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+302
-283
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,12 @@ which will produce `tmp/*.json` files.
155155

156156
Then a csv report can be generated from the json files with
157157
```
158-
cabal v2-run benchmark-timings -- tmp/*.json --phase LiquidHaskell -o summary.csv
158+
cabal v2-run benchmark-timings -- tmp/*.json --phase LiquidHaskellCPU -o summary.csv
159159
```
160160
On each line, the report will contain the the wall-clock time taken by each test.
161-
Use `--phase LiquidHaskellCPU` to get the CPU time instead.
161+
Use `--phase LiquidHaskell` to get the wall-clock time instead. Although in that
162+
case you need to use the `--measure-timings-j1` option when running the tests,
163+
which validates modules one at a time.
162164

163165
Comparison charts in `svg` format can be generated by invoking
164166

docs/mkDocs/docs/specifications.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ to the Haskell source. See, [this](https://github.com/ucsd-progsys/liquidhaskell
753753
Finally, you can specify qualifiers directly inside source (.hs or .lhs)
754754
files by writing them as shown [here](https://github.com/ucsd-progsys/liquidhaskell/blob/develop/tests/pos/QualTest.hs)
755755

756-
{-@ qualif Foo(v:Int, a: Int) : (v = a + 100) @-}
756+
{-@ qualif Foo(v:Int, a: Int) { v = a + 100 } @-}
757757

758758

759759
**Note** In addition to these, LiquidHaskell scrapes qualifiers from all

liquid-fixpoint

Submodule liquid-fixpoint updated 81 files

liquid-vector/src/Data/Vector_LHAssumptions.hs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ assume Data.Vector.map :: (a -> b) -> x:(Data.Vector.Vector a) -> {y:Data.Vector
3030

3131
assume Data.Vector.head :: forall a. {xs: Data.Vector.Vector a | vlen xs > 0} -> a
3232

33-
qualif VecEmpty(v: Data.Vector.Vector a) : (vlen v) = 0
34-
qualif VecEmpty(v: Data.Vector.Vector a) : (vlen v) > 0
35-
qualif VecEmpty(v: Data.Vector.Vector a) : (vlen v) >= 0
36-
37-
qualif Vlen(v:int, x: Data.Vector.Vector a) : (v = vlen x)
38-
qualif Vlen(v:int, x: Data.Vector.Vector a) : (v <= vlen x)
39-
qualif Vlen(v:int, x: Data.Vector.Vector a) : (v < vlen x)
40-
41-
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) : (vlen v < vlen x)
42-
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) : (vlen v <= vlen x)
43-
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) : (vlen v > vlen x)
44-
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) : (vlen v >= vlen x)
45-
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) : (vlen v = vlen x)
33+
qualif VecEmpty(v: Data.Vector.Vector a) { vlen v = 0 }
34+
qualif VecEmpty(v: Data.Vector.Vector a) { vlen v > 0 }
35+
qualif VecEmpty(v: Data.Vector.Vector a) { vlen v >= 0 }
36+
37+
qualif Vlen(v:int, x: Data.Vector.Vector a) { v = vlen x }
38+
qualif Vlen(v:int, x: Data.Vector.Vector a) { v <= vlen x }
39+
qualif Vlen(v:int, x: Data.Vector.Vector a) { v < vlen x }
40+
41+
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) { vlen v < vlen x }
42+
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) { vlen v <= vlen x }
43+
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) { vlen v > vlen x }
44+
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) { vlen v >= vlen x }
45+
qualif CmpVlen(v:Data.Vector.Vector a, x:Data.Vector.Vector b) { vlen v = vlen x }
4646

4747
@-}

liquidhaskell-boot/tests/Parser.hs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ testSpecP =
152152
"embed Set as Set_Set"
153153

154154
, testCase "qualif" $
155-
parseSingleSpec "qualif Foo(v:Int): v < 0" @?==
156-
"qualif Foo(v: int): v < 0 // defined at <test>:1:8"
155+
parseSingleSpec "qualif Foo(v:Int) { v < 0 }" @?==
156+
"qualif Foo(v: int) { v < 0 } // defined at <test>:1:8"
157157

158158
, testCase "lazyvar" $
159159
parseSingleSpec "lazyvar z" @?==
@@ -376,11 +376,10 @@ testSucceeds =
376376
@?==
377377
unlines
378378
[ "predicate ValidChunk V XS N = "
379-
, " (not (len XS == 0) =>"
380-
, " (1 < N && 1 < len XS => len V < len XS)"
381-
, " && (len XS <= N => len V == 1)"
382-
, " )"
383-
, " && (len XS == 0 => len V == 0)"
379+
, " if len XS == 0 "
380+
, " then len V == 0"
381+
, " else (1 < N && 1 < len XS => len V < len XS)"
382+
, " && (len XS <= N => len V == 1)"
384383
]
385384

386385

src/Data/Tuple_LHAssumptions.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ measure fst :: (a, b) -> a
1414
measure snd :: (a, b) -> b
1515
snd (a, b) = b
1616

17-
qualif Fst(__v:a, __y:b): (__v = (fst __y))
18-
qualif Snd(__v:a, __y:b): (__v = (snd __y))
17+
qualif Fst(__v:a, __y:b) { __v = (fst __y) }
18+
qualif Snd(__v:a, __y:b) { __v = (snd __y) }
1919
@-}

src/GHC/Base_LHAssumptions.hs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,24 @@ define $ f x = (f x)
4141
4242
assume id :: x:a -> {v:a | v = x}
4343
44-
qualif IsEmp(v:Bool, xs: [a]) : (v <=> (len xs > 0))
45-
qualif IsEmp(v:Bool, xs: [a]) : (v <=> (len xs = 0))
44+
qualif IsEmp(v:Bool, xs: [a]) { v <=> (len xs > 0) }
45+
qualif IsEmp(v:Bool, xs: [a]) { v <=> (len xs = 0) }
4646
47-
qualif ListZ(v: [a]) : (len v = 0)
48-
qualif ListZ(v: [a]) : (len v >= 0)
49-
qualif ListZ(v: [a]) : (len v > 0)
47+
qualif ListZ(v: [a]) { len v = 0 }
48+
qualif ListZ(v: [a]) { len v >= 0 }
49+
qualif ListZ(v: [a]) { len v > 0 }
5050
51-
qualif CmpLen(v:[a], xs:[b]) : (len v = len xs )
52-
qualif CmpLen(v:[a], xs:[b]) : (len v >= len xs )
53-
qualif CmpLen(v:[a], xs:[b]) : (len v > len xs )
54-
qualif CmpLen(v:[a], xs:[b]) : (len v <= len xs )
55-
qualif CmpLen(v:[a], xs:[b]) : (len v < len xs )
51+
qualif CmpLen(v:[a], xs:[b]) { len v = len xs }
52+
qualif CmpLen(v:[a], xs:[b]) { len v >= len xs }
53+
qualif CmpLen(v:[a], xs:[b]) { len v > len xs }
54+
qualif CmpLen(v:[a], xs:[b]) { len v <= len xs }
55+
qualif CmpLen(v:[a], xs:[b]) { len v < len xs }
5656
57-
qualif EqLen(v:int, xs: [a]) : (v = len xs )
58-
qualif LenEq(v:[a], x: int) : (x = len v )
57+
qualif EqLen(v:int, xs: [a]) { v = len xs }
58+
qualif LenEq(v:[a], x: int) { x = len v }
5959
60-
qualif LenDiff(v:[a], x:int) : (len v = x + 1)
61-
qualif LenDiff(v:[a], x:int) : (len v = x - 1)
62-
qualif LenAcc(v:int, xs:[a], n: int): (v = len xs + n)
60+
qualif LenDiff(v:[a], x:int) { len v = x + 1 }
61+
qualif LenDiff(v:[a], x:int) { len v = x - 1 }
62+
qualif LenAcc(v:int, xs:[a], n: int) { v = len xs + n }
6363
6464
@-}

src/GHC/List_LHAssumptions.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ assume break :: (a -> Bool) -> xs:[a] -> ([a],[a])<{\x y -> (len xs) = (len x) +
5252
assume reverse :: xs:[a] -> {v: [a] | len(v) = len(xs)}
5353

5454
// Copy-pasted from len.hquals
55-
qualif LenSum(v:[a], xs:[b], ys:[c]): len([v]) = (len([xs]) + len([ys]))
56-
qualif LenSum(v:[a], xs:[b], ys:[c]): len([v]) = (len([xs]) - len([ys]))
55+
qualif LenSum(v:[a], xs:[b], ys:[c]) { len([v]) = (len([xs]) + len([ys])) }
56+
qualif LenSum(v:[a], xs:[b], ys:[c]) { len([v]) = (len([xs]) - len([ys])) }
5757

5858
assume !! :: xs:[a] -> {v: _ | ((0 <= v) && (v < len(xs)))} -> a
5959

src/Prelude_LHAssumptions.hs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,38 +25,38 @@ type IncrListD a D = [a]<{\x y -> (x+D) <= y}>
2525

2626
// BOT: Do not delete EVER!
2727

28-
qualif Bot(v:@(0)) : (0 = 1)
29-
qualif Bot(v:obj) : (0 = 1)
30-
qualif Bot(v:a) : (0 = 1)
31-
qualif Bot(v:bool) : (0 = 1)
32-
qualif Bot(v:int) : (0 = 1)
28+
qualif Bot(v:@(0)) { 0 = 1 }
29+
qualif Bot(v:obj) { 0 = 1 }
30+
qualif Bot(v:a) { 0 = 1 }
31+
qualif Bot(v:bool) { 0 = 1 }
32+
qualif Bot(v:int) { 0 = 1 }
3333

34-
qualif CmpZ(v:a) : (v < 0)
35-
qualif CmpZ(v:a) : (v <= 0)
36-
qualif CmpZ(v:a) : (v > 0)
37-
qualif CmpZ(v:a) : (v >= 0)
38-
qualif CmpZ(v:a) : (v = 0)
39-
qualif CmpZ(v:a) : (v != 0)
34+
qualif CmpZ(v:a) { v < 0 }
35+
qualif CmpZ(v:a) { v <= 0 }
36+
qualif CmpZ(v:a) { v > 0 }
37+
qualif CmpZ(v:a) { v >= 0 }
38+
qualif CmpZ(v:a) { v = 0 }
39+
qualif CmpZ(v:a) { v != 0 }
4040

41-
qualif Cmp(v:a, x:a) : (v < x)
42-
qualif Cmp(v:a, x:a) : (v <= x)
43-
qualif Cmp(v:a, x:a) : (v > x)
44-
qualif Cmp(v:a, x:a) : (v >= x)
45-
qualif Cmp(v:a, x:a) : (v = x)
46-
qualif Cmp(v:a, x:a) : (v != x)
41+
qualif Cmp(v:a, x:a) { v < x }
42+
qualif Cmp(v:a, x:a) { v <= x }
43+
qualif Cmp(v:a, x:a) { v > x }
44+
qualif Cmp(v:a, x:a) { v >= x }
45+
qualif Cmp(v:a, x:a) { v = x }
46+
qualif Cmp(v:a, x:a) { v != x }
4747

48-
qualif One(v:int) : v = 1
49-
qualif True1(v:Bool) : (v)
50-
qualif False1(v:Bool) : (~ v)
48+
qualif One(v:int) { v = 1 }
49+
qualif True1(v:Bool) { v }
50+
qualif False1(v:Bool) { ~ v }
5151

5252
// REBARE constant papp1 : func(1, [Pred @(0); @(0); bool])
53-
qualif Papp(v:a, p:Pred a) : (papp1 p v)
53+
qualif Papp(v:a, p:Pred a) { papp1 p v }
5454

5555
// REBARE constant papp2 : func(4, [Pred @(0) @(1); @(2); @(3); bool])
56-
qualif Papp2(v:a, x:b, p:Pred a b) : (papp2 p v x)
56+
qualif Papp2(v:a, x:b, p:Pred a b) { papp2 p v x }
5757

5858
// REBARE constant papp3 : func(6, [Pred @(0) @(1) @(2); @(3); @(4); @(5); bool])
59-
qualif Papp3(v:a, x:b, y:c, p:Pred a b c) : (papp3 p v x y)
59+
qualif Papp3(v:a, x:b, y:c, p:Pred a b c) { papp3 p v x y }
6060

6161
// qualif Papp4(v:a,x:b, y:c, z:d, p:Pred a b c d) : papp4(p, v, x, y, z)
6262
// REBARE constant papp4 : func(8, [Pred @(0) @(1) @(2) @(6); @(3); @(4); @(5); @(7); bool])

tests/absref/pos/VectorLoop.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,5 @@ loop lo hi base f = go lo base
6161
{-@ initUpto :: n:Nat -> (IdVec n) @-}
6262
initUpto n = loop 0 n empty (\i acc -> set i i acc)
6363

64-
{-@ qualif Foo(v:Int): v < 0 @-}
64+
{-@ qualif Foo(v:Int) { v < 0 } @-}
6565

0 commit comments

Comments
 (0)