Cartesian_Euclidean_Space
中有一个矩阵乘法定义(在目录HOL / Multivariate_Analysis中):
definition matrix_matrix_mult :: "('a::semiring_1) ^'n^'m ⇒ 'a ^'p^'n ⇒ 'a ^ 'p ^'m"
(infixl "**" 70)
where "m ** m' == (χ i j. setsum (λk. ((m$i)$k) * ((m'$k)$j)) (UNIV :: 'n set)) ::'a ^ 'p ^'m"
现在平方矩阵为A ** A
,A ^ 3为A ** A ** A
。
我找不到功能函数来定义A^n
(即A ** A ** ... ** A
n次)。
库中是否有电源功能?是否需要手动定义?
答案 0 :(得分:0)
我在HOL/Power.thy
中找到了以下定义:
primrec power :: "'a ⇒ nat ⇒ 'a" (infixr "^" 80) where
power_0: "a ^ 0 = 1"
| power_Suc: "a ^ Suc n = a * a ^ n"
(Control + Click让你进入respecitve定义!所以我点击“^”,我只是先写了“1 ^ 1 = 1”作为引理。
这是对matrice权力的定义。
(因为我只使用方形矩阵,这很好,但更通用的^'n^'m
类型会很好。)
primrec powerM :: "(('a::semiring_1) ^'n^'n) ⇒ nat ⇒ (('a::semiring_1) ^'n^'n)"
(infixr "^^^" 80) where
powerM_0: "A ^^^(0::nat) = mat 1"
| powerM_Suc: "A ^^^(Suc n) = A ** (powerM A n)"