public class InsertionSort{ /*@ public normal_behavior @ requires a != null; @ ensures (\forall int i; 0<=i && i 0 && j < i ==> a[j-1] <= a[j+1]); @ modifies a[*],j; @ decreases j; @*/ while (j > 0 && a[j-1] > a[j]) { int help = a[j]; a[j] = a[j-1]; a[j-1] = help; j--; } i++; } } public static /*@pure@*/ boolean equalsModOrdering(int[] a, int[] b){ if(a.length!=b.length){ return false; } for (int i = 0; i < a.length; i++) { int counta, countb; for (int j = 0; j < a.length; j++) { if (a[i] == a[j]) counta++; if (a[i] == b[j]) countb++; } if (counta != countb) return false; } return true; } }