Theory VS_Connect
section ‹Matrices as Vector Spaces›
text ‹This theory connects the Matrix theory with the VectorSpace theory of
Holden Lee. As a consequence notions like span, basis, linear dependence, etc.
are available for vectors and matrices of the Matrix-theory.›
theory VS_Connect
imports
Matrix
Missing_VectorSpace
Determinant
begin
hide_const (open) Multiset.mult
hide_const (open) Polynomial.smult
hide_const (open) Modules.module
hide_const (open) subspace
hide_fact (open) subspace_def
named_theorems class_ring_simps
abbreviation class_ring :: "'a :: {times,plus,one,zero} ring" where
"class_ring ≡ ⦇ carrier = UNIV, mult = (*), one = 1, zero = 0, add = (+) ⦈"
interpretation class_semiring: semiring "class_ring :: 'a :: semiring_1 ring"
rewrites [class_ring_simps]: "carrier class_ring = UNIV"
and [class_ring_simps]: "mult class_ring = (*)"
and [class_ring_simps]: "add class_ring = (+)"
and [class_ring_simps]: "one class_ring = 1"
and [class_ring_simps]: "zero class_ring = 0"
and [class_ring_simps]: "pow (class_ring :: 'a ring) = (^)"
and [class_ring_simps]: "finsum (class_ring :: 'a ring) = sum"
proof -
let ?r = "class_ring :: 'a ring"
show "semiring ?r"
by (unfold_locales, auto simp: field_simps)
then interpret semiring ?r .
{
fix x y
have "x [^]⇘?r⇙ y = x ^ y"
by (induct y, auto simp: power_commutes)
}
thus "([^]⇘?r⇙) = (^)" by (intro ext)
{
fix f and A :: "'b set"
have "finsum ?r f A = sum f A"
by (induct A rule: infinite_finite_induct, auto)
}
thus "finsum ?r = sum" by (intro ext)