/*@ 
requires n > 0;

requires \valid_read(a + (0..n-1));

assigns \nothing;

behavior present:
	assumes \exists integer k;  0 <= k < n && x == a[k];
	ensures \result == 1;

behavior not_present:
	assumes \forall integer k;  0 <= k < n ==> x != a[k];
	ensures \result == 0;

disjoint behaviors;
complete behaviors;
*/

int arraysearch(int* a, int x, int n) {

  /*@ 
     loop invariant 0 <= p <= n;
     loop invariant \forall integer k;  0 <= k < p ==> x != a[k];
     loop assigns p;
 */

  for (int p = 0; p < n; p++) {
	if (x == a[p]) 
	   return 1;
  }

  return 0;
}  
