packages feed

liquidhaskell-0.8.0.2: include/Data/ByteString/Unsafe.spec

module spec Data.ByteString.Unsafe where

unsafeHead
    :: { bs : Data.ByteString.ByteString | 1 <= bslen bs } -> Data.Word.Word8

unsafeTail
    :: bs : { v : Data.ByteString.ByteString | bslen v > 0 }
    -> { v : Data.ByteString.ByteString | bslen v = bslen bs - 1 }

unsafeInit
    :: { bs : Data.ByteString.ByteString | 1 <= bslen bs } -> Data.Word.Word8

unsafeLast
    :: { bs : Data.ByteString.ByteString | 1 <= bslen bs } -> Data.Word.Word8

unsafeIndex
    :: bs : Data.ByteString.ByteString
    -> { n : Int | 0 <= n && n < bslen bs }
    -> Data.Word.Word8

assume unsafeTake
    :: n : { n : Int | 0 <= n }
    -> i : { i : Data.ByteString.ByteString | n <= bslen i }
    -> { o : Data.ByteString.ByteString | bslen o == n }

assume unsafeDrop
    :: n : { n : Int | 0 <= n }
    -> i : { i : Data.ByteString.ByteString | n <= bslen i }
    -> { o : Data.ByteString.ByteString | bslen o == bslen i - n }