| sortrowssnake#(; mx) {let m = 0 in while m < #r mx do {/* invariant srowsorted(mx, m, mx`) ∧ perm(mx`.toArr, mx.toArr) ∧ #c mx = #c mx` ∧ #r mx = #r mx` ∧ m ≤ #r mx ∧ #c mx ≠ 0 wfbound #r mx - m */; /* use contract sortrowsnake-correct and skip call */; sortrow#(m, even(m); mx); m := m + 1} } |