feat(formal): add search for index of item in aircraft

This commit is contained in:
Anthony Berg 2024-03-07 15:52:03 +00:00
parent e904ecb8df
commit 5cc785b9e2

View File

@ -93,7 +93,7 @@ types
Checklist = seq of Procedure; Checklist = seq of Procedure;
functions functions
--@doc Finds the index of the next item in the checklist that needs to be completed --@doc Finds the index of the next item in the procedure that needs to be completed
procedure_next_index: Procedure -> nat1 procedure_next_index: Procedure -> nat1
procedure_next_index(p) == procedure_next_index(p) ==
hd [ x | x in set {1,...,len p} & p(x).checked = false] hd [ x | x in set {1,...,len p} & p(x).checked = false]
@ -114,4 +114,21 @@ functions
procedure_completed(p) == procedure_completed(p) ==
false not in set { p(x).checked | x in set {1,...,len p} }; false not in set { p(x).checked | x in set {1,...,len p} };
--@doc Find index of an item in Aircraft
index_of_item: String * Aircraft -> nat1
index_of_item(i, a) ==
if (hd a).name = i then 1
else
index_of_item(i, tl a) + 1
pre
len a > 0
post
-- Checks that the index is correct
--TODO this does not check if it is the first item in the list
if RESULT > 1 then
a(RESULT).name = i
else
true
measure len a;
end Checklist end Checklist