![](https://csdnimg.cn/release/download_crawler_static/86327898/bg6.jpg)
麻莹莹 等:基于 Coq 的分块矩阵运算的形式化
图 1 M
该函数用于判断两个矩阵类型中的二维表(
Record 类型使用 eq 函数进行等价判断所存
性、对称性以及传递性,因此我们借助 Coq
系.下面使用“===”标记表示 M_eq 函数.下面是 M
_eq
Lemma M_eq_ref : forall {A:Set} {m n:nat} (m0:Mat A m n), m0 === m0.
Lemma M_eq_sym : forall {A:Set} {m n:nat} (m0 m1:Mat A m n),
m0 === m1 -> m1 === m0.
Lemma M_eq_trans : forall {A:Set} {m n:nat} (m0 m1 m2:Mat A m n),
m0 === m1 -> m1 === m2 -> m0 === m2.
3.3 矩阵函数构造
关于矩阵类型的运算操作函数主要分为矩阵
法运算函数、以及矩阵转置函数.
是完成该函数输出二维表的高度和宽度等价证明,三
是利用前两者构建处理矩阵并且生成矩阵的函数
采用该方法构造的矩阵处理函数使得矩阵的高度与宽度证明贯穿于函数处理过程中
输出矩阵高度与宽度固定,
若 A 为 m×n 矩阵,B 为 n×p 矩阵,则其两者
()
矩阵乘法函数的构造需依次构造多个递归函数
中 product’函数为表的内积函数,其接受两个表作
乘函数,其利用递归将 l 与 m
输出结果(表)的长度进行证明,如下:
Fig.2
Implementation principle of
图 2
dl_mul_dl 为二维表与二维表的相乘函数,其
并以二维表类型输出,
6
函数实现原理
)是否相等,该判断方法有效避免了关于
,也消除其使用错误公理而产生的漏洞.该函数具有自反
,使其成为一个重写可用的二元关
的自反性、对称性和传递性的引理表示:
Lemma M_eq_ref : forall {A:Set} {m n:nat} (m0:Mat A m n), m0 === m0.
Lemma M_eq_sym : forall {A:Set} {m n:nat} (m0 m1:Mat A m n),
Lemma M_eq_trans : forall {A:Set} {m n:nat} (m0 m1 m2:Mat A m n),
运算函数、加减运算函数、矩阵数乘运算函数、矩阵乘
步骤,一是构建对二维表处理操作函数,二
(封装).
采用该方法构造的矩阵处理函数使得矩阵的高度与宽度证明贯穿于函数处理过程中
,能够真正的保证输入与
.以矩阵乘法函数为例,矩阵乘法的原理如下:
AB 会是一个 m×p 矩阵.
=
其分别为 product’,l_mul_dl、dl_mul_dl、mat_mul_mat.其
.l_mul_dl 函数是表与二维表相
,将其结果以表类型输出,在完成该函数的构造后还需对其
Implementation principle of
l_mul_dl function
函数实现原理
l_mul_dl 函数利用递归实现两个二维表中的表依次内积,
(二维表)的高度与宽度进行证明,如下: