products/sources/formale sprachen/PVS/ACCoRD image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: horizontal_los.pvs   Sprache: PVS

Original von: PVS©

%------------------------------------------------------------------------------
% horizontal_los.pvs
% ACCoRD v.1.0
%
% Algorithms to horizontally recover from Loss of Separation 
%------------------------------------------------------------------------------

horizontal_los[D: posreal] : THEORY
BEGIN

  IMPORTING vectors@perpendicular_2D,
       horizontal[D],            
     old_horiz_los_criterion,
            gs_only[D],
            trk_only[D],
            opt_trk_gs[D],
     circle_optimum_2D,
     wedge_optimum_2D
  
  s         : VAR LoS_vect2
  vo,vi     : VAR Nz_vect2
  v,nvo,nvi : VAR Vect2
  t,ti,to   : VAR posreal % Upper bound to time to recover separation
  irt       : VAR Sign
  MinRelSpeed,
  MinGS,MaxGS,
  MinRelSpeedo,
  MinGSo,MaxGSo,
  MinRelSpeedi,
  MinGSi,MaxGSi: VAR posreal

  %------------%
  % ALGORITHMS %
  %------------%

  sDs(s): posreal = norm(s)*D-sqv(s)

  gs_los(s,vo,vi,MinGS,MaxGS,MinRelSpeed,irt): {nvo | nz_vect2?(nvo) => 
                                 gs_only?(vo)(nvo) AND MinGS <= norm(nvo) AND norm(nvo) <= MaxGS} =
    LET nv = max_segment_point_in_slice(zero,-vi,(1/norm(vo))*vo,MinGS,MaxGS,s,irt*perpR(s))
    IN
      IF intersects_segment_fun?(zero,-vi,(1/norm(vo))*vo,MinGS,MaxGS,s,irt*perpR(s)) AND norm(nv)>=MinRelSpeed THEN
        nv+vi
      ELSE
        zero
      ENDIF

  gs_los_def: LEMMA LET nvo = gs_los(s,vo,vi,MinGS,MaxGS,MinRelSpeed,irt) IN
    (nvo/=zero IMPLIES
      gs_only?(vo)(nvo) AND 
      MinGS <= norm(nvo) AND 
      norm(nvo) <= MaxGS AND
      s*(nvo-vi)>=0 AND
      norm(nvo-vi)>=MinRelSpeed AND
      ((nvo-vi/=zero OR MinRelSpeed>0) IMPLIES divergent?(s,nvo-vi)) AND
      irt*det(s,nvo-vi)<=0) AND
        (FORALL (nvo2:Vect2):
   gs_only?(vo)(nvo2) AND 
         MinGS <= norm(nvo2) AND 
         norm(nvo2) <= MaxGS AND
   divergent?(s,nvo2-vi) AND
   irt*det(s,nvo2-vi)<=0 AND
   norm(nvo2-vi)>=MinRelSpeed IMPLIES
   norm(nvo2-vi)<=norm(nvo-vi)
   AND
   nvo/=zero)

  gs_los?(s,vo,vi,MinGS,MaxGS,MinRelSpeed)(nvo) : bool =
    nz_vect2?(nvo) AND
    EXISTS (irt): nvo = gs_los(s,vo,vi,MinGS,MaxGS,MinRelSpeed,irt)

  trk_los(s,vo,vi,MinRelSpeed,irt): {nvo | nz_vect2?(nvo) => 
                                 trk_only?(vo)(nvo)} =
    LET nv = max_circle_point_in_slice(zero,-vi,norm(vo),s,irt*perpR(s))
    IN
      IF intersects_circle_fun?(nv,-vi,norm(vo)) AND norm(nv)>=MinRelSpeed THEN
        nv+vi
      ELSE 
        zero
      ENDIF

  trk_los_def: LEMMA LET nvo = trk_los(s,vo,vi,MinRelSpeed,irt) IN
    (nvo/=zero IMPLIES
      norm(nvo) = norm(vo) AND
      s*(nvo-vi)>=0 AND
      norm(nvo-vi)>=MinRelSpeed AND
      ((nvo-vi/=zero OR MinRelSpeed>0) IMPLIES divergent?(s,nvo-vi)) AND
      irt*det(s,nvo-vi)<=0) AND
        (FORALL (nvo2:Vect2):
   norm(nvo2) = norm(vo) AND
   divergent?(s,nvo2-vi) AND
   irt*det(s,nvo2-vi)<=0 AND
   norm(nvo2-vi)>=MinRelSpeed IMPLIES
   norm(nvo2-vi)<=norm(nvo-vi)
   AND
   nvo/=zero)

  trk_los?(s,vo,vi,MinRelSpeed)(nvo) : bool =
    nz_vect2?(nvo) AND
    EXISTS (irt) : nvo = trk_los(s,vo,vi,MinRelSpeed,irt)

  % opt_los(s,vo,vi,t): {nvo | nz_vect2?(nvo) => 
  %                            optimal?(vo,Vdir(s,vo-vi))(nvo)} =
  %   LET v = vo-vi IN
  %   IF t*(s*v) < sDs(s) THEN
  %     opt_trk_gs_dot(s,vo,vi,sDs(s)/t)
  %   ELSE
  %     vo
  %   ENDIF

  % opt_los?(s,vo,vi,t)(nvo) : bool =
  %   nz_vect2?(nvo) AND
  %   nvo = opt_los(s,vo,vi,t)

  los_recovery?(s,vo,vi,MinRelSpeed,MinGS,MaxGS,MinRelSpeed)(nvo) : bool =
    gs_los?(s,vo,vi,MinGS,MaxGS,MinRelSpeed)(nvo) OR
    trk_los?(s,vo,vi,MinRelSpeed)(nvo)

  %----------%
  % LEMMAS   %
  %----------%

  los_recovery_meets_criteria : LEMMA
    los_recovery?(s,vo,vi,MinRelSpeed,MinGS,MaxGS,MinRelSpeed)(nvo)
    IMPLIES
      horizontal_los_crit?(s,MinRelSpeed,-sign(det(s,nvo-vi)))(nvo-vi)

  %-------------------------%
  % THEOREM: Independence   %
  %-------------------------%

  los_recovery_independence : THEOREM
    los_recovery?(s,vo,vi,MinRelSpeed,MinGS,MaxGS,MinRelSpeed)(nvo)
    IMPLIES
      divergent?(s,nvo-vi) AND
      norm(nvo-vi)>=MinRelSpeed

  %-------------------------%
  % THEOREM: Coordination   %
  %-------------------------%

  los_recovery_coordination : THEOREM
    los_recovery?(s,vo,vi,MinRelSpeedo,MinGSo,MaxGSo,MinRelSpeedo)(nvo) AND
    los_recovery?(-s,vi,vo,MinRelSpeedi,MinGSi,MaxGSi,MinRelSpeedi)(nvi)  AND
    horizontal_entry?(s,vo-vi)
    IMPLIES
      (divergent?(s,nvo-nvi) OR nvo-nvi=zero)

  %%%

END horizontal_los

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




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.


Bot Zugriff