module Signature.Vector where

open import Stdlib
open import Signature

module Model where

  data Vec (A : Set) :   Set where
    nil : Vec A 0
    cons :  n  (a : A)(xs : Vec A n)  Vec A (suc n)
    

ΣVec : Set  Sig 
ΣVec A = OpVec   {n}  ArVec n) /  {n}{op}  TyVec n op)
  where OpVec :   Set
        OpVec 0 = 
        OpVec (suc n) = A

        ArVec : (n : )  OpVec n  Set
        ArVec 0 tt = 
        ArVec (suc n) a = 

        TyVec : (n : )(op : OpVec n)  ArVec n op  
        TyVec 0 tt ()
        TyVec (suc n) a tt = n

Vec : Set    Set
Vec A n = μ (ΣVec A) n

vnil : ∀{A}  Vec A 0
vnil =  tt ,  bot  ⊥-elim bot) 

vcons : ∀{A n}  A  Vec A n  Vec A (suc n)
vcons a xs =  a ,  { tt  xs })