将属性附加到定义会导致语法错误

时间:2017-04-23 16:53:51

标签: syntax attributes lean

我想归结一个定义reducible。我很确定我的语法正确,因为我从tutorial (p. 118)逐字复制它。

definition pr1 [reducible] (A : Type) (a b : A) : A := a
attribute pr1 [reducible]

这两个属性的组合都没有通过语法检查:将其直接附加到定义会导致type expected at reducible,而独立声明会导致command expected

我在Windows上使用Lean 3.1二进制发行版和VS Code语言工具fwiw,但它似乎也无法在浏览器中运行。

1 个答案:

答案 0 :(得分:1)

您使用的是教程的过时版本,最新版本为here。您可以使用以下语法:

@[reducible]
definition pr1 (A : Type) (a b : A) : A := a

attribute [reducible]
definition pr1 {A B : Type} (a : A) (b : B) := a
  

也可以在定义发生后的任何时间分配属性:

definition pr1 (A : Type) (a b : A) : A := a
-- some code
attribute [reducible] pr1