Tôi đang cố gắng chứng minh rằng kích thước (số phần tử) trong một danh sách là không âm, nhưng Leon không chứng minh được nó --- nó chỉ là thời gian. Liệu Leon có thực sự không có khả năng chứng minh tài sản này, hay tôi đang sử dụng nó sai? Điểm xuất phát của tôi là một chức năng tôi đọc trong bài báo "Tổng quan về hệ thống xác minh Leon".Làm thế nào để chứng minh kích thước của một danh sách trong Leon?
import leon.lang._
import leon.annotation._
object ListSize {
sealed abstract class List
case class Cons(head: Int, tail: List) extends List
case object Nil extends List
def size(l: List) : Int = (l match {
case Nil => 0
case Cons(_, t) => 1 + size(t)
}) ensuring(_ >= 0)
}
Nhưng tại sao tôi không nhận được ví dụ phản biện để tiếp tục chương trình với Int? – vkuncak
Leon tìm kiếm các ví dụ ngược (bằng khái niệm) liệt kê các cấu trúc của kích thước ngày càng tăng. Ví dụ truy cập nhỏ nhất với điều kiện xác minh này có kích thước 'Int.MaxValue', vì vậy sẽ mất một thời gian để đến đó (và bạn sẽ hết bộ nhớ trước đó). – Philippe