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