Professional Documents
Culture Documents
Name: Fatima Yousif Roll Number: 18SW29 Topic: Java Modelling Language
Name: Fatima Yousif Roll Number: 18SW29 Topic: Java Modelling Language
Name: Fatima Yousif Roll Number: 18SW29 Topic: Java Modelling Language
Task 1:
// Task 1
// PART (B)
// Write assignable clauses where appropriate. = DONE(An assignable clause
specifies which variables may be modified by a method; all other variables should
remain unchanged)
// • Write class invariants. = DONE
// • Write a loop invariant, decreases clause, and assignable clause for the loop
in method add. = DONE
// • Add JML modifiers (spec_public, pure,...) where necessary. = DONE
if (h[i] == null) {
h[i] = u;
size++;
return;
}
else {
int j = 0;
//LOOP INVARIANT
/*
@ loop_invariant
@ \result= (\forall int i; i>=0 && i<\index; i=i+1)
@ && h[i] != null && \index <capacity;
@ decreases capacity -\index;
@ assignable \strictly_nothing
@*/
while (h[i] != null && j < capacity)
{
if (i == capacity-1) i = 0;
else {i++;}
j++;
}
h[i] = u;
size++;
return;
}
} else {
return;
}
}
}
Task 2 (a):
// TASK 2
// modifiers (spec_public,pure) = DONE
// method contracts(pre post conditions) = DONE
// class invariants= DONE
// loop invariants= DONE
// class invariants
/*@ invariant size >=0 && size= numbers.length @*/
/*@
requires (\forall int i, j; 0 <= i & i < j & j < a.length; a[i] <= a[j]);
requires query !=null;
ensures \result== index;
ensures \result == -1;
@*/
//LOOP INVARIANT
/*
@maintaining
\result= (\exists int j; 0<=j && j<leftIndex;
numbers [j] <query);
@maintaining 0 <= leftIndex && leftIndex<= rightIndex;
@decreasing rightIndex -leftIndex;
@assignable \strictly_nothing;
@*/
// class invariants
/*@
invariant pin.length= 4;
invariant balance >=0.
@*/
/*@
requires amount>=0;
ensures balance;
signals (PurseException e) amount > balance &&
balance == \old(balance) ;
@*/