let n be Nat; :: thesis: for K being Field
for M1, M2 being Matrix of n,K st M1 is invertible & M2 is invertible holds
( M1 * M2 is invertible & (M1 * M2) ~ = (M2 ~ ) * (M1 ~ ) )

let K be Field; :: thesis: for M1, M2 being Matrix of n,K st M1 is invertible & M2 is invertible holds
( M1 * M2 is invertible & (M1 * M2) ~ = (M2 ~ ) * (M1 ~ ) )

let M1, M2 be Matrix of n,K; :: thesis: ( M1 is invertible & M2 is invertible implies ( M1 * M2 is invertible & (M1 * M2) ~ = (M2 ~ ) * (M1 ~ ) ) )
assume A1: ( M1 is invertible & M2 is invertible ) ; :: thesis: ( M1 * M2 is invertible & (M1 * M2) ~ = (M2 ~ ) * (M1 ~ ) )
A2: ( width M1 = n & len M2 = n & width M2 = n & len M1 = n ) by MATRIX_1:25;
A3: ( M1 ~ is Matrix of n,K & M2 ~ is Matrix of n,K & width (M1 ~ ) = n & len (M2 ~ ) = n & width (M2 ~ ) = n & len (M1 ~ ) = n ) by MATRIX_1:25;
A4: ( width ((M2 ~ ) * (M1 ~ )) = n & len ((M2 ~ ) * (M1 ~ )) = n & width (M1 * M2) = n & len (M1 * M2) = n ) by MATRIX_1:25;
A5: ( M2 ~ is_reverse_of M2 & M1 ~ is_reverse_of M1 ) by A1, Def4;
A6: ((M2 ~ ) * (M1 ~ )) * (M1 * M2) = (((M2 ~ ) * (M1 ~ )) * M1) * M2 by A2, A4, MATRIX_3:35
.= ((M2 ~ ) * ((M1 ~ ) * M1)) * M2 by A2, A3, MATRIX_3:35
.= ((M2 ~ ) * (1. K,n)) * M2 by A5, Def2
.= (M2 ~ ) * M2 by MATRIX_3:21
.= 1. K,n by A5, Def2 ;
(M1 * M2) * ((M2 ~ ) * (M1 ~ )) = ((M1 * M2) * (M2 ~ )) * (M1 ~ ) by A3, A4, MATRIX_3:35
.= (M1 * (M2 * (M2 ~ ))) * (M1 ~ ) by A2, A3, MATRIX_3:35
.= (M1 * (1. K,n)) * (M1 ~ ) by A5, Def2
.= M1 * (M1 ~ ) by MATRIX_3:21
.= 1. K,n by A5, Def2 ;
then A7: (M2 ~ ) * (M1 ~ ) is_reverse_of M1 * M2 by A6, Def2;
then M1 * M2 is invertible by Def3;
hence ( M1 * M2 is invertible & (M1 * M2) ~ = (M2 ~ ) * (M1 ~ ) ) by A7, Def4; :: thesis: verum