{-# OPTIONS_GHC -fplugin=LiquidHaskellBoot #-} {-# LANGUAGE MagicHash #-} {-# OPTIONS_GHC -Wno-missing-signatures #-} {-# OPTIONS_GHC -Wno-unused-imports #-} module GHC.Types_LHAssumptions() where import GHC.Prim import GHC.Types -- This definition is needed to make the listed data constructors -- visible to LH _f :: (Double# -> Double, Float# -> Float, Word# -> Word) _f = (Double# -> Double D#, Float# -> Float F#, Word# -> Word W#) {-@ // Boxed types embed Double as real embed Double# as real embed Float as real embed Float# as real embed Word as int embed Word# as int embed Word64# as int embed Int as int embed Int# as int embed Bool as bool embed Char as Char embed Char# as Char embed Addr# as Str embed Integer as int assume True :: {v:Bool | v } assume False :: {v:Bool | (~ v) } assume GHC.Types.isTrue# :: n:_ -> {v:Bool | (n = 1 <=> v)} define True = (true) assume GHC.Types.D# :: x:Double# -> {v: Double | v = (x :: real) } assume GHC.Types.F# :: x:Float# -> {v: Float | v = (x :: real) } assume GHC.Types.I# :: x:Int# -> {v: Int | v = (x :: int) } assume GHC.Types.C# :: x:Char# -> {v: Char | v = (x :: Char) } assume GHC.Types.W# :: w:Word# -> {v:Word | v == w } measure addrLen :: GHC.Prim.Addr# -> Int type GeInt N = {v: Int | v >= N } type LeInt N = {v: Int | v <= N } type Nat = {v: Int | v >= 0 } type Even = {v: Int | (v mod 2) = 0 } type Odd = {v: Int | (v mod 2) = 1 } type BNat N = {v: Nat | v <= N } type TT = {v: Bool | v} type FF = {v: Bool | not v} type String = [Char] class measure len :: forall f a. f a -> Int @-}