31 lines
552 B
Agda
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
|
|
|
|
|