def head {α} : (as : List α) → as ≠ [] → α | [], h => absurd rfl h | a::as, _ => a theorem head_cons {α} (a : α) (as : List α) : head (a::as) (fun h => List.noConfusion rfl (heq_of_eq h)) = a := rfl theorem head_cons' {α} (a : α) (as : List α) (h : a::as ≠ []) : head (a::as) h = a := rfl