bands_2D[D:posreal,B:nnreal,T: {AB: posreal|AB>B},gsmin,gsmax:posreal] : THEORY
BEGIN
ASSUMING
gs_min_lt_max: ASSUMPTION gsmin < gsmax
ENDASSUMING
IMPORTING gs_bands_2D[D,B,T],
trk_bands_2D[D,B,T],
fseqs_aux_2D[gsmin,gsmax]
nvo : VAR Vect2
vo,vi : VAR Nz_vect2
sp : VAR Sp_vect2
s : VAR Vect2
trkb : VAR (trk_fseq?)
gsb : VAR (gs_fseq?)
x : VAR real
trk : VAR nnreal_lt_2pi
trk2 : VAR {r: real | 0<=r AND r<=2*pi}
gsp : VAR {r: real | gsmin<=r AND r<=gsmax}
%------------%
% ALGORITHMS %
%------------%
trk_critical(nvo:Vect2) : (trk_fseq?) =
IF nvo /= zero THEN addend(track(nvo),emptyseq)
ELSE emptyseq
ENDIF
trk_critical_rew: LEMMA
trk_critical(nvo) = IF nvo /= zero THEN singleton(track(nvo))
ELSE emptyseq
ENDIF
member_trk_critical: LEMMA
member(x,trk_critical(nvo))
IMPLIES
x = track(nvo)
trk_critical_composition: LEMMA
FORALL (trkfs: fseq, nvo:Vect2, x:real):
member(x,trkfs o trk_critical(nvo))
IFF
((nvo /= zero AND x = track(nvo))
OR
member(x,trkfs))
trk_bands(s,vo,vi) : {fs : (trk_fseq?) | increasing?(fs)} =
sort(
LET fs2 : (trk_fseq?) =
IF horizontal_sep?(s) THEN
trk_critical(trk_line_eps_irt(s,vo,vi,-1,-1)) o
trk_critical(trk_line_eps_irt(s,vo,vi,-1, 1)) o
trk_critical(trk_line_eps_irt(s,vo,vi, 1,-1)) o
trk_critical(trk_line_eps_irt(s,vo,vi, 1, 1)) o
trk_critical(trk_only_circle(s,vo,vi,T,Entry,-1)) o
trk_critical(trk_only_circle(s,vo,vi,T,Entry, 1))
ELSE
emptyseq
ENDIF,
fs3 : (trk_fseq?) =
IF B > 0 THEN
trk_critical(trk_only_circle(s,vo,vi,B,Exit,-1)) o
trk_critical(trk_only_circle(s,vo,vi,B,Exit, 1))
ELSE
emptyseq
ENDIF
IN
(fs2 o fs3) o
(addend(0,emptyseq) o addend(2*pi,emptyseq)))
trk_bands_not_empty : LEMMA
trk_bands(s,vo,vi)`length > 1
AUTO_REWRITE- member
trk_bands_critical: LEMMA
(trk_critical?(s,vo,vi)(trk2) OR to2pi(trk2) = 0) IFF
member(trk2,trk_bands(s,vo,vi))
gs_critical(nvo:Vect2) : (gs_fseq?) =
IF nvo/=zero AND gsmin<=gs(nvo) AND gs(nvo)<=gsmax THEN addend(gs(nvo),emptyseq)
ELSE emptyseq
ENDIF
gs_critical_rew: LEMMA
FORALL (nvo:Vect2):
gs_critical(nvo) = IF nvo/=zero AND gsmin<=gs(nvo) AND gs(nvo)<=gsmax THEN singleton(gs(nvo))
ELSE emptyseq
ENDIF
member_gs_critical: LEMMA
FORALL (nvo:Vect2,x:real):
member(x,gs_critical(nvo))
IMPLIES
x = gs(nvo)
gs_critical_composition: LEMMA
FORALL (gsfs: (gs_fseq?), nvo:Vect2, x:real):
member(x,gsfs o gs_critical(nvo))
IFF
((nz_vect2?(nvo) AND x = gs(nvo) AND gsmin<=gs(nvo) AND gs(nvo)<=gsmax)
OR
member(x,gsfs))
gs_bands(s,vo,vi) : {fs: (gs_fseq?) | increasing?(fs)} =
sort(
LET fs2 : (gs_fseq?) =
IF horizontal_sep?(s) THEN
gs_critical(gs_line_eps(s,vo,vi,-1)) o
gs_critical(gs_line_eps(s,vo,vi, 1)) o
gs_critical(gs_only_circle(s,vo,vi,T,Entry,-1)) o
gs_critical(gs_only_circle(s,vo,vi,T,Entry, 1))
ELSE
emptyseq
ENDIF,
fs3 : (gs_fseq?) =
IF B > 0 THEN
gs_critical(gs_only_circle(s,vo,vi,B,Exit,-1)) o
gs_critical(gs_only_circle(s,vo,vi,B,Exit, 1))
ELSE
emptyseq
ENDIF
IN
(fs2 o fs3) o
(addend(gsmin,emptyseq) o addend(gsmax,emptyseq)))
gs_bands_not_empty : LEMMA
gs_bands(s,vo,vi)`length > 1
gs_bands_critical: LEMMA
(gs_critical?(s,vo,vi)(gsp) OR gsp = gsmin OR gsp = gsmax) IFF
member(gsp,gs_bands(s,vo,vi))
%------------%
% THEOREMS %
%------------%
red_trk_band?(s,vo,vi,trkb)(i:subrange(0,trkb`length-2)) : bool =
LET mp = (trkb`seq(i)+trkb`seq(i+1))/2 in
cd2d?(s,Vtrk(vo,vi)(mp))
trk_red_bands : THEOREM
LET trkb = trk_bands(s,vo,vi) IN
FORALL (i:{ii: subrange(0,trkb`length-2)| trkb`seq(ii) /= trkb`seq(ii+1)}) :
red_trk_band?(s,vo,vi,trkb)(i) IFF
(FORALL (x | trkb`seq(i) < x AND x < trkb`seq(i+1)):
conflict_2D?(s,Vtrk(vo,vi)(x)))
trk_green_bands : THEOREM
LET trkb = trk_bands(s,vo,vi) IN
FORALL (i:{ii: subrange(0,trkb`length-2)| trkb`seq(ii) /= trkb`seq(ii+1)}) :
NOT red_trk_band?(s,vo,vi,trkb)(i) IFF
(FORALL (x | trkb`seq(i) < x AND x < trkb`seq(i+1)):
NOT conflict_2D?(s,Vtrk(vo,vi)(x)))
red_gs_band?(s,vo,vi,gsb)(i:subrange(0,gsb`length-2)) : bool =
LET mp = (gsb`seq(i)+gsb`seq(i+1))/2 in
cd2d?(s,Vgs(vo,vi)(mp))
gs_red_bands : THEOREM
LET gsb = gs_bands(s,vo,vi) IN
FORALL (i:{ii: subrange(0,gsb`length-2)| gsb`seq(ii) /= gsb`seq(ii+1)}) :
red_gs_band?(s,vo,vi,gsb)(i) IFF
(FORALL (x | gsb`seq(i) < x AND x < gsb`seq(i+1)):
conflict_2D?(s,Vgs(vo,vi)(x)))
gs_green_bands : THEOREM
LET gsb = gs_bands(s,vo,vi) IN
FORALL (i:{ii: subrange(0,gsb`length-2)| gsb`seq(ii) /= gsb`seq(ii+1)}) :
NOT red_gs_band?(s,vo,vi,gsb)(i) IFF
(FORALL (x | gsb`seq(i) < x AND x < gsb`seq(i+1)):
NOT conflict_2D?(s,Vgs(vo,vi)(x)))
END bands_2D
¤ Dauer der Verarbeitung: 0.21 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
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.
|