【发布时间】:2017-10-16 16:18:36
【问题描述】:
我需要尝试展示一个可以找到列表最小值的函数,我觉得我快要得到它但实际上无法得到它。
导师给我们这个功能:
(defun minlist (l)
(if (<= (len l) 1)
(first l)
(if (<= (first l) (minlist (rest l)))
(first l)
(minlist (rest l)))))
然后说
;;; TODO: Write a little theory that verifies that the minlist of a list is
;;; less than or equal to any element of the list
;;; Hint: Use this declaration to generate a non-empty list
;;; (n :value (random-between 1 10)
;;; l :value (random-natural-list-of-length n))
然后我做了:
(defproperty-program minlist-<=-member (n)
(if ((n :value (random-between 1 10)
l :value (random-natural-list-of-length n)))
(<= (min-list l) (first l))
(nil)))
Proof Pad 中的哪个给了我一个错误,我无法弄清楚我做错了什么。
错误是:
HARD ACL2 错误:N 缺少 :value 参数
TOP-LEVEL 中的 ACL2 错误:尝试对表单进行宏扩展
(EXPAND-VARS (N)
(IF ((N :VALUE (RANDOM-BETWEEN 1 10)
L
:VALUE (RANDOM-NATURAL-LIST-OF-LENGTH N)))
(<= (MIN-LIST L) (FIRST L))
(NIL))),
宏体的求值导致如下错误:
评估中止。要调试,请参阅 :DOC print-gv,请参阅 :DOC 跟踪,以及 请参阅:DOC 湿。
【问题讨论】:
-
为了帮助人们回答您的问题,您需要更具体地说明错误。请edit 您的帖子包含您从minimal reproducible example 获得的确切错误(最好使用复制+粘贴以避免转录错误)。
-
@TobySpeight 我已经添加了错误
标签: acl2