{-@ LIQUID "--no-termination" @-} {-@ LIQUID "totality" @-} module DataBase (values) where {-@ values :: forall val -> Prop>. k:key -> [Dict key val] -> [val] @-} values :: key -> [Dict key val] -> [val] values k = map (go k) where {-@ go :: forall v -> Prop>. i:k -> Dict k v -> v @-} go k (D _ f) = f k data Dict key val = D {ddom :: [key], dfun :: key -> val} {-@ data Dict key val val -> Prop> = D ( ddom :: [key]) ( dfun :: i:key -> val) @-}