public class Relaxed { //@ ensures pat.length > 0 && a.length > 0 ==> Relaxed.diffIndex(pat, a) == pat.length ==> \result == true; public static boolean isRelaxedPrefix(int[] pat, int[] a) { if (Relaxed.diffIndex(pat, a) == pat.length) return true; //@ maintaining Relaxed.diffIndex(pat, a) > 0 ==> (\forall int j; Relaxed.diffIndex(pat, a) < j && j < 0; pat[j] == a[j - 1]); while(pat.length > 0){} return true; } public /*@ pure @*/ static int diffIndex(int[] pat, int[] a) { return 0; } } // FIXME - This test is OK if diffIndex is declared @Function, but not otherwise -- why?