inductive Vec.{u} (α : Type u) : Nat → Type u | nil : Vec α 0 | cons : α → {n : Nat} → Vec α n → Vec α (n+1) open Vec universe u variable {α : Type u} variable (f : α → α → α) def mapHead1 : {n : Nat} → Vec α n → Vec α n → Vec α n | _, nil, nil => nil | _, cons a va, cons b bv => cons (f a b) va theorem ex1 : mapHead1 f nil nil = nil := rfl theorem ex2 (a b : α) (n : Nat) (va vb : Vec α n) : mapHead1 f (cons a va) (cons b vb) = cons (f a b) va := rfl