1 / 65

Modelling unordered collections

Modelling unordered collections. Peter Gorm Larsen. Agenda. Set Characteristics and Primitives The Minimum Safety Altitude Warning System The Robot Controller. Set Characteristics. Sets are unordered collections of elements There is only one copy of each element

krysta
Download Presentation

Modelling unordered collections

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modelling unordered collections Peter Gorm Larsen Modelling unordered collections

  2. Agenda • Set Characteristics and Primitives • The Minimum Safety Altitude Warning System • The Robot Controller Modelling unordered collections

  3. Set Characteristics • Sets are unordered collections of elements • There is only one copy of each element • The elements themselves can be arbitrary complex, e.g. they can be sets as well • Sets in VDM++ are finite • Set types in VDM++ are written as: • set ofType Modelling unordered collections

  4. Set Membership • If an object x is a member (an element) of a set A, then we write “x  A”; if it is not a member then we write “x  A”. • “x  A” can be written as “x in set A” • “x  A” can be written as “x not in set A” Modelling unordered collections

  5. Set Enumeration • A set enumeration consists of a comma-separated list enclosed between curly braces, ”{…}” • For example • {1,5,8,1,3} • {true, false} • {{}, {4,3},{2,4}} • {‘g’,’o’,’d’} • {3.567, 0.33455,7,7,7,7} Are all sets • The empty set can be written as “{ }” or “” Modelling unordered collections

  6. The Subset Relation • The set A is said to be a subset of the set B if every element of A is also an element of B. • The subset relation is written as ”A  B” or as ”A subset B” • Quick examples: • {1,2,3}  {1,2,3,4,5} • { }  {1,2,3} • {3,2,3,2}  {2,3} Modelling unordered collections

  7. Set Equality • Two sets are equal if both are subsets of each other i.e. • A  B and B  A implies that A = B • Quick examples: • {2,4,1,2} = {4,1,2} • {true, true, false} = {false, true} • {1,1,1,1,1,1,1,1,1,1,1,1} = {1} • {3,4,5} = {3,5,5} Modelling unordered collections

  8. Proper Subsets • The set A is said to be a propersubset of the set B if every element of A is also an element of B and B has at least member that is not a member of A. • The subset relation is written as ”A  B” or as ”A psubset B” • Quick examples: • {1,2,3}  {1,2,3,4,5} • { }  {1,2,3} • {3,2,3,2}  {2,3} Modelling unordered collections

  9. Set Cardinality • The cardinality of a set is the number of distinct elements i.e. its size • The cardinality of a set S is written as “card S” • Quick examples: • card {1,2,3} • card { } • card {3,2,3,2} Modelling unordered collections

  10. Powersets • If S is a set then the power set of S is the set of all subsets of S. • The powerset of a set S is written as “P S” or “power S” • Quick examples: • power {1,2,2} • power { } • power {3,2,3,1} • power power {6,7} Modelling unordered collections

  11. Set Union • The union of two sets combines all their elements into one set • The union of two sets A and B is written as ”A  B” or ”A union B” • Quick examples: • {1,2,2} union {1,6,5} • { } union {true} • {3,2,3,1} union {4} Modelling unordered collections

  12. Set Intersection • The intersection of two sets is the set of all elements that are in both of the original sets • The intersection of two sets A and B is written as ”A  B” or ”A inter B” • Quick examples: • {1,2,2} inter {1,6,5} • { } inter {true} • {3,2,3,1} inter {4} Modelling unordered collections

  13. Distributed Set Operators • Union and intersection can be distributed over a set of sets • Distributed set union • To be written as  (or dunion in ASCII) • dunion {{ 2,4},{3,1,2},{2,3,4,3}} • dunion {{ 2,4},{3,1,1},{}} • dunion {{true},{false},{}} • Distributed set intersection • To be written as  (or dinter in ASCII) • dinter{{ 2,4},{3,1,2},{2,3,4,3}} • dinter {{ 2,4},{3,1,1},{}} • dinter {{true},{false},{}} Modelling unordered collections

  14. Set Difference • The set difference of two sets A and B is the set of elements from A which is not in B • The set difference of two sets A and B is written as ”A \ B” • Quick examples: • {1,2,2} \ {1,6,5} • { } \ {true} • {3,2,3,1} \ {4} Modelling unordered collections

  15. Overview of Set Operators e in set s1 Membership () A * set of A -> bool e not in set s1 Not membership () A * set of A -> bool s1 union s2 Union ()set of A * set of A -> set of A s1 inter s2 Intersection ()set of A * set of A -> set of A s1 \ s2 Difference (\) set of A * set of A -> set of A s1 subset s2 Subset ()set of A * set of A -> bool s1 psubset s2 Proper subset ()set of A * set of A -> bool s1 = s2 Equality (=) set of A * set of A -> bool s1 <> s2 Inequality (≠)set of A * set of A -> bool card s1 Cardinality set of A -> nat dunion s1 Distr. Union ()set of set of A -> set of A dinter s1 Distr. Intersection ()set of set of A -> set of A power s1 Finite power set (P) set of A -> set of set of A Modelling unordered collections

  16. Set Comprehensions • Using predicates to define sets implicitly • In VDM++ formulated like: • {element | list ofbindings & predicate} • The predicate part is optional • Quick examples: • {3 * x | x : nat & x < 3} or {3 * x | x in set {0,…,2}} • {x | x : nat & x < 5} or {x | x in set {0,…,4}} Modelling unordered collections

  17. Questions • What are the set enumerations for: • {x|x : nat & x < 3} • {x|x : nat & x > 3 and x < 6} • {{y}| y in set {3,1,7,3}} • {x+y| x in set {1,2}, y in set {7,8}} • {mk_(x,y)| x in set {1,2,7}, y in set {2,7,8} & x > y} • {y|y in set {0,1,2} & exists x in set {0,…,3} & x = 2 * y} • {x = 7| x in set {1,…,10} & x < 6} Modelling unordered collections

  18. Set Range Expressions • The set range expression is a special case of a set comprehension. It has the form • {e1, ..., e2} • where e1 and e2 are numeric expressions. The set range expression denotes the set of integers from e1 to e2 inclusive. • If e2 is smaller than e1 the set range expression denotes the empty set. • Examples: • {2.718,...,3.141} • {3.141,...,2.718} • {1,...,5} • {8,...,6} Modelling unordered collections

  19. Agenda • Set Characteristics and Primitives • The Minimum Safety Altitude Warning System • The Robot Controller Modelling unordered collections

  20. 500´ Threshold MSAW General Monitoring Minimum Safe Altitude (MSA) Terrain Clearance Altitude Modelling unordered collections

  21. MSAW Approach Path Monitoring Glideslope Path Alarm Trigger Area (100´ below glideslope path) Runway 1 nm Modelling unordered collections

  22. UK Civil Aviation Authority Minimum Safe Altitude Warning (MSAW) utilises secondary surveillance radar (SSR) responses from aircraft transponders and trajectory tracking to determine whether it is likely that the aircraft may be exposed to an unacceptable risk of Controlled Flight Into Terrain (CFIT). MSAW is normally implemented locally within the radar display system software and compares predicted aircraft trajectories with a database of levels at which an alert will be triggered within specific geographic areas. The system is technically complex (due to the need to compensate for radar processing delays) and requires careful installation, commissioning and operation to ensure that false alert occurrences do not present a hazard to operations. Modelling unordered collections

  23. MSAW Requirements • Radar(s) must track flying objects using their transponders • Height of obstacles must be known statically • Flying objects must be warned against obstacles close to their flight path • New areas with obstacles can be defined • The MSAW system must ensure the safety of flying objects against static obstacles • Other flying objects (dynamic) is NOT a part of MSAW (dealt with using TCAS) Modelling unordered collections

  24. UML Class Diagram Modelling unordered collections

  25. A Collection of Flying Objects class FO instance variables id : Id; coord : Coordinates; alt : Altitude; end FO • What instance variables should the FO class have? • How should the airspace association between the Airspace and FO be made? class Airspace instance variables airspace : set of FO; inv forall x,y in set airspace & x <> y => x.getId() <> y.getId() end Airspace Modelling unordered collections

  26. Adding New Flying Objects It must be possible to add new flying objects to an airspace: public addFO : FO ==> () addFO(fo) == airspace := airspace union {fo} pre fo.getId() not in set {f.getId() | f in set airspace} Modelling unordered collections

  27. Get Hold of a Particular FO Given a particular identifier we need to be able to find the flying object with that transponder public getFO : Id ==> FO getFO(id) == find that value fo in the set airspace where fo.getId() equals id VDM++ Construct (let-be-such-that expression): let x in set s be st predicate on x in expression using x Modelling unordered collections

  28. Get Hold of a Particular FO Using the let-be-such-that expression we get public getFO : Id ==> FO getFO(id) == let fo in set airspace be st fo.getId() = id in return fo pre FOExists(id,airspace); and functions FOExists: Id * set of FO -> bool FOExists(id,space) == exists fo in set space & fo.getId() = id Modelling unordered collections

  29. Removing Existing Flying Objects It must also be possible to remove existing flying objects from an airspace: public removeFO : Id ==> () removeFO(id) == airspace := airspace \ {getFO(id)} pre FOExists(id,airspace) where we reuse the getFO operation Modelling unordered collections

  30. Complete AirSpace Class • This completes the AirSpace class • Visibility shown with icons • Stereotypes used to seperate operations and functions • Signatures can be listed Modelling unordered collections

  31. Constructor for Flying Objects • Constructors in VDM++ use operation syntax • Return type is implicit, so no return is needed public FO : Id * Coordinates * Altitude ==> FO FO(i,co,al) == (id := i; coord := co; alt := al; ); Modelling unordered collections

  32. What Instance Variables in Radar? • What information is needed for each radar? instance variables location : Coordinates; range : nat1; detected : set of FO Modelling unordered collections

  33. What can a radar see? • Scanning from a radar public Scan : AirSpace ==> () Scan(as) == detected := { x | x in set as.airspace & InRange(x) }; private InRange : FO ==> bool InRange(obj) == let foLocation = obj.getCoordinates() in return isPointInRange(location,range,foLocation); Modelling unordered collections

  34. A circle from a given point • In the GLOBAL class general functionality is present functions protected isPointInRange : Coordinates * nat1 * Coordinates -> bool isPointInRange(center,range,point) == (center.X - point.X)**2 + (center.Y - point.Y)**2 <= range**2; Modelling unordered collections

  35. The Obstacles Class What information do we need about an obstacle? instance variables MSA : MinimumSafetyAltitude ; location : Coordinates; radius : nat1; securityRadius : nat; type : ObstacleType; Where we inherit the following types public ObstacleType = <Natural>|<Artificial>|<Airport>|<Military_Area>; public FOWarning = ObstacleType; public RadarWarning = <Saturated>; public MinimumSafetyAltitude = nat | <NotAllowed>; Modelling unordered collections

  36. The AirTrafficController Class class AirTrafficController is subclass of GLOBAL instance variables radars : set of Radar := {}; obstacles : set of Obstacle := {}; operations public addRadar : Radar ==> () addRadar(r) == radars := {r} union radars; public addObstacle : Obstacle ==> () addObstacle(ob) == obstacles := {ob} union obstacles; Modelling unordered collections

  37. Finding Treats for FOs public findThreats : () ==> () findThreats() == let allFOs = dunion { r.getDetected() | r in set radars } in (for all fo in set allFOs do for all ob in set obstacles do if isFOinVicinities(ob,fo) and not isFOatSafeAltitude(ob,fo) then writeObjectWarning(ob,fo); for all r in set radars do if r.saturatedRadar() then writeRadarWarning(r) ); Modelling unordered collections

  38. Conditions for Warnings isFOinVicinities : Obstacle * FO -> bool isFOinVicinities(obs,fo) == let obsloc = obs.getCoordinates(), secureRange = obs.getSecureRange(), foloc = fo.getCoordinates() in isPointInRange(obsloc,secureRange,foloc); isFOatSafeAltitude : Obstacle * FO -> bool isFOatSafeAltitude(obs,fo) == let msa = obs.getMSA() in if msa = <NotAllowed> then false else msa < fo.getAltitude(); Modelling unordered collections

  39. Saturating a radar There is a limit to how many FO´s a radar can deal with at one time. We call this saturation of a radar. class Radar values maxFOs : nat1 = 4; instance variables range : nat1; detected : set of FO … operations public saturatedRadar : () ==> bool saturatedRadar() == return card detected > range / maxFOs; end Radar Modelling unordered collections

  40. Detecting FOs with multiple radars Some radars will have overlap so it may be interesting to collect the FOs that are detected by at least 2 radars: public detectedByTwoRadars : set of Radar -> set of FO detectedByTwoRadars(radars) == dunion {a.getDetected() inter b.getDetected() | a,b in set radars & a <> b}; FOs that are detected by all radars may also be interesting: public detectedByAllRadars : set of Radar -> set of FO detectedByAllRadars(radars) == dinter {x.getDetected() | x in set radars}; Modelling unordered collections

  41. The World Class class World instance variables public static env : [Environment] := nil; public static timerRef : Timer := new Timer(); operations public World : () ==> World World() == (env := new Environment("scenario.txt"); env.setAirSpace(MSAW`airspace); MSAW`atc.addRadar(MSAW`radar1); MSAW`atc.addRadar(MSAW`radar2); MSAW`atc.addObstacle(MSAW`militaryZone)); public Run : () ==> () Run() == env.Run(); end World Modelling unordered collections

  42. The Environment Class (1) class Environment is subclass of GLOBAL operations public Environment : String ==> Environment Environment(fname) == def mk_(-,input) = io.freadval[seq of inline](fname) in inlines := input; public Run : () ==> () Run() == (while not isFinished() do (updateFOs(); MSAW`atc.Step(); World`timerRef.StepTime(); ); showResult() ); … end Environment Modelling unordered collections

  43. The Environment Class (2) class Environment is subclass of GLOBAL operations updateFOs : () ==> () updateFOs() == (iflen inlines > 0 then (dcl curtime : Time := World`timerRef.GetTime(), done : bool := false; while not done do def mk_(id,x,y, altitude,pt) = hd inlines in if pt <= curtime then (airspace.updateFO(id,mk_Coordinates(x,y),altitude); inlines := tl inlines; done := len inlines = 0 ) else done := true) else busy := false ); … end Environment Modelling unordered collections

  44. Updating a Flying Objects Since flying objects move we need to be able to update them: class AirSpace public updateFO : Id * Coordinates * Altitude ==> () updateFO(id,coord,alt) == if FOExists(id,airspace) then let fo = getFO(id) in (fo.setCoordinates(coord); fo.setAltitude(alt)) elselet newfo = new FO(id,coord,alt) in airspace := airspace union {newfo} … end AirSpace where we reuse the getFO operation again Modelling unordered collections

  45. Stepping in ATC Now all radars needs to have a chance to scan: class AirTrafficController is subclass of GLOBAL … public Step : () ==> () Step() == (for all r in set radars do r.Scan(MSAW`airspace); findThreats(); ); end AirTrafficController Modelling unordered collections

  46. Agenda • Set Characteristics and Primitives • The Minimum Safety Altitude Warning System • The Robot Controller Modelling unordered collections

  47. The Robot Controller • A system for navigating a robot from a start point, via a collection of waypoints to a final destination, where it performs some task, e.g., delivering a payload. Modelling unordered collections

  48. Existing Subsystems • Position Sensor: This is used to find the robot's current location and the direction in which it is moving. • Steering Controller: This controls the direction in which the robot travels. • Steering Monitor: A system used to ensure that the steering controller is operating within known safe boundaries. Modelling unordered collections

  49. Controller Requirements • The robot's current position is always available to the controller from a position sensor. • The robot has a predetermined journey plan based on a collection of waypoints. • The robot must navigate from waypoint to waypoint without missing any. • The robot moves only horizontally or vertically in the Cartesian plane. It is not physically capable of changing direction with an angle greater than 90o. Attempts to do so should be logged. • If the robot is off-course, i.e., it cannot find a route to the next waypoint, it should stop in its current position. • The robot is able to detect obstacles in its path. Modelling unordered collections

  50. Class Diagram for Robot Controller Modelling unordered collections

More Related