{-# OPTIONS --warning=error --safe --without-K #-} open import LogicalFormulae open import Orders.Total.Definition open import Orders.Total.Lemmas open import Maybe open import Agda.Primitive using (Level; lzero; lsuc; _⊔_) open import Vectors open import Numbers.Naturals.Semiring open import Numbers.Naturals.Order module KeyValue.LinearStore.Implementation {a b c} (keySet : Set a) (valueSet : Set b) (keyOrder : TotalOrder {_} keySet {c}) where record ReducedMap (min : keySet) : Set (a ⊔ b ⊔ c) record ReducedMap min where inductive field firstEntry : valueSet next : Maybe (Sg keySet (λ nextKey → (ReducedMap nextKey) && (TotalOrder._<_ keyOrder min nextKey))) addReducedMap : {min : keySet} → (k : keySet) → (v : valueSet) → (m : ReducedMap min) → ReducedMap (TotalOrder.min keyOrder min k) addReducedMap {min} k v m with TotalOrder.totality keyOrder min k addReducedMap {min} k v record { firstEntry = firstEntry ; next = no } | inl (inl min