Isabelle中有“Power.thy”的加法版本吗?

时间:2017-10-31 18:15:29

标签: isabelle theorem-proving

在Isabelle中,我定义了一个函数f:'a -> nat,其中'a是一些代数结构,它扩展了一个幺半群(即一个群,半环,环,整域,场......)。 / p>

我想在其他结构中将此函数的输出用作我的类型'a的“系数”。也就是说,如果x:'an:nat,我希望能够使用一些操作·:'a -> nat -> 'a,让我告诉Isabelle n·x = x + x + ... + x

通过搜索,我找到了“Power.thy”理论,从某种意义上说,它实现了我想要的。但是,它是为我的问题的“乘法版本”做的。如果我想更改'a,例如,这是一个问题。整数。使用它意味着Isabelle不会计算n·x,而是x^n。是否有“Power.thy”的类似版本可以满足我的需求?或者还有其他方法来规避这个问题吗?

2 个答案:

答案 0 :(得分:1)

我不知道任何实现此类操作的预定义常量,但可以通过迭代添加轻松实现,例如,使用comppow上的nat

definition scale :: "nat => 'a => 'a" where
  "scale a n = ((plus a) ^^ n) 0"

其中plus指的是结构的加法运算,0是中性元素。如果您使用的是Isabelle / HOL中的算术类型类,则应将排序约束'a :: monoid添加到scale的类型中。

scaleR中还有一个类型类操作Complex_Main,它实现了这样的系数缩放操作,但它允许real个数字,而不仅仅是nat个,所以你的结构可能无法满足所有必需的公理(类型类real_vector)。

答案 1 :(得分:1)

表达这一点的一种非常惯用的方式是乘法和»of_nat«:

MASQUERADE