products/sources/formale sprachen/PVS/linear_algebra image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: matrix_operator.pvs   Sprache: PVS

Original von: PVS©



% --------------------------------------------------------------
% Linear Algebra library
% Heber Herencia-Zapana NIA
% Gilberto Pérez        University of Coruña Spain
% Pablo Ascariz         University of Coruña Spain
% Felicidad Aguado      University of Coruña Spain
% Date: December, 2013
% ---------------------------------------------------------------
%
%       File Contents
%-----------------------------------------------------------------------------
% This theory gives a one to one relation between maps and matrices
% The inverse of a matrix is defined using the inverse of the associated map
% This theory gives basic properties of the inverse of a matrix
%
% ----------------------------------------------------------------------------
%  This file is a single component of a library of linear 
%  algebra theories. 
%  ---------------------------------------------------------------------------
%  For the most part, we follow the treatmet in the following texts
%
% [FIS] Linear Algebra, S. Friedburg, A.  Insel, and L. Spense, 3rd edition, Prentice-Hall.

% [SA]  Linear Algebra Done Right,  S. Axler. 2nd Edition. Springer-Verlag. 
%
%   [D]  Topology,  J. Dungundji, Allen and Bacon Co.
%
%   [K]  Introductory Functional Analysis,  Kreysizg, Wiley.
%
%   [R]  Convex Analysis, R. Rockafellar, Princeton University Press.   
%
%   [J]   A Lecture or the S-Procedure, U. Jonsson.
%
% --------------------------------------------------------------



matrix_operator: theory

 BEGIN

 IMPORTING matrices,linear_map_def

 A,B: VAR Matrix
 M:VAR Square
 n,m,l,p: VAR posnat




% ------------------------------------------------------------------------------------------  
% Preliminary lemmas
% ------------------------------------------------------------------------------------------

% Given a linear bijective map, its inverse is also linear
 linear_inverse_map_n: LEMMA  FORALL (f: Map_linear(n,n)): bijective?(n)(f)  IMPLIES linear_map_e?(n,n)(inverse(n)(f))


% The composition of linear maps is also linear
 linear_comp: LEMMA FORALL (n,m,l: posnat,g: Map_linear(n,m),f: Map_linear(m,l)):
                   linear_map_e?(n,l)(f o g)


 linear_matrix: LEMMA FORALL (A: Mat(n,m),F: [below[l] -> [Vector[m]]]): A*SigmaV(0,l-1,F) = SigmaV(0,l-1,lambda(i: below[l]):A*F(i))


% The inverse of a map is unique
 equa_inv:LEMMA FORALL(f,g,h: Map(n,n)):(f o g)`mp = id(n)`mp and (h o f)`mp = id(n)`mp
               IMPLIES
               bijective?(n)(f)                     

 inv_uni:LEMMA FORALL(f,g,h: Map(n,n)): (f o g)`mp = id(n)`mp and (h o f)`mp = id(n)`mp
               IMPLIES
               inverse(n)(f) = g and inverse(n)(f) = h 




