3 https://en.wikipedia.org/wiki/Gnome_sort
12 use array.IntArraySorted
16 let gnome_sort (a: array int) : unit
18 ensures { permut_all (old a) a }
20 while pos < length a do
21 invariant { 0 <= pos <= length a }
22 invariant { sorted_sub a 0 pos }
23 invariant { permut_all (old a) a }
24 variant { inversions a, length a - pos }
25 if pos = 0 || a[pos] >= a[pos - 1] then