Files
agda-doodles/Dep.agda
2019-03-28 21:45:04 +01:00

31 lines
552 B
Agda

module dep where
data Nat : Set where
zero : Nat
suc : Nat Nat
data L (A : Set) : Set where
[] : L A
_::_ : A L A L A
data Vect (A : Set) : Nat Set where
vnil : Vect A zero
vcons : {n : Nat} A Vect A n Vect A (suc n)
infix 2 _+_
infix 3 _*_
_+_ : Nat Nat Nat
n + zero = n
n + suc m = suc (n + m)
_*_ : Nat -> Nat -> Nat
n * zero = zero
n * suc m = n * m + n
inner : {n : Nat} Vect Nat n Vect Nat n Nat
inner vnil vnil = zero
inner (vcons x xs) (vcons y ys) = x * y + inner xs ys