(* This code extends 'mini_prelude'. *) fun mrg v7 = (fn v8 => (fn v9 => (case v8 of Nil => (case v9 of Nil => Nil | (Cons (v2, v1)) => (Cons (v2, v1))) | (Cons (v6, v5)) => (case v9 of Nil => (Cons (v6, v5)) | (Cons (v4, v3)) => (if ((v7 v6) v4) then (Cons (v6, (((mrg v7) v5) (Cons (v4, v3))))) else (Cons (v4, (((mrg v7) (Cons (v6, v5))) v3)))))))) ; val empty = (Pair (0, Nil)) ; fun add_seg v1 = (fn v2 => (fn v3 => (fn v4 => (if ((v4 mod 2) <= 0) then (Cons (v2, v3)) else ((((add_seg v1) (((mrg v1) v2) (HD v3))) (TL v3)) (v4 div 2)))))) ; val add = (fn v3 => (fn v4 => (fn v5 => (case v5 of (Pair (v2, v1)) => (Pair ((v2 + 1), ((((add_seg v3) (Cons (v4, Nil))) v1) v2))))))) ; fun mrg_all v3 = (fn v4 => (fn v5 => (case v5 of Nil => v4 | (Cons (v2, v1)) => (((mrg_all v3) (((mrg v3) v4) v2)) v1)))) ; val sort = (fn v3 => (fn v4 => (case v4 of (Pair (v2, v1)) => (((mrg_all v3) Nil) v1)))) ;