remove(M,i,j): {N |
(rows(M)>1 AND columns(M)>1 IMPLIES
(rows(N)=rows(M)-1 AND columns(N)=columns(M)-1)) AND
(FORALL (m,n): LET newm= IF m>=i OR i>=rows(M) THEN m+1 ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1 ELSE n ENDIFIN
entry(N)(m,n)=entry(M)(newm,newn))} = IF rows(M)=0 OR columns(M)=0 THEN null[list[real]] ELSE
form_matrix(LAMBDA (m,n): LET newm= IF m>=i OR i>=rows(M) THEN m+1 ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1 ELSE n ENDIFIN entry(M)(newm,newn),rows(M)-1,columns(M)-1) ENDIF
rows_remove: LEMMA
rows(remove(M,i,j)) = IF rows(M)=0 or columns(M)=0 THEN 0 ELSE rows(M)-1 ENDIF
columns_remove: LEMMA
columns(remove(M,i,j)) = IF rows(M)<=1 OR columns(M)=0 THEN 0 ELSE columns(M)-1 ENDIF
remove_remove_1_0: LEMMA rows(D)>2 AND
columns(D)>2 AND m<=n AND n<columns(D)-1 AND m<columns(D)-1 IMPLIES
remove(remove(D, 1, n+1), 0, m) =
remove(remove(D, 0, m), 0, n)
remove_remove_1_0_0: LEMMA rows(D)>2 AND
columns(D)>2 AND n<columns(D)-1 IMPLIES
remove(remove(D, 1, 0), 0, n)=remove(remove(D, 0, 1 + n), 0, 0)
remove_remove_1_n: LEMMA rows(D)>2 AND
columns(D)>2 AND n+m<columns(D)-1 IMPLIES
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+1 ELSE m ENDIF,
newn= IF n>=j OR j>=columns(M) THEN n+1 ELSE n ENDIFIN
entry(M)(newm,newn)
det(M): RECURSIVE real = IF null?(M) OR rows(M)/=columns(M) THEN 0 ELSIF rows(M)=1 THEN entry(M)(0,0) ELSE sigma(0,columns(M)-1,LAMBDA (k):
(-1)^k*entry(M)(0,k)*det(remove(M,0,k))) ENDIF MEASURE length(M)
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) ELSE 0 ENDIF
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)=1 THEN cons(v,null[list[real]]) ELSIF i=0 THEN 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)
remove_replace_row: LEMMA columns(D) = length(v) AND rows(D)>1 AND columns(D)>1 IMPLIES
remove(replace_row(k,v)(D),k,j) = remove(D,k,j)
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 ist noch experimentell.