Last active
September 15, 2018 11:25
-
-
Save gallais/69057843194fe8a2bd279db9c04bdc11 to your computer and use it in GitHub Desktop.
lists of size at least n
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open import Data.Nat | |
module atleastn (n : ℕ) {a} (A : Set a) where | |
open import Data.List using (List; length) | |
open import Data.Vec | |
record SizedList : Set a where | |
field list : List A | |
size : length list ≥ n | |
data Vec' : ℕ → Set a where | |
mkVec′ : ∀ {m} → Vec A (m + n) → Vec' (m + n) | |
data WideVec : ∀ k → Vec A k → Set a where | |
mkWideVec : ∀ {m} (xs : Vec A m) (ys : Vec A n) → WideVec (m + n) (xs ++ ys) | |
data InlinedWideVec : ℕ → Set a where | |
rest : Vec A n → InlinedWideVec n | |
_∷_ : ∀ {k} → A → InlinedWideVec k → InlinedWideVec (suc k) | |
open import Relation.Nullary.Decidable | |
record AtLeastN (m : ℕ) : Set a where | |
field vec : Vec A m | |
prf : m ≥ n | |
mkAtLeastN : ∀ {m} {p : True (n ≤? m)} → Vec A m → AtLeastN m | |
mkAtLeastN {m} {p} xs = record { vec = xs ; prf = toWitness p } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment