精益证明助手中交换环的幂等性
Idempotents of a commutatitive ring in Lean proof assistant
您好,我正在尝试在精益证明助手中做一些数学运算,看看它是如何工作的。我决定玩交换环的幂等函数应该很有趣。这是我尝试过的:
variables (A : Type) (R : comm_ring A)
definition KR : Type := \Sigma x : A, x * x = x
然后我收到错误
failed to synthesize placeholder
A : Type,
x : A
⊢ has_mul A
所以Lean好像忘记了A是环?
例如,如果我将定义更改为
definition KR (A : Type) (R : comm_ring A) : Type := Σ x : A , x = x * x
那么一切都很好。但这意味着我必须携带额外的簿记数据。有没有一种方法可以使用变量来绕过保存簿记的需要。
默认情况下,精益仅在实际使用它们的定义中包含部分变量和参数。您可以使用 include
和 omit
命令覆盖它。但是由于 comm_ring
是一种类型 class,您可能还是希望将其声明为 class 推理参数:
variables (A : Type) [comm_ring A]
像这样省略参数名称将默认将其包含在每个定义中,因此您的定义应该有效。
您好,我正在尝试在精益证明助手中做一些数学运算,看看它是如何工作的。我决定玩交换环的幂等函数应该很有趣。这是我尝试过的:
variables (A : Type) (R : comm_ring A)
definition KR : Type := \Sigma x : A, x * x = x
然后我收到错误
failed to synthesize placeholder
A : Type,
x : A
⊢ has_mul A
所以Lean好像忘记了A是环?
例如,如果我将定义更改为
definition KR (A : Type) (R : comm_ring A) : Type := Σ x : A , x = x * x
那么一切都很好。但这意味着我必须携带额外的簿记数据。有没有一种方法可以使用变量来绕过保存簿记的需要。
默认情况下,精益仅在实际使用它们的定义中包含部分变量和参数。您可以使用 include
和 omit
命令覆盖它。但是由于 comm_ring
是一种类型 class,您可能还是希望将其声明为 class 推理参数:
variables (A : Type) [comm_ring A]
像这样省略参数名称将默认将其包含在每个定义中,因此您的定义应该有效。