module Vector.SubVector where open import Level using (Level; levelOfType) open import Function open import Data.Nat as ℕ using (ℕ) open import Data.Fin open import Data.Vec.Functional open import Relation.Binary.PropositionalEquality private variable a : Level A : Set a m n : ℕ -- This is a 3-arg. predicate, but the "corresponding" SubMatrix is a 2-arg. "container" of a matrix. record SubVector (xs : Vector A n) (columns : Vector (Fin n) m) (ys : Vector A m) : Set (levelOfType A) where constructor subProp field subVecProp : ∀ i → ys i ≡ xs (columns i) -- Another way could be to have SubVector xs ys where field columns : ...