ucsd-progsys / liquidhaskell

Liquid Types For Haskell

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Missing annotations from GHC.Types_LHAssumptions that should be implicit

facundominguez opened this issue · comments

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.