Missing annotations from GHC.Types_LHAssumptions that should be implicit
facundominguez opened this issue · comments
Facundo Domínguez commented
The following example fails to verify when the import of GHC.Types
is left commented.
module Test where
-- import GHC.Types
g :: Int -> Bool
g x = x >= 0
$ liquidhaskell_boot_datadir=$PWD/liquidhaskell-boot cabal exec -- liquidhaskell test.hs -fforce-recomp
[1 of 1] Compiling Test ( test.hs, test.o )
src/GHC/Classes_LHAssumptions.hs:8:27: error:
• Illegal type specification for `GHC.Classes.not`
GHC.Classes.not :: x:GHC.Types.Bool -> {v : GHC.Types.Bool | v <=> not x}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> not x}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
8 | assume GHC.Classes.not :: x:GHC.Types.Bool -> {v:GHC.Types.Bool | ((v) <=> ~(x))}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:9:31: error:
• Illegal type specification for `GHC.Classes.&&`
GHC.Classes.&& :: x:GHC.Types.Bool -> y:GHC.Types.Bool -> {v : GHC.Types.Bool | v <=> x
&& y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x
&& y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
9 | assume (GHC.Classes.&&) :: x:GHC.Types.Bool -> y:GHC.Types.Bool
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:11:31: error:
• Illegal type specification for `GHC.Classes.||`
GHC.Classes.|| :: x:GHC.Types.Bool -> y:GHC.Types.Bool -> {v : GHC.Types.Bool | v <=> x
|| y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x
|| y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
11 | assume (GHC.Classes.||) :: x:GHC.Types.Bool -> y:GHC.Types.Bool
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:13:31: error:
• Illegal type specification for `GHC.Classes.==`
GHC.Classes.== :: forall a .
(Eq<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x == y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x == y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
13 | assume (GHC.Classes.==) :: (GHC.Classes.Eq a) => x:a -> y:a
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:15:31: error:
• Illegal type specification for `GHC.Classes./=`
GHC.Classes./= :: forall a .
(Eq<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x /= y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x /= y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
15 | assume (GHC.Classes./=) :: (GHC.Classes.Eq a) => x:a -> y:a
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:17:31: error:
• Illegal type specification for `GHC.Classes.>`
GHC.Classes.> :: forall a .
(Ord<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x > y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x > y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
17 | assume (GHC.Classes.>) :: (GHC.Classes.Ord a) => x:a -> y:a
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:19:31: error:
• Illegal type specification for `GHC.Classes.>=`
GHC.Classes.>= :: forall a .
(Ord<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x >= y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x >= y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
19 | assume (GHC.Classes.>=) :: (GHC.Classes.Ord a) => x:a -> y:a
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:21:31: error:
• Illegal type specification for `GHC.Classes.<`
GHC.Classes.< :: forall a .
(Ord<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x < y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x < y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
21 | assume (GHC.Classes.<) :: (GHC.Classes.Ord a) => x:a -> y:a
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
src/GHC/Classes_LHAssumptions.hs:23:31: error:
• Illegal type specification for `GHC.Classes.<=`
GHC.Classes.<= :: forall a .
(Ord<[]> a) =>
x:a -> y:a -> {v : GHC.Types.Bool | v <=> x <= y}
Sort Error in Refinement: {v : GHC.Types.Bool | v <=> x <= y}
Expressions v should have bool sort, but has GHC.Types.Bool
Just assume
•
|
23 | assume (GHC.Classes.<=) :: (GHC.Classes.Ord a) => x:a -> y:a
|
Likely the annotation site of Ord
needs to import GHC.Types
.