% Part 1: Proving Sturm's Theorem when f has no multiple roots
constructed_sturm_seq_first_signs_eq: LEMMA
x<b AND b<y AND
polynomial(p(0),n(0))(b)=0AND
(FORALL (c:real): x<=c AND c<=y AND polynomial(p(0),n(0))(c)=0IMPLIES
(polynomial(p(1),n(1))(c)/=0AND c = b)) AND
constructed_sturm_sequence?(p,n,m) IMPLIES
((x/=b IMPLIES polynomial(p(0),n(0))(x)/=0) AND
(y/=b IMPLIES polynomial(p(0),n(0))(y)/=0) AND
(x/=b IMPLIES sign_ext(polynomial(p(0),n(0))(x)) = -sign_ext(polynomial(p(1),n(1))(b))) AND
(y/=b IMPLIES sign_ext(polynomial(p(0),n(0))(y)) = sign_ext(polynomial(p(1),n(1))(b))))
sturm_lem_no_roots: LEMMA
x<y AND
(FORALL (c:real,i:nat): i<=m AND x<=c AND c<=y IMPLIES polynomial(p(i),n(i))(c)/=0) IMPLIES
sturm_sig(p,n,m)(x) = sturm_sig(p,n,m)(y)
constructed_sturm_lem_one_simple_root: LEMMA
x<y AND x<b AND b<y AND
(FORALL (c:real,i:nat): i<=m-1AND x<=c AND c<=y AND polynomial(p(i),n(i))(c)=0 IMPLIES c = b) AND
(polynomial(p(0),n(0))(b)=0IMPLIES polynomial(p(1),n(1))(b)/=0) AND
constructed_sturm_sequence?(p,n,m) IMPLIES LET nsc = LAMBDA (xyz:real,pj:nat): number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(xyz),pj) IN
sign_ext(nsc(x,m-1)`lastnz) = sign_ext(nsc(y,m-1)`lastnz) AND
nsc(x,m-1)`num = nsc(y,m-1)`num+(IF polynomial(p(0),n(0))(b)=0THEN1ELSE0ENDIF)
constructed_sturm_lem_one_multi_root: LEMMA
x<y AND x<b AND b<y AND
(FORALL (c:real,i:nat): i<=m-1AND x<=c AND c<=y AND polynomial(p(i),n(i))(c)=0 IMPLIES c = b) AND
polynomial(p(0),n(0))(b)=0AND polynomial(p(1),n(1))(b)=0AND
constructed_sturm_sequence?(p,n,m) IMPLIES LET nsc = LAMBDA (xyz:real,pj:nat): number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(xyz),pj) IN
nsc(x,m-1)`num = nsc(y,m-1)`num+1
constructed_sturm_lem_edge_root: LEMMA
x<y AND (x=b OR y=b) AND
(FORALL (c:real,i:nat): i<=m-1AND x<=c AND c<=y AND polynomial(p(i),n(i))(c)=0 IMPLIES c = b) AND
(polynomial(p(0),n(0))(b)=0IMPLIES polynomial(p(1),n(1))(b)/=0) AND
constructed_sturm_sequence?(p,n,m) IMPLIES LET nsc = LAMBDA (xyz:real,pj:nat): number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(xyz),pj) IN
sign_ext(nsc(x,m-1)`lastnz) = sign_ext(nsc(y,m-1)`lastnz) AND
nsc(x,m-1)`num = nsc(y,m-1)`num+(IF b=y AND polynomial(p(0),n(0))(b)=0THEN1ELSE0ENDIF)
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,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))
constructed_sturm_lem_no_roots_full: LEMMA
x<y AND
(FORALL (c:real,i:nat): i<=m-1AND x<c AND c<=y IMPLIES polynomial(p(i),n(i))(c)/=0) AND
constructed_sturm_sequence?(p,n,m) AND
(polynomial(p(0),n(0))(x)=0IMPLIES
polynomial(p(1),n(1))(x)/=0) IMPLIES
sturm_sig(p,n,m-1)(x) = sturm_sig(p,n,m-1)(y)
sturm: LEMMA
x<y AND
constructed_sturm_sequence?(p,n,m) AND
(polynomial(p(1),n(1))(x)/=0OR polynomial(p(0),n(0))(x)/=0) AND
(polynomial(p(1),n(1))(y)/=0OR polynomial(p(0),n(0))(y)/=0) IMPLIES LET nsc = LAMBDA (xyz:real): number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(xyz),m-1),
Nroots = nsc(x)`num-nsc(y)`num IN Nroots>=0ANDEXISTS (bij: [below(Nroots)->{xr:real|x<xr AND xr<=y AND polynomial(p(0),n(0))(xr)=0}]):
bijective?(bij)
sturm_unbounded_left: LEMMA
constructed_sturm_sequence?(p,n,m) AND
(polynomial(p(1),n(1))(y)/=0OR polynomial(p(0),n(0))(y)/=0) IMPLIES LET nscy = number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(y),m-1),
nscninf = number_sign_changes(LAMBDA (i): (-1)^(n(i))*p(i)(n(i)),m-1),
Nroots = nscninf`num-nscy`num IN Nroots>=0ANDEXISTS (bij: [below(Nroots)->{xr:real|xr<=y AND polynomial(p(0),n(0))(xr)=0}]):
bijective?(bij)
sturm_unbounded_right: LEMMA
constructed_sturm_sequence?(p,n,m) AND
(polynomial(p(1),n(1))(x)/=0OR polynomial(p(0),n(0))(x)/=0) IMPLIES LET nscx = number_sign_changes(LAMBDA (i): polynomial(p(i),n(i))(x),m-1),
nscinf = number_sign_changes(LAMBDA (i): p(i)(n(i)),m-1),
Nroots = nscx`num-nscinf`num IN Nroots>=0ANDEXISTS (bij: [below(Nroots)->{xr:real|xr>x AND polynomial(p(0),n(0))(xr)=0}]):
bijective?(bij)
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.