IntervalEndpoints : TYPE = [nat->[bool,bool]] % Index i represent i-th var. It points to a qualification % of lowwer and upper bounds of the variable in a box. It's either open/closed % or bounded/unbounded.
Vars : TYPE = [nat->real] % Index i represents i-th var. % It points to the value of that variable.
DegreeMono : TYPE = [nat->nat] % Index i represents i-th var. It points to the degree of that var.
CoeffMono : TYPE = [nat->nat] %
Polynomial : TYPE = [nat->real] % Index i represents degree i. It points to the coeffient on that % degree
Polyproduct : TYPE = [nat->Polynomial] % Index i represents i-th var. % It points to a univariate polynomial on that variable
Coeff : TYPE = [nat->real] % Index i represents degree i. % It points to the coefficient of that var.
MultiPolynomial : TYPE = [nat->Polyproduct] % Index i points to the ith-term (standard polynomial)
MultiBernstein : TYPE = [nat->Polyproduct] % Index i points to the ith-term (Bernstein polynomial)
PolyList : TYPE = list[list[list[real]]] % List representation of multi-variate polynomial
%%% Variables
mpoly : VAR MultiPolynomial
boundedpts,
intendpts : VAR IntervalEndpoints
rel : VAR [[real,real]->bool]
nvars,terms : VAR posnat
v : VAR nat
degmono1,
degmono2,
degmono : VAR DegreeMono
f,
coeffmono1,
coeffmono2,
coeffmono : VAR CoeffMono
Avars,Bvars,
X : VAR Vars
realorder?(rel) : bool = (rel = (<=)) OR (rel = (<)) OR (rel = (>=)) OR (rel = (>))
RealOrder : TYPE = (realorder?)
relreal : VAR RealOrder
edge_point?(degmono,nvars,f,intendpts,v)(ep:bool) : bool =
v <= nvars AND
(ep IMPLIESFORALL (i:subrange(v,nvars-1)):
f(i) = 0 AND intendpts(i)`1 OR
degmono(i)/=0 AND f(i) = degmono(i) AND intendpts(i)`2)
interval_between?(A,B:real,intpt,bdpt:[bool,bool])(xyz:real): bool = LET relA: [[real,real]->bool]= IF intpt`1 THEN <= ELSE < ENDIF,
relB: [[real,real]->bool]= IF intpt`2 THEN <= ELSE < ENDIF IN
(bdpt`1 AND bdpt`2 IMPLIES A < B) AND
(bdpt`1 OR bdpt`2) AND
(bdpt`1 IMPLIES relA(A,xyz)) AND
(bdpt`2 IMPLIES relB(xyz,B))
%%% Translate intervals [A,B],(A,B],[A,B),(A,B),[A,infty),(A,infty),(-infty,B] %%% (-infty,B) to [0,1],(0,1],[0,1),(0,1),(0,1],(0,1),(0,1],(0,1), respectively
interval_endpoints_inf_trans(Avars,Bvars,intendpts,boundedpts)(i:nat): [bool,bool] = IF (boundedpts(i)`1 AND boundedpts(i)`2) THEN intendpts(i) ELSIF boundedpts(i)`1 THEN (FALSE,intendpts(i)`1) ELSE (FALSE,intendpts(i)`2) ENDIF
%%% Translate X to [Avars,Bvars] for Arrays
denormalize_lambda(nvars,X,boundedpts)(Avars,Bvars) : Vars = LAMBDA (i:nat): IF i < nvars THEN IF (boundedpts(i)`1 AND boundedpts(i)`2) THEN
Avars(i) + X(i)*(Bvars(i)-Avars(i)) ELSIF boundedpts(i)`1 AND X(i)/=0 THEN
(1+X(i)*(Avars(i)-1))/X(i) ELSIF boundedpts(i)`2 AND X(i)/=0 THEN
(-1-X(i)*(-Bvars(i)-1))/X(i) ELSE 0 ENDIF ELSE 0 ENDIF
normalize_lambda(nvars,X,boundedpts)(ABvars:(lt_below?(nvars))) : Vars = LAMBDA (i:nat): LET (Avars,Bvars) = ABvars IN IF i < nvars AND (boundedpts(i)`1 IMPLIES
X(i)/=Avars(i)-1) AND (boundedpts(i)`2 IMPLIES X(i)/=Bvars(i)+1) THEN IF (boundedpts(i)`1 AND boundedpts(i)`2) THEN
(X(i)-Avars(i))/(Bvars(i)-Avars(i)) ELSIF boundedpts(i)`1 THEN
1/(X(i)-Avars(i)+1) ELSIF boundedpts(i)`2 THEN
1/(Bvars(i)+1-X(i)) ELSE 0 ENDIF ELSE 0 ENDIF
denormalize_listreal_rec(l:list[real],nnvars:upfrom(length(l)),Avars,Bvars,boundedpts): RECURSIVE
{norml : listn[real](length(l)) | FORALL(i:below(length(l))) :
nth(norml,i) = LET n = nnvars-length(l) IN IF n+i<nnvars THEN IF (boundedpts(n+i)`1 AND boundedpts(n+i)`2) THEN
Avars(n+i) + nth(l,i)*(Bvars(n+i)-Avars(n+i)) ELSIF boundedpts(n+i)`1 AND nth(l,i)/=0 THEN
(1+nth(l,i)*(Avars(n+i)-1))/nth(l,i) ELSIF boundedpts(n+i)`2 AND nth(l,i)/=0 THEN
(-1-nth(l,i)*(-Bvars(n+i)-1))/nth(l,i) ELSE 0 ENDIF ELSE 0 ENDIF} = CASES l OF
null : null,
cons(a,r) : cons(LET n = nnvars-length(l) IN IF n<nnvars THEN IF (boundedpts(n)`1 AND boundedpts(n)`2) THEN
Avars(n) + a*(Bvars(n)-Avars(n)) ELSIF boundedpts(n)`1 AND a/=0 THEN
(1+a*(Avars(n)-1))/a ELSIF boundedpts(n)`2 AND a/=0 THEN
(-1-a*(-Bvars(n)-1))/a ELSE 0 ENDIF ELSE 0 ENDIF,
denormalize_listreal_rec(cdr(l),nnvars,Avars,Bvars,boundedpts)) ENDCASES MEASURE l BY <<
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.