Page 320 - 《软件学报》2021年第6期
P. 320

1894                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021











                                      Fig.13    Type definition of block matrix
                                          图 13   分块矩阵类型定义
         3.2   分块矩阵类型等价性质
             在第 2.2 节中,我们提出了一个新的函数 M_eq 来判别矩阵相等,但该函数不适用于分块矩阵,当使用 M_eq
         来判别分块矩阵相等时,会出现图 14 的情况:
































                       Fig.14   Problems caused by M_eq discriminating the equality of block matrices
                                  图 14   由 M_eq 判别分块矩阵相等引起的问题
             M_eq 函数的作用是:提取出矩阵类型中的二维表后,用 eq 函数判别是否相等.由图 14 可以看出:使用 M_eq
         判别分块矩阵时,需要用 eq 函数判别两个二维表相等.这要求二维表中所有元素相等(使用 eq 函数作为判别函
         数),但该分块矩阵中的二维表内元素为用 Record 表示的矩阵类型,在第 2.2 节中我们说明了矩阵类型不能使用
         eq 函数来判别矩阵类型相等的问题,因此我们提出了针对分块矩阵的等价判别函数 MM_eq.该函数是一个递归
         函数,其依赖于两个递归函数 list_Meq 和 dlist_Meq.为了代码的简洁性,在分块矩阵形式化的代码部分我们也采
         用了 Section 机制,在下文的代码中,A,m,n,m2 和 n2 都为局部变量,其类型为(A:Set)(m n m2 n2:nat).
             list_Meq 主要对由矩阵构成的表进行相等判断,该函数对表中的每个相应的矩阵利用 M_eq 函数进行相等
         判断,最后返回的是所有矩阵相等的与命题,其实质是利用 M_eq 来判别两个表内所有相应矩阵相等.下面是
         list_Meq 函数的定义以及图示(如图 15 所示).
             Fixpoint list_Meq(l1 l2:list(Mat A m n)):=
   315   316   317   318   319   320   321   322   323   324   325