Isabelle “是否有附加版本?”;权力。你的;在伊莎贝尔?

Isabelle “是否有附加版本?”;权力。你的;在伊莎贝尔?,isabelle,theorem-proving,Isabelle,Theorem Proving,在Isabelle中,我定义了一个函数f:'a->nat,其中'a是扩展幺半群的代数结构(即群、半环、环、积分域、场等) 我想将此函数的输出用作我的类型'a在其他构造中的“系数”。也就是说,如果x:'a和n:nat,我希望能够使用一些操作·:'a->nat->'a,让我告诉伊莎贝尔n·x=x+x+…+x 通过搜索,我找到了“”理论,从某种意义上说,它满足了我的需求。然而,它是为我的问题的“乘法版本”而做的。如果我想更改例如整数的'a,这是一个问题。使用它意味着Isabelle将不再计算n·x,而

在Isabelle中,我定义了一个函数
f:'a->nat
,其中
'a
是扩展幺半群的代数结构(即群、半环、环、积分域、场等)

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


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

我不知道有任何预定义的常量可以实现这样的操作,但是可以通过迭代加法轻松实现,例如,在
nat
上使用
comppow

definition scale :: "nat => 'a => 'a" where
  "scale a n = ((plus a) ^^ n) 0"
其中,
plus
表示结构的加法操作,
0
是中性元素。如果您使用的是Isabelle/HOL中的算术类型类,那么应该将排序约束
'a::monoid
添加到
scale
的类型中


Complex\u Main
中还有一个类型类操作
scaleR
,它实现了这样的系数缩放操作,但它不仅允许
real
数字,而且允许
nat
s,因此您的结构可能不满足所有必需的公理(类型类
real\u vector
).

我不知道有任何预定义的常量实现了这样的操作,但它可以通过迭代加法轻松实现,例如,在
nat
上使用
comppow

definition scale :: "nat => 'a => 'a" where
  "scale a n = ((plus a) ^^ n) 0"
其中,
plus
表示结构的加法操作,
0
是中性元素。如果您使用的是Isabelle/HOL中的算术类型类,那么应该将排序约束
'a::monoid
添加到
scale
的类型中


Complex\u Main
中还有一个类型类操作
scaleR
,它实现了这样的系数缩放操作,但它不仅允许
real
数字,而且允许
nat
s,因此您的结构可能不满足所有必需的公理(类型类
real\u vector
).

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

context semiring_1
begin

definition scale :: "nat ⇒ 'a ⇒ 'a"
  where "scale n = times (of_nat n)"

lemma [simp]:
  "scale 0 a = 0"
  "scale (Suc n) a = a + scale n a"
  by (simp_all add: scale_def algebra_simps)

lemma
  "((plus a) ^^ n) 0 = scale n a"
  by (induct n) (simp_all)

end

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

context semiring_1
begin

definition scale :: "nat ⇒ 'a ⇒ 'a"
  where "scale n = times (of_nat n)"

lemma [simp]:
  "scale 0 a = 0"
  "scale (Suc n) a = a + scale n a"
  by (simp_all add: scale_def algebra_simps)

lemma
  "((plus a) ^^ n) 0 = scale n a"
  by (induct n) (simp_all)

end
伟大的“镇静”正是我所需要的。我担心我可能需要证明关于它的一些额外的东西,但到目前为止,它在没有额外定理的情况下运行良好。谢谢,太好了!“镇静”正是我所需要的。我担心我可能需要证明关于它的一些额外的东西,但到目前为止,它在没有额外定理的情况下运行良好。非常感谢。