package examples; import util.arithmetics.primitives.intUtil; public handler mergesort> { local constraint arrow(+T From, +T To) infix '->'; public constraint merge(int, +T); rules { X '->' A \ X '->' B <=> A < B | A '->' B. merge(N,A), merge(N,B) <=> A < B | merge(intUtil.inc(N), A), A '->' B. } }