[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How to define a Sorted Array
Hi,
I am writing tla+ algorithm for Binary Search, I need to define input array 'arr' to sorted. For the verification purpose I did
variables arr = [ i \in 1..N |-> i + 1].
Complete pluscal algorithm for BinarySearc.tla is as follows:
---------------------------- MODULE BinarySearch ----------------------------
EXTENDS Naturals, TLC
CONSTANT N (* Size of arrays *)
CONSTANT MAXINT (* Max integer value *)
(***************************************************************************
--fair algorithm Binsearch {
variables arr = [ i \in 1..N |-> i + 1];
x \in 2..N; (* Value to find *)
found = FALSE;
l = 1; (* All elements to the left of l are < x *)
r = N; (* All elements to the right of r are > x *)
p = 1; (* Pivot *)
(* Main *)
{
print <<arr, x>>;
while ((l <= r) /\ (~ found)) {
p := (l + r) \div 2;
if (arr[p] = x)
found := TRUE
else if (arr[p] < x)e
l := p+1
else (* arr[p] > x *)
r := p-1
};
assert( found <=> (\E j \in 1..N : arr[j] = x) )
}
}
***************************************************************************)
==============================================================================
Is it possible to define array 'arr' as CONSTANT, so that I can input it in the TLC model checker with other constants.
Regards,
Piyush
PS: I tried to (1)attach the BinarySearch.tla and (2) Change the font, but not able to do. Can some guide me for this as well.