module LiquidArray where {-@ set :: forall a

x1: a -> Bool, r :: x0: Int -> Bool>. i: Int -> x: a

-> a: (j: {v: Int | v != i} -> a

) -> (k: Int -> a

) @-} set :: Int -> a -> (Int -> a) -> (Int -> a) set i x a = \k -> if k == i then x else a k {-@ get :: forall a

x1: a -> Bool, r :: x0: Int -> Bool>. i: Int -> a: (j: Int -> a

) -> a

@-} get :: Int -> (Int -> a) -> a get i a = a i {-@ empty :: i: {v: Int | 0 = 1} -> a @-} empty :: Int -> a empty = const (error "Empty array!")