Skip to content
Snippets Groups Projects
Arrays.java 2.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • package nl.uu;
    import static nl.uu.impress.EDSL.*;
    
    public class Arrays {
    
        // // 1) Simple array arithmetic
        // public static void swap1_1(int[] a, int i, int j) {
        //     pre(i >= 0 && j >= 0);
        //     swap(a, i, j);
        //     post(a[j] == oldai && a[i] == oldaj);
        // }
        // public static void swap2_1(int[] a, int i, int j) {
        //     pre(i >= 0);
        //     pre(j > 0 || (i + 1) * j >= 0);
        //     swap(a, i, j);
        //     post(a[i] == oldaj);
        //     post(a[j] == oldai);
        // }
        //
        // // 2) Quantifying over array (max)
        // public static void max1_2(int[] a) {
        //     pre(a != null && a.length > 0);
        //     int retval = getMax(a);
        //     post(exists(a, i -> a[i] == retval));
        //     post(forall(a, i -> a[i] <= retval));
        // }
        // public static void max2_2(int[] a) {
        //     pre(a != null && a.length >= 1);
        //     int retval = getMax(a);
        //     post(exists(a, i -> retval * 2 == a[i] + a[i]));
        //     post(!exists(a, i -> a[i] > retval));
        // }
    
        // 3) Quantifying over array (sort)
        public static void sort1_3(int[] a) {
            pre(a != null && a.length >= 0);
            int[] sa = a.sort();
            post(forall(a, i ->
                    forallr(a,  i + 1, a.length, j -> a[i] <= a[j])));
        }
        // public static void sort2_3(int[] a) {
        //     pre(a != null && a.length > -1);
        //     int[] sa = a.sort();
        //     post(forall(a, i ->
        //             !existsr(a, i + 1, a.length, j -> a[i] > a[j])));
        // }
    
        // 4) Quantifying over array (unique sort)
        public static void sort1_4(int[] a) {
            pre(a != null && a.length > 1);
            pre(forall(a, i ->
                  forall(a, j -> i == j || a[i] != a[j])));
            int[] sa = a.sort();
            post(a.length > 1);
            post(forallr(a, 0, a.length - 1, i -> a[i] < a[i + 1]));
        }
        // public static void sort2_4(int[] a) {
        //     pre(a != null);
        //     pre(a.length >= 2);
        //     pre(forall(a, i ->
        //           forall(a, j -> i == j || a[i] != a[j])));
        //           // forallr(a, i + 1, a.length, j -> a[i] != a[j])));
        //     // pre(forallr(a, a.length, 0, i ->
        //     //       forallr(a, 0, i, j -> a[j] != a[i])));
        //     int[] sa = a.sort();
        //     // post(forall(a, i ->
        //     //         forallr(a, i + 1, a.length, j -> a[i] < a[j])));
        //     post(a.length >= 2);
        //     post(forallr(a, 1, a.length, i -> a[i] > a[i - 1]));
        // }
    }