You are on page 1of 2

Linear Search

Submitted By:
Hassan Abdullah 19011598-110
Syed Idrees Hashmi 19011598-133

Course:
Formal Methods in Software Engineering
SE-426
Department:
BS Software Engineering (SE-6C)
Submitted To:
Mr, Asim
Date:
June 25, 2022

University of Gujrat
Hafiz Hayat Campus
LINEAR-SEARCH (A, ν)
for i = 1 to A.length
if A[i] = = ν
return i
return NIL
Loop invariant: at the start of the ith iteration of the for loop (lines 1–4),

∀ k ∈ [1, i) A [k] ≠ ν.
Initialization:

i == 1 ⟹ [1, i) == Ø ⟹ ∀ k ∈ Ø A[k] ≠ ν,
which is true, as any statement regarding the empty set is true (vacuous truth).

Maintenance: let's suppose the loop invariant is true at the start of the ith iteration of
the for loop. If A[i] = = ν, the current iteration is the final one (see the termination section),
as line 3 is executed; otherwise, if A[i] ≠ ν, we have

∀ k ∈ [1, i) A[k] ≠ ν and A[i] ≠ ν ⟺ ∀ k ∈ [1, i+1) A[k] ≠ ν,


which means that the invariant loop will still be true at the start of the next iteration
(the i+1th).

Termination: the for loop may end for two reasons:

1. return i (line 3), if A[i] == ν;


2. i == A.length + 1 (last test of the for loop), in which case we are at the beginning of the A.length
+ 1th iteration, therefore the loop invariant is
3. ∀ k ∈ [1, A.length + 1) A[k] ≠ ν ⟺ ∀ k ∈ [1, A.length] A[k] ≠ ν
and the NIL value is returned (line 4).
In both cases, LINEAR-SEARCH ends as expected.

You might also like