了解ttags错误

时间:2014-09-23 20:36:22

标签: acl2

我试图理解错误信息,以便我可以考虑一下 修理它。解决以下错误的正确方法是什么?我是不是该 请将:oslib:quicklisp:quicklisp.osicat添加到包含书籍中 在books/oslib/rmtree.lisp内?我的包含书形式错了吗?

ACL2 !>(include-book "oslib/top" :dir :system :ttags (oslib quicklisp
quicklisp.osicat))


ACL2 Error in ( INCLUDE-BOOK "oslib/top" ...):  The ttag :OSLIB associated
with file /<elided>/acl2/books/oslib/lisptype.lisp
is not among the set of ttags permitted in the current context, specified
as follows:

((:OSLIB "/<elided>/acl2/books/oslib/rmtree.lisp")
 :QUICKLISP :QUICKLISP.OSICAT).
See :DOC defttag.


Summary
Form:  ( INCLUDE-BOOK "oslib/top" ...)
Rules: NIL
Time:  0.47 seconds (prove: 0.00, print: 0.00, other: 0.47)

ACL2 Error in ( INCLUDE-BOOK "oslib/top" ...):  See :DOC failure.

******** FAILED ********
ACL2 !>

2 个答案:

答案 0 :(得分:1)

我强烈建议您始终在include-books上使用:ttags :all,或者完全省略:ttags参数并禁止显示警告。例如,您可以这样做:

(include-book "oslib/top" :dir :system :ttags :all)

这看起来有点矫枉过正 - 当你知道它只需要oslibquicklisp和{{}时,你为什么要允许本书中的任何信任标记? 1}?仅允许您知道需要的少数信任标签更安全吗?

问题是:即使oslib / top book只需要这三个ttags 今天,也许将来有人会以某种方式扩展它需要额外的信任标签。如果发生这种情况,您必须使用此受限制的信任标记集更新包含它的每个位置。将这本书乘以许多书籍,你的手上就会弄得一团糟。

无论如何,如果您真的想限制信任标记的使用,最好将这些限制放在quicklisp.osicat文件的cert-flags部分,以便您可以控制它们在目录的粒度而不是个人包括。有关详细信息,请参阅custom certify-book commands

答案 1 :(得分:0)

要允许图书自己包含标记,请将标记放在parens中,如下所示:

(include-book "oslib/top" :dir :system :ttags ((oslib) (quicklisp)
  (quicklisp.osicat)))