Isabelle:A * 1和A **垫1之间的差异

时间:2013-12-01 20:43:12

标签: isabelle

矩阵的***之间有什么区别? 还有A * 1 and A ** mat 1`?

示例:

lemma myexample:
  fixes A :: "('a::comm_ring_1)^'n∷finite^'n∷finite"
  shows "(A * 1 = A) ∧ (A ** (mat 1) = A)" 
 by (metis comm_semiring_1_class.normalizing_semiring_rules(12) matrix_mul_rid)

1 个答案:

答案 0 :(得分:1)

Isabelle中的矩阵被简单地定义为向量的向量,因此矩阵上的*继承自向量,而向量上的*只是分量乘法。因此,您有(A*B) $ i $ j = A $ i $ j * B $ i $ j,即*是矩阵的逐项乘法。这在任何地方是否真的有用,我不知道 - 我不这么认为。它可能只是将矩阵定义为向量矢量的工件。为矩阵做一个合适的typedef可能更好,并将*定义为矩阵乘法,但必定有一些原因导致为什么没有这样做 - 也许只是因为这是更多的工作和大量的复制代码。

**正确的矩阵乘法。 mat x只是其对角线上x和其他地方0的矩阵,所以当然mat 1是单位矩阵和A ** mat 1 = A

然而,矩阵1也是来自矢量定义的伪像; n维向量1简单地定义为具有n个分量的向量,所有这些分量都是1。因此,矩阵1是其条目全部为1的矩阵,当然还有A * 1 = A。这对我来说似乎没什么用处。