remove(M,i,j): {N |
(rows(M)>1AND columns(M)>1IMPLIES
(rows(N)=rows(M)-1AND columns(N)=columns(M)-1)) AND
(FORALL (m,n): LET newm= IF m>=i OR i>=rows(M) THEN m+1ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1ELSE n ENDIFIN
entry(N)(m,n)=entry(M)(newm,newn))} = IF rows(M)=0OR columns(M)=0THEN null[list[real]] ELSE
form_matrix(LAMBDA (m,n): LET newm= IF m>=i OR i>=rows(M) THEN m+1ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1ELSE n ENDIFIN entry(M)(newm,newn),rows(M)-1,columns(M)-1) ENDIF
remove_remove_1_n: LEMMA rows(D)>2AND
columns(D)>2 AND n+m<columns(D)-1IMPLIES
remove(remove(D, 1, n), 0, m + n)
=remove(remove(D, 0, 1 + m + n), 0, n)
entry_remove: LEMMA
entry(remove(M,i,j))(m,n) = LET newm= IF m>=i OR i>=rows(M) THEN m+1ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1ELSE n ENDIFIN
entry(M)(newm,newn)
swap(i,j)(F)(k,p): real = IF k=i THEN F(j,p) ELSIF k=j THEN F(i,p) ELSE F(k,p) ENDIF
swap_fun_test: LEMMA LET FF = (LAMBDA (i,j:nat): 0) IN
swap(0,1)(FF)(1,1)=0
swap(i,j)(D): {PFM|rows(PFM)=rows(D) AND columns(PFM)=columns(D) AND FORALL (k,p): i<rows(D) AND j<rows(D) IMPLIES entry(PFM)(k,p)=(IF k=i THEN entry(D)(j,p) ELSIF k=j THEN entry(D)(i,p) ELSE entry(D)(k,p) ENDIF)} =
form_matrix(swap(i,j)(entry(D)),rows(D),columns(D))
entry_swap: LEMMA
entry(swap(i,j)(D))(k,p) = IF k<rows(D) AND p<columns(D) THEN swap(i,j)(entry(D))(k,p) ELSE0ENDIF
swap_eq: LEMMA row(D)(i) = row(D)(j) IMPLIES
swap(i,j)(D) = D
det_rows_eq_0: LEMMA i<rows(D) AND j<rows(D) AND
row(D)(i) = row(D)(j) AND i/=j IMPLIES
det(D) = 0
% Multiplying a row by a scalar
replace_row(i,v)(D|columns(D)=length(v)): RECURSIVE
{PFM|rows(PFM)=rows(D) AND columns(PFM)=columns(D) AND
(FORALL (j): row(PFM)(j) = IF j<rows(D) AND j=i THEN v ELSE row(D)(j) ENDIF) AND
(FORALL (j,k): entry(PFM)(j,k)=IF j<rows(D) AND j=i THEN access(v)(k) ELSE entry(D)(j,k) ENDIF)} = IF i>=rows(D) THEN D ELSIF rows(D)=1THEN cons(v,null[list[real]]) ELSIF i=0THEN cons(v,cdr(D)) ELSE cons(car(D),replace_row(i-1,v)(cdr(D))) ENDIFMEASURE rows(D)
entry_replace_row: LEMMA columns(D)=length(v) IMPLIES
entry(replace_row(i,v)(D))(j,k) = (IF j<rows(D) AND j=i THEN access(v)(k) ELSE entry(D)(j,k) ENDIF)
swap_replace_row: LEMMA columns(D)=length(v) AND i<rows(D) AND
j<rows(D) AND k<rows(D) IMPLIES
swap(i,j)(replace_row(k,v)(D)) = (IF i = k THEN replace_row(j,v)(swap(i,j)(D)) ELSIF j = k THEN replace_row(i,v)(swap(i,j)(D)) ELSE replace_row(k,v)(swap(i,j)(D)) ENDIF)
row_replace_row: LEMMA columns(D) = length(v) IMPLIES
row(replace_row(i,v)(D))(j) = IF j<rows(D) AND j=i THEN v ELSE row(D)(j) ENDIF
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 und die Messung sind noch experimentell.