a,r,g : VAR [nat->int]
n : VAR posnat
d,i,j,k : VAR nat
m: VAR posnat %m : VAR posnat
x,y,c,b : VAR real
rel: VAR [[real,real]->bool]
babove,bbelow,bbelow2,babove2: VAR bool
poly1(i): nat = IF i=0THEN1ELSE0ENDIF
GF: VAR [nat->[nat->int]]
KF: VAR [nat->nat] % degrees
GP: VAR [nat->subrange(0,2)]
RelF,RelF1,RelF2: VAR [nat->subrange(-1,1)]
ll: VAR list[int]
RelF6,TQRow: VAR [nat->subrange(0,5)]
% Forgot powers of the GF's
polynomial_prod_int: LEMMA
rational_pred(polynomial_prod(a,d,g,k)(i)) AND integer_pred(polynomial_prod(a,d,g,k)(i))
prod_polynomials(GF,KF,GP,k): RECURSIVE {a |
(FORALL (x): polynomial(a,sigma(0,k,KF*GP))(x) =
product(0,k,LAMBDA (j): polynomial(GF(j),KF(j))(x)^GP(j))) AND
((FORALL (i): i<=k AND GP(i)/=0IMPLIES GF(i)(KF(i))/=0) IMPLIES a(sigma(0,k,KF*GP))/=0) AND
(FORALL (i): i>sigma(0,k,KF*GP) IMPLIES a(i)=0)}
= LET tpoly = (IF GP(k)=0THEN poly1 ELSIF GP(k)=1THEN
(LAMBDA (i:nat): IF i<=KF(k) THEN GF(k)(i) ELSE0ENDIF) ELSE polynomial_prod(GF(k),KF(k),GF(k),KF(k)) ENDIF),
tdeg = IF GP(k)=0THEN0ELSIF GP(k)=1THEN KF(k) ELSE2*KF(k) ENDIF,
bpoly = (IF k = 0THEN poly1 ELSE prod_polynomials(GF,KF,GP,k-1) ENDIF),
bdeg = IF k = 0THEN0ELSE sigma(0,k-1,KF*GP) ENDIF,
anspoly = (IF k = 0THEN tpoly ELSIF GP(k)=0THEN prod_polynomials(GF,KF,GP,k-1) ELSE polynomial_prod(bpoly,bdeg,tpoly,tdeg) ENDIF) IN anspoly MEASURE k
prod_polynomials_list(GF,KF,GP,k): RECURSIVE {ll |
length(ll)-1=sigma(0,k,KF*GP) AND prod_polynomials(GF,KF,GP,k) =
(LAMBDA (i): IF i<length(ll) THEN nth(ll,i) ELSE0ENDIF)}
= LET tpolyinit = (IF GP(k)=0THEN poly1 ELSIF GP(k)=1THEN GF(k) ELSE polynomial_prod(GF(k),KF(k),GF(k),KF(k)) ENDIF),
tdeg = IF GP(k)=0THEN0ELSIF GP(k)=1THEN KF(k) ELSE2*KF(k) ENDIF,
tpoly = array2list[int](tdeg+1)(tpolyinit),
bpolyinit = (IF k = 0THEN poly1 ELSE prod_polynomials(GF,KF,GP,k-1) ENDIF),
bdeg = IF k = 0THEN0ELSE sigma(0,k-1,KF*GP) ENDIF,
bpoly = array2list[int](bdeg+1)(bpolyinit),
anspoly = (IF k = 0THEN tpoly ELSIF GP(k)=0THEN prod_polynomials_list(GF,KF,GP,k-1) ELSE array2list[int](tdeg+bdeg+1)(
polynomial_prod(bpolyinit,bdeg,tpolyinit,tdeg)) ENDIF) IN anspoly MEASURE k
TQ_fam(k,a,(n|a(n)/=0),GF,(KF|FORALL (i:upto(k)):GF(i)(KF(i))/=0),GP): int = LET ll = prod_polynomials_list(GF,KF,GP,k),
d = length[int](ll)-1,
g = (LAMBDA (i): IF i<=d THEN nth(ll,i) ELSE0ENDIF) IN TQ(a,n,g,d)
sign_ext_prod_polynomials: LEMMA LET RelFF = (LAMBDA (i:nat): sign_ext(polynomial(GF(i),KF(i))(x))) IN sign_ext(polynomial(prod_polynomials(GF,KF,GP,k),sigma(0,k,KF*GP))(x)) = sign_prod(k,GP,RelFF)
% TQ_fam_rec: LEMMA k>0 AND a(n)/=0 AND % (FORALL (i):i<=k IMPLIES GF(i)(KF(i))/=0) % IMPLIES % TQ_fam(k,a,n,GF,KF,GP) = % IF GP(k)=0 THEN TQ_fam(k-1,a,n,GF,KF,GP) % ELSIF GP(k)=1 THEN NSol(a,n,prod_polynomials(GF,KF,GP,k),sigma(0,k-1,KF*GP),>)
atest(i): int = IF i<6THEN i ELSIF i<=9THEN i+4ELSE0ENDIF
ntest: posnat = 9
GFtest(i)(j): int = IF i<j THEN1+j ELSIF i+j<=6THEN i*j ELSIF j<=7THEN2ELSE0ENDIF
KFtest(i): nat = 7
GPtest(i): nat = IF i <=3THEN2ELSIF i<=5THEN1ELSE0ENDIF
sig(ii:subrange(0,2)): subrange(-1,1) = IF ii=0THEN0 ELSIF ii=1THEN1 ELSE -1 ENDIF
split_index_fun_entry( F:[nat->[nat, nat]], i:nat): [nat->[nat, nat]] = IF F(i)`1<3THEN F ELSIF F(i)`1 = 3THEN F WITH [i:=(1,2)] ELSIF F(i)`1 = 4THEN F WITH [i:=(0,1)] ELSE F WITH [i:=(0,2)] ENDIF
split_index_fun(F:[nat->[nat, nat]], n:nat): RECURSIVE {G:[nat->[nat, nat]]|
(FORALL (i:upto(n)): G(i) = split_index_fun_entry(F,i)(i)) AND
(FORALL (i:above(n)): G(i) = F(i))} = IF n = 0THEN split_index_fun_entry(F, n) ELSE split_index_fun(split_index_fun_entry(F,n), n-1) ENDIF MEASURE n
% 99 here is arbitrary, only used as an indicator.
fun_to_pairsfun(F:[nat->nat])(i:nat): [nat, nat] = (F(i), 99)
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.