% The proof of the theorem for the tarski query should be easier than % for sturm's theorem, because one doesn't have to consider roots at the % endpoints. Eventually, the endpoints will be pm infinity.
a,r,g : VAR [nat->real]
p : VAR [nat->[nat->real]]
n : VAR [nat->nat]
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
% k is the degree of g
constructed_sturm_sequence?(p,n,g,k,m): bool =
(FORALL (i:below(m)): p(i)(n(i))/=0) AND
(FORALL (i,j:subrange(1,m-1)): i<j IMPLIES n(i)>n(j)) AND
n(0)>0AND
p(1) = polynomial_prod(g,k,poly_deriv(p(0)),n(0)-1) AND n(1) = k+n(0)-1AND
n(m) = 0AND p(m)(0) = 0AND
(FORALL (j:nat): j>1AND j<=m IMPLIESLET pd = poly_divide(p(j-2),n(j-2))(p(j-1),n(j-1))(0) IN EXISTS (c:posreal):
polynomial(p(j),n(j)) =
polynomial(-c*pd`rem,pd`rdeg)) AND m>=2AND g(k)/=0
default_root_degree?(p,n,g,k,m,y)(d): bool =
((d=0AND root_degree(p(0),n(0))(y)=0AND polynomial(p(0),n(0))(y)/=0AND
polynomial(g,k)(y)/=0) OR
(root_degree(p(0),n(0))(y)=d+1AND root_degree(p(1),n(1))(y)=d AND
polynomial(g,k)(y)/=0) OR
(root_degree(p(0),n(0))(y)=d AND root_degree(p(1),n(1))(y)=d AND
root_degree(g,k)(y)=1AND polynomial(g,k)(y)=0) OR
(root_degree(p(0),n(0))(y)=d AND root_degree(p(1),n(1))(y)>d AND
root_degree(g,k)(y)>0AND polynomial(g,k)(y)=0)) AND
(FORALL (i:nat): i<m AND root_degree(p(i),n(i))(y)/=d IMPLIES
((i>0IMPLIES root_degree(p(i-1),n(i-1))(y)=d) AND
(i<m-1IMPLIES root_degree(p(i+1),n(i+1))(y)=d))) AND
root_degree(p(m-1),n(m-1))(y)=d
constructed_sturm_seq_root_degrees: LEMMA
constructed_sturm_sequence?(p,n,g,k,m) IMPLIES
((polynomial(g,k)(y)=0AND
default_root_degree?(p,n,g,k,m,y)(root_degree(p(0),n(0))(y))) OR
(polynomial(g,k)(y)/=0AND
default_root_degree?(p,n,g,k,m,y)(max(root_degree(p(0),n(0))(y)-1,0))))
default_root_deg(p,n,g,k,m)(y): nat = IF polynomial(g,k)(y)=0THEN root_degree(p(0),n(0))(y) ELSE max(root_degree(p(0),n(0))(y)-1,0) ENDIF
constructed_sturm_roots_between_enum: LEMMA% THIS NEEDS TO BE FOR ALL P(i) NOT JUST P(0)
x<y AND constructed_sturm_sequence?(p,n,g,k,m) IMPLIES EXISTS ((K:nat|K>=2),enum:[below(K)->real]):
(FORALL (i,j:below(K)): i<j IMPLIES enum(i)<enum(j)) AND
enum(0)=x AND enum(K-1)=y AND
(FORALL (b:real,j:nat): j<=m-1AND x<b AND b<=y AND polynomial(p(j),n(j))(b)=0IMPLIES EXISTS (i:below(K)): b = enum(i))
Sol(a:[nat->real],(m:nat|a(m)/=0),g:[nat->real],k:nat,
rel:[[real,real]->bool],x,y:real,bbelow,babove:bool):
finite_set[real] = {r:real | polynomial(a,m)(r)=0AND rel(polynomial(g,k)(r),0) AND
(bbelow IMPLIES x<=r) AND (babove IMPLIES r<=y)}
Sol_union_top: LEMMAFORALL (z:real): x<=y AND y<=z AND a(m)/=0IMPLIES
union(Sol(a,m,g,k,rel,x,y,bbelow,babove),Sol(a,m,g,k,rel,y,z,bbelow2,babove2)) =
Sol(a,m,g,k,rel,x,z,bbelow AND bbelow2,babove AND babove2)
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.