Define_model: "Notional_Interface_demo" Starting_goal is Monitor Situation. /* Top Level Method: Monitor Situation Basic strategy: process an unknown (amber) first; if no unknown, then hostile (red). Do not assess blue or yellow tracks. If no tracks of any sort, terminate. */ Method_for_goal: Monitor Situation Step 1. Look_for_object_whose Color is Amber, and Type is Blip and_store_under . Step 2. Decide: If is absent, Then Look_for_object_whose Color is Red, and Type is Blip and_store_under . Step 3. Decide: If is absent, Then Look_for_object_whose Type is Blip and_store_under . Step 4. Decide: If is absent, Then Delete ; Delete ; Return_with_goal_accomplished. Step 5. Decide: If is absent, Then Goto 1. // A track has been selected Step 6. Accomplish_goal: Assess Track. Step 7. Delete ; Goto 1. /* Assess Track Perform the appropriate method depending on the track color */ Selection_rules_for_goal: Assess Track If Color of is Amber, Then Accomplish_goal: Assess Unknown_track. If Color of is Red, Then Accomplish_goal: Assess Hostile_track. Return_with_goal_accomplished. /* Assess Unknown_Track: Select the track, examine its IFF value in the table, and click on the corresponding button. If it is hostile, assess the threat. */ Method_for_goal: Assess Unknown_track Step 1. Accomplish_goal: Select Track. Step 2. Look_for_object_whose Label is IFF and_store_under . Step 3. Decide: If Content of is Friendly, Then Store Friendly under ; If Content of is Hostile, Then Store Hostile under . Step 4. Accomplish_goal: Designate Track. Step 5. Decide: If is Hostile, Then Accomplish_goal: Assess Threat. Step 6. Accomplish_goal: Close Track_data_window. Step 7. Delete ; Delete ; // clean up Working Memory Return_with_goal_accomplished. /* Assess Hostile_Track: Select the track, and Assess the threat */ Method_for_goal: Assess Hostile_track Step 1. Accomplish_goal: Select Track. Step 2. Accomplish_goal: Assess Threat. Step 6. Accomplish_goal: Close Track_data_window. Step 3. Return_with_goal_accomplished. /* Assess Threat: No threat if not Inbound or range is >= 20 Warn if the range is between 10 and 20 If the ESM is hostile and range < 10, then engage */ Method_for_goal: Assess Threat // Check for Inbound track Step 1. Look_for_object_whose Label is IOB and_store_under . Step 2. Decide: If Content of is Outbound, Then Delete ; Return_with_goal_accomplished. // Track is inbound - check range Step 3. Delete ; Look_for_object_whose Label is RNG and_store_under . Step 4. Store Content of under ; Delete . // These decide steps are separate to reflect dependence on order. Step 5. Decide: If is_greater_than_or_equal_to "20", Then Delete ;Return_with_goal_accomplished. Step 6. Decide: If is_less_than "10", Then Goto Track_is_close. Step 7. Delete ; Accomplish_goal: Warn Track. Step 8. Return_with_goal_accomplished. // The track is close - check ESM. Step Track_is_close. Look_for_object_whose Label is ESM and_store_under . Step 10. Decide: If Content of is "Hostile", Then Accomplish_goal: Engage Track; Else Accomplish_goal: Warn Track. Step 11. Delete ; Delete ; Return_with_goal_accomplished. /* METHODS FOR BASIC INTERFACE PROCEDURES These methods "drive" the interface; little or no decision making or domain knowledge is involved. */ Method_for_goal: Select Track Step 1. Point_to . Step 2. Click B1. Step 3. Wait_for_visual_object_whose Label is "Track Data" and_store_under . Step 4. Delete
; Return_with_goal_accomplished. Method_for_goal: Close Track_data_window Step 1. Accomplish_goal: Click_on Button using "Close". Step 2. Return_with_goal_accomplished. Method_for_goal: Designate Track Step 1. Decide: If is Hostile, Then Accomplish_goal: Click_on Button using "Hostile"; If is Friendly, Then Accomplish_goal: Click_on Button using "Friendly"; Else Accomplish_goal: Click_on Button using "Unknown". Step 2. Return_with_goal_accomplished. Method_for_goal: Warn Track Step 1. Look_for_object_whose Label is Radio, and Type is Button and_store_under . Step 2. Point_to . Step 3. Hold_down B1. Step 4. Speak "You will be attacked if you do not immediately turn away". Step 5. Release B1. Step 6. Delete ; Return_with_goal_accomplished. Method_for_goal: Engage Track Step 1. Look_for_object_whose Label is TRK and_store_under . Step 2. Store Content of under . Step 3. Look_for_object_whose Label is Command and_store_under . Step 4. Point_to . Step 5. Click B1. // does not make Track Data window disappear Step 6. Type_in "engage ". Step 7. Type_in . Step 8. Keystroke CR. Step 9. Delete ; Delete ; Delete ; Return_with_goal_accomplished. // A generic method with a parameter Method_for_goal: Click_on Button using Step 1. Look_for_object_whose Label is , and Type is Button and_store_under . Step 2. Point_to . Step 3. Click B1. Step 4. Delete ; Return_with_goal_accomplished.