Я не думаю, что вы можете доказать notInTail
как написано, поскольку это не относится к пустым спискам.Однако он применяется для непустых списков:
notInTail : (c : Last (y :: ys) value -> Void) -> Last (x :: (y :: ys)) value -> Void
notInTail c (LastCons prf) = c prf
Хвост входного списка должен быть непустым в третьем случае isLast
, но вы не указываете это.Если вы это сделаете, вы можете подать заявление notInTail
:
isLast (x :: (y :: xs)) value = case isLast (y :: xs) value of
Yes prf => Yes (LastCons prf)
No c => No (notInTail c)