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=0 THEN 1 ELSE 0 ENDIF
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)/=0 IMPLIES 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)=0 THEN poly1 ELSIF GP(k)=1 THEN
(LAMBDA (i:nat): IF i<=KF(k) THEN GF(k)(i) ELSE 0 ENDIF) ELSE polynomial_prod(GF(k),KF(k),GF(k),KF(k)) ENDIF),
tdeg = IF GP(k)=0 THEN 0 ELSIF GP(k)=1 THEN KF(k) ELSE 2*KF(k) ENDIF,
bpoly = (IF k = 0 THEN poly1 ELSE prod_polynomials(GF,KF,GP,k-1) ENDIF),
bdeg = IF k = 0 THEN 0 ELSE sigma(0,k-1,KF*GP) ENDIF,
anspoly = (IF k = 0 THEN tpoly ELSIF GP(k)=0 THEN 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) ELSE 0 ENDIF)}
= LET tpolyinit = (IF GP(k)=0 THEN poly1 ELSIF GP(k)=1 THEN GF(k) ELSE polynomial_prod(GF(k),KF(k),GF(k),KF(k)) ENDIF),
tdeg = IF GP(k)=0 THEN 0 ELSIF GP(k)=1 THEN KF(k) ELSE 2*KF(k) ENDIF,
tpoly = array2list[int](tdeg+1)(tpolyinit),
bpolyinit = (IF k = 0 THEN poly1 ELSE prod_polynomials(GF,KF,GP,k-1) ENDIF),
bdeg = IF k = 0 THEN 0 ELSE sigma(0,k-1,KF*GP) ENDIF,
bpoly = array2list[int](bdeg+1)(bpolyinit),
anspoly = (IF k = 0 THEN tpoly ELSIF GP(k)=0 THEN 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) ELSE 0 ENDIF) IN TQ(a,n,g,d)
TQ_fam_def: LEMMA a(n)/=0 AND (FORALL (i:upto(k)):GF(i)(KF(i))/=0) IMPLIES TQ_fam(k,a,n,GF,KF,GP) = TQ(a,n,prod_polynomials(GF,KF,GP,k),sigma(0,k,KF*GP))
Sol(k,a,(n|a(n)/=0),GF,KF,RelF):
finite_set[real] = {r:real | polynomial(a,n)(r)=0 AND (FORALL (i): i<=k IMPLIES
(IF RelF(i)=-1 THEN polynomial(GF(i),KF(i))(r)<0 ELSIF RelF(i)=1 THEN polynomial(GF(i),KF(i))(r)>0 ELSIF RelF(i)=0 THEN polynomial(GF(i),KF(i))(r)=0 ELSETRUEENDIF))}
Sol_all(k,a,(n|a(n)/=0),GF,KF,RelF6):
finite_set[real] = {r:real | polynomial(a,n)(r)=0 AND (FORALL (i): i<=k IMPLIES
(IF RelF6(i)=0 THEN polynomial(GF(i),KF(i))(r)=0 ELSIF RelF6(i)=1 THEN polynomial(GF(i),KF(i))(r)>0 ELSIF RelF6(i)=2 THEN polynomial(GF(i),KF(i))(r)<0 ELSIF RelF6(i)=3 THEN polynomial(GF(i),KF(i))(r)/=0 ELSIF RelF6(i)=4 THEN polynomial(GF(i),KF(i))(r)>=0 ELSIF RelF6(i)=5 THEN polynomial(GF(i),KF(i))(r)<=0 ELSETRUEENDIF))}
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<6 THEN i ELSIF i<=9 THEN i+4 ELSE 0 ENDIF
ntest: posnat = 9
GFtest(i)(j): int = IF i<j THEN 1+j ELSIF i+j<=6 THEN i*j ELSIF j<=7 THEN 2 ELSE 0 ENDIF
KFtest(i): nat = 7
GPtest(i): nat = IF i <=3 THEN 2 ELSIF i<=5 THEN 1 ELSE 0 ENDIF
sig(ii:subrange(0,2)): subrange(-1,1) = IF ii=0 THEN 0 ELSIF ii=1 THEN 1 ELSE -1 ENDIF
split_index_fun_entry( F:[nat->[nat, nat]], i:nat): [nat->[nat, nat]] = IF F(i)`1<3 THEN F ELSIF F(i)`1 = 3 THEN F WITH [i:=(1,2)] ELSIF F(i)`1 = 4 THEN 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 = 0 THEN 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)
% unproven, but should be very easy.
splits_to_base3: LEMMAFORALL (n:posnat, k:nat, i:below(n)):
split_base6(n, k)(i) = IF base_n(6,k)(i)<3 THEN (base_n(6,k)(i), 99) ELSIF base_n(6,k)(i) = 3 THEN (1,2) ELSIF base_n(6,k)(i) = 4 THEN (0,1) ELSE (0,2) ENDIF
sign_prod_coeff6(k,GP,i): subrange(-1,1) = IF i>=6^(k+1) OR (EXISTS (p:upto(k)): base_n(6,i)(p)>=3) THEN 0 ELSE sign_prod(k,GP,sig_seq(base_n(6,i))) ENDIF
NSol_seq6(k,a,(n|a(n)/=0),GF,KF)(i): nat = IF i>=6^(k+1) OR (EXISTS (p:upto(k)): base_n(6,i)(p)>=3) THEN 0 ELSE NSol(k,a,n,GF,KF,sig_seq(base_n(6,i))) ENDIF
sign_coeff6_zero_entry(k,TQRow,i,j): subrange(-1,1) = LET bij = base_n(6,i)(j) IN IF TQRow(j)=0 THEN (IF bij>=3 THEN 0 ELSE 1 ENDIF) ELSIF TQRow(j)=1 THEN (IF bij=1 THEN 1 ELSIF bij=2 THEN -1 ELSE 0 ENDIF) ELSIF TQRow(j)=2 THEN (IF 1<=bij AND bij<=2 THEN 1 ELSE 0 ENDIF) ELSIF TQRow(j)=3 THEN (IF 1<=bij AND bij<=2 THEN -1 ELSIF bij=3 THEN 1 ELSE 0 ENDIF) ELSIF TQRow(j)=4 THEN (IF bij<=1 THEN -1 ELSIF bij=4 THEN 1 ELSE 0 ENDIF) ELSIF TQRow(j)=5 THEN (IF bij=0 OR bij=2 THEN -1 ELSIF bij=5 THEN 1 ELSE 0 ENDIF) ELSE 0 ENDIF
sign_coeff6_zero(k,TQRow,i): subrange(-1,1) = IF i>=6^(k+1) THEN 0 ELSE product[nat](0,k,LAMBDA (j):sign_coeff6_zero_entry(k,TQRow,i,j)) ENDIF
in6?(vk:[nat,nat,nat,nat,nat,nat],j): bool =
(j=vk`1 OR j=vk`2 OR j=vk`3 OR j=vk`4 OR j=vk`5 OR j=vk`6)
sigma_disjoinction_6: LEMMA FORALL (v:[nat->[nat,nat,nat,nat,nat,nat]]):
(FORALL (j): j<=6^(k+1)-1 IMPLIESEXISTS (i): i<=6^k-1 AND in6?(v(i),j)) AND
(FORALL (i): i<=6^k-1 IMPLIES
(v(i)`1 < v(i)`2 AND v(i)`2 < v(i)`3 AND v(i)`3 < v(i)`4 AND v(i)`4 < v(i)`5 AND v(i)`5 < v(i)`6 AND v(i)`6<=6^(k+1)-1)) AND
(FORALL (i,d,j): i<=6^k-1 AND d<=6^k-1 AND j<=6^(k+1)-1 AND in6?(v(i),j) AND in6?(v(d),j) IMPLIES i = d) AND
(FORALL (i): i<=6^k-1 IMPLIES
(g(v(i)`1)+g(v(i)`2)+g(v(i)`3)+g(v(i)`4)+g(v(i)`5)+g(v(i)`6)) = 0) IMPLIES sigma(0,6^(k+1)-1,g)=0
mult_tarski_query_simple_6_above_2: LEMMA
a(n)/=0 AND (FORALL (i:upto(k)):GF(i)(KF(i))/=0) AND
(EXISTS (i:upto(k)): TQRow(i)>2) IMPLIES
sigma(0,6^(k+1)-1,LAMBDA (i:nat):
sign_coeff6_zero(k,TQRow,i)*NSol_all(k,a,n,GF,KF,base_n(6,i)))=0
END poly_families
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
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.