@enomad еще прикол идриса в том, что он за тебя пишет код. в буквальном смысле. я пишу например
inputIsNonEmpty: List a -> Dec (NonEmptyList a)
inputIsNonEmpty [] = No ?proofIsNonEmpty
потом навожу мышкой на proofIsNonEmpty, нажимаю generate top level function, он генерирует функцию. потом нажимаю generate initial pattern match clause, он генерирует тело функции. потом делаю generate case split on the argument, и он самостоятельно вычисляет что кейс невозможен. в итоге я написал самостоятельно только имя функции
PS: это функция которая возвращает структуру "непустой список", либо в противном случае пруф что список пустой