%------------------------------------------------------------------------------ % horizontal.pvs % ACCoRD v1.0 % % This theory provides definitions for horizontal separation and conflict. % % It also provides solutions to the times when a velocity vector % intersects the circular protected zone. Given a current position s, % a vector v intersects the circle of radius D at times Theta_D's that % are roots to the quadratic equation % a = sqv(v) % b = 2*(s*v) % c = sqv(s) - D^2 % The discriminant of this equation is 4*Delta. %------------------------------------------------------------------------------
Sp_vect2 : TYPE = (horizontal_sep?)
Ss_vect2 : TYPE = (strict_horizontal_sep?)
sp : VAR Sp_vect2
ss : VAR Ss_vect2
ss_nzv : JUDGEMENT
Ss_vect2 SUBTYPE_OF Nz_vect2
ss_sp : JUDGEMENT
Ss_vect2 SUBTYPE_OF Sp_vect2
neg_ss : JUDGEMENT
-(ss) HAS_TYPE Ss_vect2
neg_sp : JUDGEMENT
-(sp) HAS_TYPE Sp_vect2
%% Horizontal separation in the direction given by dir (1=after,-1=before)
horizontal_sep_dir_at?(s,v,t1,dir): MACRO bool = FORALL(t2): dir*t2 >= dir*t1 IMPLIES horizontal_sep_at?(s,v,t2)
%% eps chooses between the two solutions of the quadratic equation %% eps = Entry: entry time into protected zone %% eps = Exit : exit time from protected zone
Theta_D(s,(nzv|Delta(s,nzv)>=0),eps):real = LET a = sqv(nzv),
b = s*nzv,
c = sqv(s) - sq(D) IN
root2b(a,b,c,eps)
Theta_D_on_D : LEMMA
Delta(s,nzv) >= 0 IMPLIES LET t = Theta_D(s,nzv,eps) IN
on_D?(s+t*nzv)
horizontal_entry_le : LEMMA
t1 <= t2 AND
sqv(s+t2*v) = sq(D) AND
horizontal_entry_at?(s,v,t2) IMPLIES
sqv(s+t1*v) >= sq(D)
not_horizontal_entry_lt : LEMMA LET t1 = max(0,horizontal_tca(s,nzv)) IN
t2 > 0 AND
sqv(s+t2*nzv) = sq(D) AND NOT horizontal_entry_at?(s,nzv,t2) IMPLIES
t1 < t2 AND
horizontal_los?(s+t1*nzv)
horizontal_los_inside_Theta : LEMMA
Delta(s,nzv) >= 0 IMPLIES
(t > Theta_D(s,nzv,Entry) AND
t < Theta_D(s,nzv,Exit) IFF
horizontal_los?(s+t*nzv))
horizontal_sep_outside_Theta : LEMMA
Delta(s,nzv) >= 0 IMPLIES
(t < Theta_D(s,nzv,Entry) OR
t > Theta_D(s,nzv,Exit) IFF
sqv(s + t*nzv) > sq(D))
not_horiz_sep_inside_closed_Theta: LEMMA
Delta(s,nzv) >= 0 IMPLIES
(t >= Theta_D(s,nzv,Entry) AND
t <= Theta_D(s,nzv,Exit) IFF
sqv(s+t*nzv) <= sq(D))
%% Circle solutions are vectors v such that at time t the ownship is on the %% circle of radius D. If dir=-1, v points into the circle; if dir=1, v points %% outside the circle.
circle_solution_2D?(s,v,t,dir): bool =
on_D?(s+t*v) AND
horizontal_dir_at?(s,v,t,dir)
tangent_vector_not_conflict: LEMMA
Delta(s,v) > 0 AND
(s+t*w)*(s+Theta_D(s,v,dir)*v) = sq(D) AND
w*(s+Theta_D(s,v,dir)*v) = 0 AND
Theta_D(s,v,dir) /= 0 IMPLIES NOT horizontal_conflict?(s,v)
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.