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: gs_circle.pvs   Sprache: PVS

Original von: PVS©

%------------------------------------------------------------------------------
% gs_circle.pvs
% ACCoRD v.1.0
%
% Ground speed circle solutions satisfy the following equations:
%   sq(s+v*t) = sq(D)       [2D]
%   v = l*vo - vi           [2D]
%   abs((s+v*t)`z) = H
%
% It is shown that ground speed circle solutions are ground speed only 
% solutions for the ownship.
%
% The sign value dir determines horizontal direction (Entry/Exit).
% The sign value irt determines two possible ground speed circle solutions.  
%------------------------------------------------------------------------------

gs_circle[D,H: posreal] : THEORY
BEGIN
  
   IMPORTING gs_only[D],
             circle_solutions[D,H],
             vertical_criterion[D,H]

  s,nvo     : VAR Vect3
  sp        : VAR Sp2_vect3
  vo,vi     : VAR Nzv2_vect3 
  dir,irt,
  epsh,epsv : VAR Sign

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

  % vectors_2D.zero indicates no ground speed solution

  gs_circle(s,vo,vi,dir,irt): {nvo | nz_vect2?(nvo) => gs_only_3D?(vo)(nvo)} =
    IF vo`z = vi`z THEN zero
    ELSE
      LET t = Theta_H(s`z,vo`z-vi`z,-dir) IN
      IF t > 0 THEN
        LET nvo2 = gs_only_circle(s,vo,vi,t,dir,irt) IN
          nvo2 WITH [z |-> vo`z] 
      ELSE
         zero
      ENDIF
    ENDIF

  gs_circle?(s,vo,vi,dir)(nvo) : bool =
    nz_vect2?(nvo) AND
    EXISTS (irt): nvo = gs_circle(s,vo,vi,dir,irt)

  gs_circle?(s,vo,vi)(nvo) : MACRO bool =
    EXISTS (dir): gs_circle?(s,vo,vi,dir)(nvo)

  gs_vertical(s,vo,vi,epsh,epsv): {nvo | nz_vect2?(nvo) => 
                                         gs_only_3D?(vo)(nvo)} =
    IF vo`z = vi`z THEN zero
    ELSE LET v = vo-vi,
             dir:Sign = IF abs(s`z) >= H THEN epsv*sign(s`z) ELSE Entry ENDIF,
             t = Theta_H(s`z,v`z,-dir) IN
      IF t > 0 AND epsv = sign(s`z + t*v`z) THEN
        LET nvo2 = gs_only_vertical(s,vo,vi,t,dir) IN
          IF horizontal_los?(s) OR horizontal_criterion?(s,epsh)(nvo2-vo) THEN
            nvo2 WITH [z |-> vo`z] 
          ELSE
            zero
          ENDIF
      ELSE
         zero
      ENDIF
    ENDIF

  gs_vertical?(s,vo,vi,epsh,epsv)(nvo) : bool =
    nz_vect2?(nvo) AND
    nvo = gs_vertical(s,vo,vi,epsh,epsv)

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

  gs_circle_nzvz : LEMMA
    gs_circle?(s,vo,vi,dir)(nvo) IMPLIES
    vo`z /= vi`z 

  gs_circle_solution_2D : LEMMA
    gs_circle?(s,vo,vi,dir)(nvo) IMPLIES
      circle_solution_2D?(s,nvo-vi,Theta_H(s`z,vo`z-vi`z,-dir),dir)

  gs_circle_solution : LEMMA
    gs_circle?(s,vo,vi,dir)(nvo) IMPLIES
      circle_solution?(s,nvo-vi,Theta_H(s`z,vo`z-vi`z,-dir),dir)

  gs_circle_independence: THEOREM
    gs_circle?(s,vo,vi,dir)(nvo) IMPLIES
      NOT conflict_ever?(s,nvo-vi)

  gs_circle_complete: THEOREM
    vo`z /= vi`z AND
    gs_only_3D?(vo)(nvo) AND
    circle_solution?(s,nvo-vi,Theta_H(s`z,vo`z-vi`z,-dir),dir)
    IMPLIES
      gs_circle?(s,vo,vi,dir)(nvo)

  gs_vertical_meets_horizontal_criterion : THEOREM
    gs_vertical?(sp,vo,vi,epsh,epsv)(nvo) IMPLIES
    horizontal_criterion?(sp,epsh)(nvo-vo)

  gs_vertical_meets_vertical_criterion : THEOREM
    gs_vertical?(s,vo,vi,epsh,epsv)(nvo) IMPLIES
    vertical_criterion?(epsv)(s,vo-vi)(nvo-vi)

END gs_circle

¤ Dauer der Verarbeitung: 0.14 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