% ------------------------------------------------------------------------------------------  
% Defines an operator L which associates a Matrix to a linear map f,
% See pg 74[FIS].
% ------------------------------------------------------------------------------------------  

 L(n,m): [Map_linear(n,m) -> Mat(m,n)] = (lambda(f: Map_linear(n,m)): 
                 (#rows:= m,cols:= n,matrix:= lambda(j: below[m],i: below[n]): f`mp(e(n)(i))(j)#))



% ------------------------------------------------------------------------------------------- 
% Defines a operator T that given an n x n square matrix A produces a linear map on the n
% dimensional vector space. 
% -------------------------------------------------------------------------------------------
 
T(n,m): [Mat(m,n) -> Map_linear(n,m)]=(lambda(A: Mat(m,n)): (#dom:= n,codom:= m,mp:= lambda(x: Vector[n]): lambda(j: below[m]): 
                                                            sigma(0,A`cols-1,lambda(i: below[A`cols]): A`matrix(j,i)*x(i))#))  



% -------------------------------------------------------------------------------------------
% The operator T is just multiplying by the matrix
% -------------------------------------------------------------------------------------------  

 T_matr: LEMMA FORALL (A: Mat(m,n),x: Vector[n]): (T(n,m)(A))`mp(x) = A*x; 



% -------------------------------------------------------------------------------------------  
% The map produced by T is a linear map. 
% -------------------------------------------------------------------------------------------  
 
 linear_map_T: LEMMA  FORALL (A: Mat(m,n)): linear_map_e?(n,m)(T(n,m)(A));
 


% -------------------------------------------------------------------------------------------  
% There is bijection between L and T.  
% -------------------------------------------------------------------------------------------  

 map_matrix_bij: LEMMA FORALL (A: Mat(m,n)): L(n,m)(T(n,m)(A)) = A



% -------------------------------------------------------------------------------------------  
% If f and g are equal, then  the matrices produced by applying L to them are also 
% equal.
% -------------------------------------------------------------------------------------------  

 operator: LEMMA FORALL (f,g: Map_linear(n,m)): f = g 
                IMPLIES 
                L(f`dom,f`codom)(f) = L(g`dom,g`codom)(g)              



% -------------------------------------------------------------------------------------------  
%  The operator L is bijective 
% -------------------------------------------------------------------------------------------  

 Iso: LEMMA  bijective?(L(n,m))



% -------------------------------------------------------------------------------------------  
% Given a linear map f, applying L and then T yields f
% -------------------------------------------------------------------------------------------  

 iso_map: LEMMA FORALL (f: Map_linear(n,m)):
               T(n,m)(L(n,m)(f)) = f 

   

% -------------------------------------------------------------------------------------------  
%  The inverse of L is T 
% -------------------------------------------------------------------------------------------

 L_inverse: LEMMA inverse(L(n,m)) = T(n,m)



% -------------------------------------------------------------------------------------------  
%  The operator T is bijective 
% -------------------------------------------------------------------------------------------

 Iso_T : LEMMA bijective?(T(n,m))



% -------------------------------------------------------------------------------------------  
% T takes products of matrices to compositions of maps.
% L takes compositions of maps to products of matrices
% -------------------------------------------------------------------------------------------

 mult_comp: LEMMA FORALL (A: Mat(p,m),B: Mat(m,n)): T(n,p)(A*B) = T(m,p)(A) o T(n,m)(B)

 comp_mult:   LEMMA FORALL (g: Map_linear(n,m),f: Map_linear(m,p)): 
                      L(n,p)(f o g) = L(m,p)(f)*L(n,m)(g)



% -------------------------------------------------------------------------------------------  
% Applying L to the indetiy map yields the identiy matrix.
% Applying T to the idenity matrix yields the identity map
% -------------------------------------------------------------------------------------------  

iso_ide_L: LEMMA  L(n,n)(id(n)) = I(n)

iso_ide_T: LEMMA T(n,n)(I(n)) = id(n)



% -------------------------------------------------------------------------------------------  
% Defines the set of all square  matrices where the T operator applied to them is bijective.
% These will be the set of invertible matrices
% -------------------------------------------------------------------------------------------  

Matrix_inv(n):type= {A: Square | squareMat?(n)(A) and bijective?(n)(T(n,n)(A))}



% ------------------------------------------------------------------------------------------- 
% Defines the inverse of an invertable matrix A  by  applying L to the inverse of the
% map produced by T(A).  See page 94 of [FIS]
% -------------------------------------------------------------------------------------------  

 inverse_invertible: LEMMA 
        
       square?(A) AND 
       squareMat?(n)(A) AND 
                     bijective?(n)(T(n,n)(A)) 
                    
      IMPLIES 
      
      squareMat?(n)(L(n, n)(inverse(n)(T(n, n)(A)))) AND
                    bijective?(n)(T(n, n)(L(n, n)(inverse(n)(T(n, n)(A)))))

 % Definition of the inverse matrix
 inv(n): [Matrix_inv(n) -> Matrix_inv(n)] = (lambda (A: Matrix_inv(n)): L(n,n)(inverse(n)(T(n,n)(A))))






% -------------------------------------------------------------------------------------------  
% The product of the  inverse of a matrix A and A is the identity matrix. 
% See Page 94 of [FIS]
% -------------------------------------------------------------------------------------------  

 iso_inv: LEMMA  squareMat?(n)(M) AND bijective?(n)(T(n,n)(M))  
                 IMPLIES  
                 inv(n)(M)*M  = I(n) AND M*inv(n)(M) = I(n)



% -------------------------------------------------------------------------------------------  
% The matrix given by "inv" is in fact the inverse
% ------------------------------------------------------------------------------------------- 

 inv: LEMMA squareMat?(n)(M) AND  
                      bijective?(n)(T(n,n)(M)) 
                      IMPLIES    
                      inverse?(M)(inv(n)(M))



% Technical lemma
 bijec_prod: LEMMA square?(A) AND squareMat?(n)(A) AND bijective?(n)(T(n,n)(A)) AND
                  square?(M) AND squareMat?(n)(M) AND bijective?(n)(T(n,n)(M)) 
                  IMPLIES 
                  bijective?(n)(T(n,n)(A*M))



%--------------------------------------------------------------------------------------------
% The operator T commutes with the inverse
%--------------------------------------------------------------------------------------------
 map_matrix_bij_inv: LEMMA FORALL (A: Matrix_inv(n)): inverse(n)(T(n,n)(A)) = T(n,n)(inv(n)(A))



% Technical lemma
 tran_inv: LEMMA square?(A) and squareMat?(n)(A) and bijective?(n)(T(n,n)(A))
           IMPLIES 
           inverse?(transpose(A))(transpose(inv(n)(A)))  
  


%----------------------------------------------------------------------------------------------
% The inverse of a transpose matrix is the transpose of the inverse matrix
%----------------------------------------------------------------------------------------------             

bijec_transpose: LEMMA square?(A) AND squareMat?(n)(A) AND 
                       bijective?(n)(T(n,n)(A)) 
                       IMPLIES 
                       bijective?(n)(T(n,n)(transpose(A)))


tran_inv_oper: LEMMA square?(A) and squareMat?(n)(A) and bijective?(n)(T(n,n)(A))
               IMPLIES 
                inv(n)(transpose(A))=transpose(inv(n)(A))



%----------------------------------------------------------------------------------------------
% The inverse of a product of matrices, is the product of the inverses (in the opposite order)
%----------------------------------------------------------------------------------------------

prod_inv:LEMMA square?(A) and squareMat?(n)(A) and bijective?(n)(T(n,n)(A)) AND
               square?(B) and squareMat?(n)(B) and bijective?(n)(T(n,n)(B))
               IMPLIES 
               inverse?(A*B)(inv(n)(B)*inv(n)(A))


prod_inv_oper:LEMMA square?(A) and squareMat?(n)(A) and bijective?(n)(T(n,n)(A)) AND
               square?(B) and squareMat?(n)(B) and bijective?(n)(T(n,n)(B))
               IMPLIES 
               inv(n)(A*B)=inv(n)(B)*inv(n)(A)



% Technical lemma, to prove the ellipsoid theorem

equa_sol: LEMMA FORALL(x,y,b:Vector[n]): square?(M) AND 
                squareMat?(n)(M) and 
                y=M*x+b and 
                bijective?(n)(T(n,n)(M)) 
                IMPLIES 
                x=inv(n)(M)*(y-b) 


end matrix_operator

¤ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff