------------------------------------------ 7. Safe type inference Source: reginf.safe Date: Di 27. Jan 15:03:20 CET 2009 ------------------------------------------ data ListaT a @ rho1 = | [] @ rho1 | : a REC @ rho1 data Integer @ rho1 = | Integ Int @ rho1 data BST a @ rho1 = | Empty @ rho1 | Node REC a REC @ rho1 {* :: Int -> Int -> Int} * 0_x {([],[],[],[]) EmptyEDD} 1_x {([],[],[],[]) EmptyEDD}= {([],[],[0_x,1_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 0_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[1_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 1_x {([],[],[],[]) EmptyEDD} of 0 -> 0 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {+ :: Int -> Int -> Int} + 2_x {([],[],[],[]) EmptyEDD} 3_x {([],[],[],[]) EmptyEDD}= {([],[],[2_x,3_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 2_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[3_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 3_x {([],[],[],[]) EmptyEDD} of 0 -> 0 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {- :: Int -> Int -> Int} - 4_x {([],[],[],[]) EmptyEDD} 5_x {([],[],[],[]) EmptyEDD}= {([],[],[4_x,5_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 4_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[5_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 5_x {([],[],[],[]) EmptyEDD} of 0 -> 0 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {/ :: Int -> Int -> Int} / 6_x {([],[],[],[]) EmptyEDD} 7_x {([],[],[],[]) EmptyEDD}= {([],[],[6_x,7_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 6_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[7_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 7_x {([],[],[],[]) EmptyEDD} of 0 -> 0 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {% :: Int -> Int -> Int} % 8_x {([],[],[],[]) EmptyEDD} 9_x {([],[],[],[]) EmptyEDD}= {([],[],[8_x,9_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 8_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[9_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 9_x {([],[],[],[]) EmptyEDD} of 0 -> 0 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {< :: Int -> Int -> Bool} < 10_x {([],[],[],[]) EmptyEDD} 11_x {([],[],[],[]) EmptyEDD}= {([],[],[10_x,11_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 10_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[11_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 11_x {([],[],[],[]) EmptyEDD} of 0 -> True {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {> :: Int -> Int -> Bool} > 12_x {([],[],[],[]) EmptyEDD} 13_x {([],[],[],[]) EmptyEDD}= {([],[],[12_x,13_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 12_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[13_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 13_x {([],[],[],[]) EmptyEDD} of 0 -> True {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {== :: a -> a -> Bool} == 14_x {([],[],[],[]) EmptyEDD} 15_x {([],[],[],[]) EmptyEDD}= True {([],[],[],[]) EmptyEDD} {<= :: Int -> Int -> Bool} <= 16_x {([],[],[],[]) EmptyEDD} 17_x {([],[],[],[]) EmptyEDD}= {([],[],[16_x,17_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 16_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[17_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 17_x {([],[],[],[]) EmptyEDD} of 0 -> True {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {>= :: Int -> Int -> Bool} >= 18_x {([],[],[],[]) EmptyEDD} 19_x {([],[],[],[]) EmptyEDD}= {([],[],[18_x,19_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 18_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[19_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 19_x {([],[],[],[]) EmptyEDD} of 0 -> False {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {&& :: Bool -> Bool -> Bool} && 20_x {([],[],[],[]) EmptyEDD} 21_x {([],[],[],[]) EmptyEDD}= False {([],[],[],[]) EmptyEDD} {fst :: TuplaTT a b @ rho1 -> a} fst 22_x {([],[],[],[]) EmptyEDD}= {([],[],[22_x],[]) CaseEDD [(fromList ["23_x","24_x"],fromList [])]} case 22_x {([],[],[],[]) EmptyEDD} of (TuplaT 23_x {([],[],[],[]) EmptyEDD} 24_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 23_x {([],[],[23_x],[]) EmptyEDD} {snd :: TuplaTT a b @ rho1 -> b} snd 25_x {([],[],[],[]) EmptyEDD}= {([],[],[25_x],[]) CaseEDD [(fromList ["26_x","27_x"],fromList [])]} case 25_x {([],[],[],[]) EmptyEDD} of (TuplaT 26_x {([],[],[],[]) EmptyEDD} 27_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 27_x {([],[],[27_x],[]) EmptyEDD} {fstD :: TuplaTT a b ! @ rho1 -> a} fstD 28_x {([],[],[],[]) EmptyEDD}= {([28_x],[],[],[]) EmptyEDD} case! 28_x {([],[],[],[]) EmptyEDD} of (TuplaT 29_x {([],[],[],[]) EmptyEDD} 30_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 29_x {([],[],[29_x],[]) EmptyEDD} {sndD :: TuplaTT a b ! @ rho1 -> b} sndD 31_x {([],[],[],[]) EmptyEDD}= {([31_x],[],[],[]) EmptyEDD} case! 31_x {([],[],[],[]) EmptyEDD} of (TuplaT 32_x {([],[],[],[]) EmptyEDD} 33_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 33_x {([],[],[33_x],[]) EmptyEDD} {fib :: Int -> Int} fib 34_x {([],[],[],[]) EmptyEDD}= {([] ,[] ,[34_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList []),(fromList [],fromList [])]} case 34_x {([],[],[],[]) EmptyEDD} of 0 -> 1 {([],[],[],[]) EmptyEDD} 1 -> 1 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> {([],[],[34_x],[]) LetEDD (fromList ["34_x","36_x"]) (fromList ["36_x"])} let {36_x :: Int} 36_x = {([],[],[34_x],[]) LetEDD (fromList ["38_x"]) (fromList ["38_x"])} let {38_x :: Int} 38_x = - 34_x {([],[],[],[]) EmptyEDD} 1 {([],[],[],[]) EmptyEDD} {([] ,[] ,[34_x] ,[]) EmptyEDD} in fib 38_x {([],[],[],[]) EmptyEDD} {([],[],[38_x],[]) EmptyEDD} in {([],[],[34_x,36_x],[]) LetEDD (fromList ["35_x","36_x"]) (fromList ["35_x"])} let {35_x :: Int} 35_x = {([],[],[34_x],[]) LetEDD (fromList ["37_x"]) (fromList ["37_x"])} let {37_x :: Int} 37_x = - 34_x {([],[],[],[]) EmptyEDD} 2 {([],[],[],[]) EmptyEDD} {([] ,[] ,[34_x] ,[]) EmptyEDD} in fib 37_x {([],[],[],[]) EmptyEDD} {([],[],[37_x],[]) EmptyEDD} in + 36_x {([],[],[],[]) EmptyEDD} 35_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[35_x,36_x] ,[]) EmptyEDD} {consInteg :: Int -> rho1 -> Integer @ rho1} consInteg 39_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[39_x],[]) LetEDD (fromList ["40_x"]) (fromList ["39_x","40_x"])} let {40_x :: Integer @ rho1} 40_x = Integ 39_x {([],[],[39_x],[]) EmptyEDD} @ 1_r {([],[],[39_x],[]) EmptyEDD} in 40_x {([],[],[40_x],[]) EmptyEDD} {cons3 :: [Int] @ rho1 -> rho1 -> [Int] @ rho1} cons3 41_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[41_x],[]) LetEDD (fromList ["42_x"]) (fromList ["41_x","42_x"])} let {42_x :: [Int] @ rho1} 42_x = : 3 {([],[],[],[]) EmptyEDD} 41_x {([],[],[41_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[41_x] ,[]) EmptyEDD} in 42_x {([],[],[42_x],[]) EmptyEDD} {repeat :: a -> rho1 -> [a] @ rho1} repeat 43_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[43_x],[]) LetEDD (fromList ["43_x","44_x"]) (fromList ["43_x","44_x"])} let {44_x :: [a] @ rho1} 44_x = repeat 43_x {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[43_x],[]) EmptyEDD} in {([],[],[43_x,44_x],[]) LetEDD (fromList ["45_x"]) (fromList ["43_x","44_x","45_x"])} let {45_x :: [a] @ rho1} 45_x = : 43_x {([],[],[43_x],[]) EmptyEDD} 44_x {([],[],[44_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[43_x ,44_x] ,[]) EmptyEDD} in 45_x {([],[],[45_x],[]) EmptyEDD} {fb :: Integer @ rho1 -> rho2 -> Integer @ rho2} fb 46_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[46_x],[]) CaseEDD [(fromList ["61_x"],fromList [])]} case 46_x {([],[],[],[]) EmptyEDD} of (Integ 61_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[61_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList []),(fromList [],fromList [])]} case 61_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[],[]) LetEDD (fromList ["47_x"]) (fromList ["47_x"])} let {47_x :: Integer @ rho2} 47_x = Integ 1 {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[],[]) EmptyEDD} in 47_x {([],[],[47_x],[]) EmptyEDD} 1 -> {([],[],[],[]) LetEDD (fromList ["48_x"]) (fromList ["48_x"])} let {48_x :: Integer @ rho2} 48_x = Integ 1 {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[],[]) EmptyEDD} in 48_x {([],[],[48_x],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> {([],[],[61_x],[]) LetEDD (fromList ["49_x","61_x"]) (fromList ["49_x"])} let {49_x :: Integer @ rho_self} 49_x = {([],[],[61_x],[]) LetEDD (fromList ["58_x"]) (fromList ["58_x"])} let {58_x :: Integer @ rho_self} 58_x = {([],[],[61_x],[]) LetEDD (fromList ["59_x"]) (fromList ["59_x"])} let {59_x :: Int} 59_x = - 61_x {([],[],[],[]) EmptyEDD} 1 {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[61_x] ,[]) EmptyEDD} in {([] ,[] ,[59_x] ,[]) LetEDD (fromList ["60_x"]) (fromList ["59_x","60_x"])} let {60_x :: Integer @ rho_self} 60_x = Integ 59_x {([],[],[59_x],[]) EmptyEDD} @ self {([] ,[] ,[59_x] ,[]) EmptyEDD} in 60_x {([],[],[60_x],[]) EmptyEDD} in fb 58_x {([],[],[],[]) EmptyEDD} @ self {([],[],[58_x],[]) EmptyEDD} in {([],[],[49_x,61_x],[]) CaseEDD [(fromList ["57_x"],fromList [])]} case 49_x {([],[],[],[]) EmptyEDD} of (Integ 57_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[57_x,61_x] ,[]) LetEDD (fromList ["50_x","57_x"]) (fromList ["50_x"])} let {50_x :: Integer @ rho_self} 50_x = {([],[],[61_x],[]) LetEDD (fromList ["54_x"]) (fromList ["54_x"])} let {54_x :: Integer @ rho_self} 54_x = {([] ,[] ,[61_x] ,[]) LetEDD (fromList ["55_x"]) (fromList ["55_x"])} let {55_x :: Int} 55_x = - 61_x {([],[],[],[]) EmptyEDD} 2 {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[61_x] ,[]) EmptyEDD} in {([] ,[] ,[55_x] ,[]) LetEDD (fromList ["56_x"]) (fromList ["55_x","56_x"])} let {56_x :: Integer @ rho_self} 56_x = Integ 55_x {([],[],[55_x],[]) EmptyEDD} @ self {([] ,[] ,[55_x] ,[]) EmptyEDD} in 56_x {([],[],[56_x],[]) EmptyEDD} in fb 54_x {([],[],[],[]) EmptyEDD} @ self {([] ,[] ,[54_x] ,[]) EmptyEDD} in {([],[],[50_x,57_x],[]) CaseEDD [(fromList ["53_x"],fromList [])]} case 50_x {([],[],[],[]) EmptyEDD} of (Integ 53_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[53_x,57_x] ,[]) LetEDD (fromList ["51_x"]) (fromList ["51_x"])} let {51_x :: Int} 51_x = + 57_x {([],[],[],[]) EmptyEDD} 53_x {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[53_x ,57_x] ,[]) EmptyEDD} in {([] ,[] ,[51_x] ,[]) LetEDD (fromList ["52_x"]) (fromList ["51_x","52_x"])} let {52_x :: Integer @ rho2} 52_x = Integ 51_x {([],[],[51_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[51_x] ,[]) EmptyEDD} in 52_x {([],[],[52_x],[]) EmptyEDD} {concat :: [a] @ rho1 -> [a] @ rho2 -> rho2 -> [a] @ rho2} concat 62_x {([],[],[],[]) EmptyEDD} 63_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[62_x,63_x] ,[]) CaseEDD [(fromList ["66_x","67_x"],fromList ["67_x"]),(fromList [],fromList [])]} case 62_x {([],[],[],[]) EmptyEDD} of (: 66_x {([],[],[],[]) EmptyEDD} 67_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[63_x,66_x,67_x] ,[]) LetEDD (fromList ["64_x","66_x"]) (fromList ["62_x","63_x","64_x","67_x"])} let {64_x :: [a] @ rho2} 64_x = concat 67_x {([],[],[],[]) EmptyEDD} 63_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[63_x ,67_x] ,[]) EmptyEDD} in {([] ,[] ,[64_x,66_x] ,[]) LetEDD (fromList ["65_x"]) (fromList ["62_x","63_x","64_x","65_x","66_x","67_x"])} let {65_x :: [a] @ rho2} 65_x = : 66_x {([],[],[66_x],[]) EmptyEDD} 64_x {([],[],[64_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[64_x ,66_x] ,[]) EmptyEDD} in 65_x {([],[],[65_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 63_x {([],[],[63_x],[]) EmptyEDD} {concat2 :: [a] @ rho1 -> [a] @ rho2 -> rho2 -> [a] @ rho2} concat2 68_x {([],[],[],[]) EmptyEDD} 69_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[68_x,69_x] ,[]) CaseEDD [(fromList ["72_x","73_x"],fromList ["73_x"]),(fromList [],fromList [])]} case 68_x {([],[],[],[]) EmptyEDD} of (: 72_x {([],[],[],[]) EmptyEDD} 73_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[69_x,72_x,73_x] ,[]) LetEDD (fromList ["70_x","72_x"]) (fromList ["68_x","69_x","70_x","73_x"])} let {70_x :: [a] @ rho2} 70_x = concat2 73_x {([],[],[],[]) EmptyEDD} 69_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[69_x ,73_x] ,[]) EmptyEDD} in {([] ,[] ,[70_x,72_x] ,[]) LetEDD (fromList ["71_x"]) (fromList ["68_x","69_x","70_x","71_x","72_x","73_x"])} let {71_x :: [a] @ rho2} 71_x = : 72_x {([],[],[72_x],[]) EmptyEDD} 70_x {([],[],[70_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[70_x ,72_x] ,[]) EmptyEDD} in 71_x {([],[],[71_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 69_x {([],[],[69_x],[]) EmptyEDD} {concatC :: [a] @ rho1 -> [a] @ rho2 -> rho3 -> [a] @ rho3} concatC 74_x {([],[],[],[]) EmptyEDD} 75_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[74_x,75_x] ,[]) CaseEDD [(fromList ["78_x","79_x"],fromList ["79_x"]),(fromList [],fromList [])]} case 74_x {([],[],[],[]) EmptyEDD} of (: 78_x {([],[],[],[]) EmptyEDD} 79_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[75_x,78_x,79_x] ,[]) LetEDD (fromList ["76_x","78_x"]) (fromList ["74_x","75_x","76_x","79_x"])} let {76_x :: [a] @ rho3} 76_x = concatC 79_x {([],[],[],[]) EmptyEDD} 75_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[75_x ,79_x] ,[]) EmptyEDD} in {([] ,[] ,[76_x,78_x] ,[]) LetEDD (fromList ["77_x"]) (fromList ["74_x","75_x","76_x","77_x","78_x","79_x"])} let {77_x :: [a] @ rho3} 77_x = : 78_x {([],[],[78_x],[]) EmptyEDD} 76_x {([],[],[76_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[76_x ,78_x] ,[]) EmptyEDD} in 77_x {([],[],[77_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 75_x @ 1_r {([],[],[75_x],[]) EmptyEDD} {insertT :: Int -> BST Int @ rho1 -> rho1 -> BST Int @ rho1} insertT 80_x {([],[],[],[]) EmptyEDD} 81_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[80_x,81_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList ["93_x","94_x","95_x"],fromList ["93_x","95_x"])]} case 81_x {([],[],[],[]) EmptyEDD} of Empty {([],[],[],[]) EmptyEDD} -> {([],[],[80_x],[]) LetEDD (fromList ["80_x","83_x"]) (fromList ["83_x"])} let {83_x :: BST Int @ rho1} 83_x = Empty @ 1_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[80_x,83_x] ,[]) LetEDD (fromList ["80_x","82_x","83_x"]) (fromList ["82_x"])} let {82_x :: BST Int @ rho1} 82_x = Empty @ 1_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[80_x,82_x,83_x] ,[]) LetEDD (fromList ["84_x"]) (fromList ["80_x","82_x","83_x","84_x"])} let {84_x :: BST Int @ rho1} 84_x = Node 83_x {([],[],[83_x],[]) EmptyEDD} 80_x {([],[],[80_x],[]) EmptyEDD} 82_x {([],[],[82_x],[]) EmptyEDD} @ 1_r {([],[],[80_x,82_x,83_x],[]) EmptyEDD} in 84_x {([],[],[84_x],[]) EmptyEDD} (Node 93_x {([],[],[],[]) EmptyEDD} 94_x {([],[],[],[]) EmptyEDD} 95_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[80_x,93_x,94_x,95_x] ,[]) LetEDD (fromList ["80_x","85_x","93_x","94_x","95_x"]) (fromList ["85_x"])} let {85_x :: Bool} 85_x = == 80_x {([],[],[],[]) EmptyEDD} 94_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[] ,[]) EmptyEDD} in {([] ,[] ,[80_x,85_x,93_x,94_x,95_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 85_x {([],[],[],[]) EmptyEDD} of False -> {([] ,[] ,[80_x,93_x,94_x,95_x] ,[]) LetEDD (fromList ["80_x","87_x","93_x","94_x","95_x"]) (fromList ["87_x"])} let {87_x :: Bool} 87_x = < 80_x {([],[],[],[]) EmptyEDD} 94_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[80_x ,94_x] ,[]) EmptyEDD} in {([] ,[] ,[80_x,87_x,93_x,94_x,95_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 87_x {([],[],[],[]) EmptyEDD} of False -> {([] ,[] ,[80_x,93_x,94_x,95_x] ,[]) LetEDD (fromList ["80_x","90_x","93_x","94_x","95_x"]) (fromList ["90_x"])} let {90_x :: Bool} 90_x = > 80_x {([],[],[],[]) EmptyEDD} 94_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[80_x ,94_x] ,[]) EmptyEDD} in {([] ,[] ,[80_x,90_x,93_x,94_x,95_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 90_x {([],[],[],[]) EmptyEDD} of False -> 9998 {([],[],[],[]) EmptyEDD} True -> {([] ,[] ,[80_x,93_x,94_x,95_x] ,[]) LetEDD (fromList ["91_x","93_x","94_x"]) (fromList ["80_x","81_x","91_x","95_x"])} let {91_x :: BST Int @ rho1} 91_x = insertT 80_x {([],[],[],[]) EmptyEDD} 95_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[80_x ,95_x] ,[]) EmptyEDD} in {([] ,[] ,[91_x,93_x,94_x] ,[]) LetEDD (fromList ["92_x"]) (fromList ["80_x","81_x","91_x","92_x","93_x","94_x","95_x"])} let {92_x :: BST Int @ rho1} 92_x = Node 93_x {([],[],[93_x],[]) EmptyEDD} 94_x {([] ,[] ,[94_x] ,[]) EmptyEDD} 91_x {([],[],[91_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[91_x,93_x,94_x] ,[]) EmptyEDD} in 92_x {([],[],[92_x],[]) EmptyEDD} True -> {([] ,[] ,[80_x,93_x,94_x,95_x] ,[]) LetEDD (fromList ["88_x","94_x","95_x"]) (fromList ["80_x","81_x","88_x","93_x"])} let {88_x :: BST Int @ rho1} 88_x = insertT 80_x {([],[],[],[]) EmptyEDD} 93_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[80_x ,93_x] ,[]) EmptyEDD} in {([] ,[] ,[88_x,94_x,95_x] ,[]) LetEDD (fromList ["89_x"]) (fromList ["80_x","81_x","88_x","89_x","93_x","94_x","95_x"])} let {89_x :: BST Int @ rho1} 89_x = Node 88_x {([],[],[88_x],[]) EmptyEDD} 94_x {([] ,[] ,[94_x] ,[]) EmptyEDD} 95_x {([],[],[95_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[88_x,94_x,95_x] ,[]) EmptyEDD} in 89_x {([],[],[89_x],[]) EmptyEDD} True -> {([] ,[] ,[93_x,94_x,95_x] ,[]) LetEDD (fromList ["86_x"]) (fromList ["81_x","86_x","93_x","94_x","95_x"])} let {86_x :: BST Int @ rho1} 86_x = Node 93_x {([],[],[93_x],[]) EmptyEDD} 94_x {([],[],[94_x],[]) EmptyEDD} 95_x {([],[],[95_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[93_x,94_x,95_x] ,[]) EmptyEDD} in 86_x {([],[],[86_x],[]) EmptyEDD} {mkTree :: [Int] @ rho1 -> rho2 -> BST Int @ rho2} mkTree 96_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[96_x] ,[]) CaseEDD [(fromList ["100_x","99_x"],fromList ["100_x"]),(fromList [],fromList [])]} case 96_x {([],[],[],[]) EmptyEDD} of (: 99_x {([],[],[],[]) EmptyEDD} 100_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[100_x,99_x] ,[]) LetEDD (fromList ["98_x","99_x"]) (fromList ["100_x","96_x","98_x"])} let {98_x :: BST Int @ rho2} 98_x = mkTree 100_x {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[100_x],[]) EmptyEDD} in insertT 99_x {([],[],[],[]) EmptyEDD} 98_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[98_x ,99_x] ,[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["97_x"]) (fromList ["97_x"])} let {97_x :: BST Int @ rho2} 97_x = Empty @ 1_r {([],[],[],[]) EmptyEDD} in 97_x {([],[],[97_x],[]) EmptyEDD} {fall :: Int -> rho1 -> rho2 -> [Integer @ rho1] @ rho2} fall 101_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r= {([],[],[101_x],[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 101_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[],[]) LetEDD (fromList ["102_x"]) (fromList ["102_x"])} let {102_x :: [Integer @ rho1] @ rho2} 102_x = [] @ 2_r {([],[],[],[]) EmptyEDD} in 102_x {([],[],[102_x],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[101_x] ,[]) LetEDD (fromList ["101_x","104_x"]) (fromList ["101_x","104_x","_"])} let {104_x :: Integer @ rho1} 104_x = Integ 101_x {([],[],[101_x],[]) EmptyEDD} @ 1_r {([],[],[101_x],[]) EmptyEDD} in {([],[],[101_x,104_x],[]) LetEDD (fromList ["103_x","104_x"]) (fromList ["103_x"])} let {103_x :: [Integer @ rho1] @ rho2} 103_x = {([],[],[101_x],[]) LetEDD (fromList ["106_x"]) (fromList ["106_x"])} let {106_x :: Int} 106_x = - 101_x {([],[],[],[]) EmptyEDD} 1 {([],[],[],[]) EmptyEDD} {([] ,[] ,[101_x] ,[]) EmptyEDD} in fall 106_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r {([],[],[106_x],[]) EmptyEDD} in {([] ,[] ,[103_x,104_x] ,[]) LetEDD (fromList ["105_x"]) (fromList ["101_x","103_x","104_x","105_x","_"])} let {105_x :: [Integer @ rho1] @ rho2} 105_x = : 104_x {([],[],[104_x],[]) EmptyEDD} 103_x {([] ,[] ,[103_x] ,[]) EmptyEDD} @ 2_r {([] ,[] ,[103_x ,104_x] ,[]) EmptyEDD} in 105_x {([],[],[105_x],[]) EmptyEDD} {fallE :: Integer @ rho1 -> rho1 -> rho2 -> [Integer @ rho1] @ rho2} fallE 107_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r= {([],[],[107_x],[]) CaseEDD [(fromList ["115_x"],fromList [])]} case 107_x {([],[],[],[]) EmptyEDD} of (Integ 115_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[107_x,115_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 115_x {([],[],[],[]) EmptyEDD} of 0 -> {([],[],[],[]) LetEDD (fromList ["108_x"]) (fromList ["108_x"])} let {108_x :: [Integer @ rho1] @ rho2} 108_x = [] @ 2_r {([],[],[],[]) EmptyEDD} in 108_x {([],[],[108_x],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> {([],[],[107_x],[]) CaseEDD [(fromList ["114_x"],fromList [])]} case 107_x {([],[],[],[]) EmptyEDD} of (Integ 114_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[107_x,114_x] ,[]) LetEDD (fromList ["107_x","109_x"]) (fromList ["109_x"])} let {109_x :: [Integer @ rho1] @ rho2} 109_x = {([] ,[] ,[114_x] ,[]) LetEDD (fromList ["111_x"]) (fromList ["111_x"])} let {111_x :: Integer @ rho1} 111_x = {([] ,[] ,[114_x] ,[]) LetEDD (fromList ["112_x"]) (fromList ["112_x"])} let {112_x :: Int} 112_x = - 114_x {([],[],[],[]) EmptyEDD} 1 {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[114_x] ,[]) EmptyEDD} in {([] ,[] ,[112_x] ,[]) LetEDD (fromList ["113_x"]) (fromList ["112_x","113_x"])} let {113_x :: Integer @ rho1} 113_x = Integ 112_x {([],[],[112_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[112_x] ,[]) EmptyEDD} in 113_x {([],[],[113_x],[]) EmptyEDD} in fallE 111_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r {([] ,[] ,[111_x] ,[]) EmptyEDD} in {([] ,[] ,[107_x,109_x] ,[]) LetEDD (fromList ["110_x"]) (fromList ["107_x","109_x","110_x","114_x","115_x","_"])} let {110_x :: [Integer @ rho1] @ rho2} 110_x = : 107_x {([],[],[107_x],[]) EmptyEDD} 109_x {([] ,[] ,[109_x] ,[]) EmptyEDD} @ 2_r {([] ,[] ,[107_x ,109_x] ,[]) EmptyEDD} in 110_x {([],[],[110_x],[]) EmptyEDD} {inorder :: BST a @ rho1 -> rho2 -> [a] @ rho2} inorder 116_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[116_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList ["124_x","125_x","126_x"],fromList ["124_x","126_x"])]} case 116_x {([],[],[],[]) EmptyEDD} of Empty {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["117_x"]) (fromList ["117_x"])} let {117_x :: [a] @ rho2} 117_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in 117_x {([],[],[117_x],[]) EmptyEDD} (Node 124_x {([],[],[],[]) EmptyEDD} 125_x {([],[],[],[]) EmptyEDD} 126_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[124_x,125_x,126_x] ,[]) LetEDD (fromList ["119_x","125_x","126_x"]) (fromList ["116_x","119_x","124_x"])} let {119_x :: [a] @ rho_self} 119_x = inorder 124_x {([],[],[],[]) EmptyEDD} @ self {([],[],[124_x],[]) EmptyEDD} in {([] ,[] ,[119_x,125_x,126_x] ,[]) LetEDD (fromList ["118_x","119_x"]) (fromList ["116_x","118_x","125_x","126_x"])} let {118_x :: [a] @ rho2} 118_x = {([] ,[] ,[125_x,126_x] ,[]) LetEDD (fromList ["121_x","126_x"]) (fromList ["116_x","121_x","125_x"])} let {121_x :: [a] @ rho_self} 121_x = {([] ,[] ,[125_x] ,[]) LetEDD (fromList ["122_x","125_x"]) (fromList ["122_x"])} let {122_x :: [a] @ rho_self} 122_x = [] @ self {([],[],[],[]) EmptyEDD} in {([] ,[] ,[122_x,125_x] ,[]) LetEDD (fromList ["123_x"]) (fromList ["116_x","122_x","123_x","125_x"])} let {123_x :: [a] @ rho_self} 123_x = : 125_x {([],[],[125_x],[]) EmptyEDD} 122_x {([] ,[] ,[122_x] ,[]) EmptyEDD} @ self {([] ,[] ,[122_x ,125_x] ,[]) EmptyEDD} in 123_x {([],[],[123_x],[]) EmptyEDD} in {([] ,[] ,[121_x,126_x] ,[]) LetEDD (fromList ["120_x","121_x"]) (fromList ["116_x","120_x","126_x"])} let {120_x :: [a] @ rho2} 120_x = inorder 126_x {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[126_x],[]) EmptyEDD} in concat 121_x {([],[],[],[]) EmptyEDD} 120_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[120_x ,121_x] ,[]) EmptyEDD} in concat 119_x {([],[],[],[]) EmptyEDD} 118_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[118_x ,119_x] ,[]) EmptyEDD} {treesort :: [Int] @ rho1 -> rho2 -> [Int] @ rho2} treesort 127_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[127_x],[]) LetEDD (fromList ["128_x"]) (fromList ["127_x","128_x"])} let {128_x :: BST Int @ rho_self} 128_x = mkTree 127_x {([],[],[],[]) EmptyEDD} @ self {([],[],[127_x],[]) EmptyEDD} in inorder 128_x {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[128_x],[]) EmptyEDD} {split :: Int -> [a] @ rho1 -> rho1 -> rho2 -> rho3 -> TuplaTT [a] @ rho2 [a] @ rho1 @ rho3} split 129_x {([],[],[],[]) EmptyEDD} 130_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r 3_r= {([] ,[] ,[129_x,130_x] ,[]) CaseEDD [(fromList ["155_x","156_x"],fromList ["156_x"]),(fromList [],fromList [])]} case 130_x {([],[],[],[]) EmptyEDD} of (: 155_x {([],[],[],[]) EmptyEDD} 156_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[129_x,130_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 129_x {([],[],[],[]) EmptyEDD} of 0 -> {([] ,[] ,[129_x,130_x] ,[]) CaseEDD [(fromList ["151_x","152_x"],fromList ["152_x"]),(fromList [],fromList [])]} case 130_x {([],[],[],[]) EmptyEDD} of (: 151_x {([],[],[],[]) EmptyEDD} 152_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[151_x,152_x] ,[]) LetEDD (fromList ["135_x","151_x","152_x"]) (fromList ["135_x"])} let {135_x :: [a] @ rho2} 135_x = [] @ 2_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[135_x,151_x,152_x] ,[]) LetEDD (fromList ["134_x","135_x"]) (fromList ["130_x","134_x","151_x","152_x","155_x","156_x"])} let {134_x :: [a] @ rho1} 134_x = : 151_x {([],[],[151_x],[]) EmptyEDD} 152_x {([] ,[] ,[152_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[151_x ,152_x] ,[]) EmptyEDD} in {([] ,[] ,[134_x,135_x] ,[]) LetEDD (fromList ["136_x"]) (fromList ["130_x","134_x","135_x","136_x","151_x","152_x","155_x","156_x"])} let {136_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho3} 136_x = TuplaT 135_x {([],[],[135_x],[]) EmptyEDD} 134_x {([] ,[] ,[134_x] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[134_x ,135_x] ,[]) EmptyEDD} in 136_x {([],[],[136_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[129_x,130_x] ,[]) CaseEDD [(fromList ["149_x","150_x"],fromList ["150_x"]),(fromList [],fromList [])]} case 130_x {([],[],[],[]) EmptyEDD} of (: 149_x {([],[],[],[]) EmptyEDD} 150_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[129_x,149_x,150_x] ,[]) LetEDD (fromList ["140_x","149_x"]) (fromList ["130_x","140_x","150_x","155_x","156_x"])} let {140_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho_self} 140_x = {([] ,[] ,[129_x,150_x] ,[]) LetEDD (fromList ["137_x","150_x"]) (fromList ["137_x"])} let {137_x :: Int} 137_x = - 129_x {([],[],[],[]) EmptyEDD} 1 {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[129_x] ,[]) EmptyEDD} in split 137_x {([],[],[],[]) EmptyEDD} 150_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r 2_r self {([],[],[137_x,150_x],[]) EmptyEDD} in {([] ,[] ,[140_x,149_x] ,[]) LetEDD (fromList ["140_x","149_x","52_xs1"]) (fromList ["130_x","140_x","150_x","155_x","156_x","52_xs1"])} let {52_xs1 :: [a] @ rho2} 52_xs1 = {([] ,[] ,[140_x] ,[]) CaseEDD [(fromList ["145_x","146_x"],fromList [])]} case 140_x {([],[],[],[]) EmptyEDD} of (TuplaT 145_x {([],[],[],[]) EmptyEDD} 146_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 145_x {([],[],[145_x],[]) EmptyEDD} in {([] ,[] ,[140_x,149_x,52_xs1] ,[]) LetEDD (fromList ["149_x","52_xs1","53_xs2"]) (fromList ["130_x","140_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {53_xs2 :: [a] @ rho1} 53_xs2 = {([] ,[] ,[140_x] ,[]) CaseEDD [(fromList ["147_x","148_x"],fromList [])]} case 140_x {([],[],[],[]) EmptyEDD} of (TuplaT 147_x {([],[],[],[]) EmptyEDD} 148_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 148_x {([],[],[148_x],[]) EmptyEDD} in {([] ,[] ,[149_x,52_xs1,53_xs2] ,[]) LetEDD (fromList ["138_x","53_xs2"]) (fromList ["130_x","138_x","140_x","149_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {138_x :: [a] @ rho2} 138_x = : 149_x {([],[],[149_x],[]) EmptyEDD} 52_xs1 {([] ,[] ,[52_xs1] ,[]) EmptyEDD} @ 2_r {([] ,[] ,[149_x ,52_xs1] ,[]) EmptyEDD} in {([] ,[] ,[138_x,53_xs2] ,[]) LetEDD (fromList ["139_x"]) (fromList ["130_x","138_x","139_x","140_x","149_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {139_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho3} 139_x = TuplaT 138_x {([],[],[138_x],[]) EmptyEDD} 53_xs2 {([] ,[] ,[53_xs2] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[138_x ,53_xs2] ,[]) EmptyEDD} in 139_x {([],[],[139_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[129_x,130_x] ,[]) CaseEDD [(fromList ["149_x","150_x"],fromList ["150_x"]),(fromList [],fromList [])]} case 130_x {([],[],[],[]) EmptyEDD} of (: 149_x {([],[],[],[]) EmptyEDD} 150_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[129_x,149_x,150_x] ,[]) LetEDD (fromList ["140_x","149_x"]) (fromList ["130_x","140_x","150_x","155_x","156_x"])} let {140_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho_self} 140_x = {([] ,[] ,[129_x,150_x] ,[]) LetEDD (fromList ["137_x","150_x"]) (fromList ["137_x"])} let {137_x :: Int} 137_x = - 129_x {([],[],[],[]) EmptyEDD} 1 {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[129_x] ,[]) EmptyEDD} in split 137_x {([],[],[],[]) EmptyEDD} 150_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r 2_r self {([],[],[137_x,150_x],[]) EmptyEDD} in {([] ,[] ,[140_x,149_x] ,[]) LetEDD (fromList ["140_x","149_x","52_xs1"]) (fromList ["130_x","140_x","150_x","155_x","156_x","52_xs1"])} let {52_xs1 :: [a] @ rho2} 52_xs1 = {([] ,[] ,[140_x] ,[]) CaseEDD [(fromList ["145_x","146_x"],fromList [])]} case 140_x {([],[],[],[]) EmptyEDD} of (TuplaT 145_x {([],[],[],[]) EmptyEDD} 146_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 145_x {([],[],[145_x],[]) EmptyEDD} in {([] ,[] ,[140_x,149_x,52_xs1] ,[]) LetEDD (fromList ["149_x","52_xs1","53_xs2"]) (fromList ["130_x","140_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {53_xs2 :: [a] @ rho1} 53_xs2 = {([] ,[] ,[140_x] ,[]) CaseEDD [(fromList ["147_x","148_x"],fromList [])]} case 140_x {([],[],[],[]) EmptyEDD} of (TuplaT 147_x {([],[],[],[]) EmptyEDD} 148_x {([] ,[] ,[] ,[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 148_x {([],[],[148_x],[]) EmptyEDD} in {([] ,[] ,[149_x,52_xs1,53_xs2] ,[]) LetEDD (fromList ["138_x","53_xs2"]) (fromList ["130_x","138_x","140_x","149_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {138_x :: [a] @ rho2} 138_x = : 149_x {([],[],[149_x],[]) EmptyEDD} 52_xs1 {([] ,[] ,[52_xs1] ,[]) EmptyEDD} @ 2_r {([] ,[] ,[149_x ,52_xs1] ,[]) EmptyEDD} in {([] ,[] ,[138_x,53_xs2] ,[]) LetEDD (fromList ["139_x"]) (fromList ["130_x","138_x","139_x","140_x","149_x","150_x","155_x","156_x","52_xs1","53_xs2"])} let {139_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho3} 139_x = TuplaT 138_x {([],[],[138_x],[]) EmptyEDD} 53_xs2 {([] ,[] ,[53_xs2] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[138_x ,53_xs2] ,[]) EmptyEDD} in 139_x {([],[],[139_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["132_x"]) (fromList ["132_x"])} let {132_x :: [a] @ rho2} 132_x = [] @ 2_r {([],[],[],[]) EmptyEDD} in {([],[],[132_x],[]) LetEDD (fromList ["131_x","132_x"]) (fromList ["131_x"])} let {131_x :: [a] @ rho1} 131_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[131_x,132_x] ,[]) LetEDD (fromList ["133_x"]) (fromList ["131_x","132_x","133_x"])} let {133_x :: TuplaTT [a] @ rho2 [a] @ rho1 @ rho3} 133_x = TuplaT 132_x {([],[],[132_x],[]) EmptyEDD} 131_x {([] ,[] ,[131_x] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[131_x ,132_x] ,[]) EmptyEDD} in 133_x {([],[],[133_x],[]) EmptyEDD} {length :: [a] @ rho1 -> Int} length 157_x {([],[],[],[]) EmptyEDD}= {([] ,[] ,[157_x] ,[]) CaseEDD [(fromList ["159_x","160_x"],fromList ["160_x"]),(fromList [],fromList [])]} case 157_x {([],[],[],[]) EmptyEDD} of (: 159_x {([],[],[],[]) EmptyEDD} 160_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([],[],[160_x],[]) LetEDD (fromList ["158_x"]) (fromList ["158_x"])} let {158_x :: Int} 158_x = length 160_x {([],[],[],[]) EmptyEDD} {([],[],[160_x],[]) EmptyEDD} in + 1 {([],[],[],[]) EmptyEDD} 158_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[158_x] ,[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 0 {([],[],[],[]) EmptyEDD} {merge :: [Int] @ rho1 -> [Int] @ rho1 -> rho1 -> [Int] @ rho1} merge 161_x {([],[],[],[]) EmptyEDD} 162_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[161_x,162_x] ,[]) CaseEDD [(fromList ["180_x","181_x"],fromList ["181_x"]),(fromList [],fromList [])]} case 162_x {([],[],[],[]) EmptyEDD} of (: 180_x {([],[],[],[]) EmptyEDD} 181_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[161_x,162_x] ,[]) CaseEDD [(fromList ["172_x","173_x"],fromList ["173_x"]),(fromList [],fromList [])]} case 161_x {([],[],[],[]) EmptyEDD} of (: 172_x {([],[],[],[]) EmptyEDD} 173_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[162_x,172_x,173_x] ,[]) CaseEDD [(fromList ["174_x","175_x"],fromList ["175_x"]),(fromList [],fromList [])]} case 162_x {([],[],[],[]) EmptyEDD} of (: 174_x {([],[],[],[]) EmptyEDD} 175_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[172_x,173_x,174_x,175_x] ,[]) LetEDD (fromList ["164_x","172_x","173_x","174_x","175_x"]) (fromList ["164_x"])} let {164_x :: Bool} 164_x = <= 172_x {([],[],[],[]) EmptyEDD} 174_x {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[172_x ,174_x] ,[]) EmptyEDD} in {([] ,[] ,[164_x,172_x,173_x,174_x,175_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 164_x {([],[],[],[]) EmptyEDD} of False -> {([] ,[] ,[172_x,173_x,174_x,175_x] ,[]) LetEDD (fromList ["168_x","172_x","173_x","174_x","175_x"]) (fromList ["168_x"])} let {168_x :: Bool} 168_x = > 172_x {([],[],[],[]) EmptyEDD} 174_x {([] ,[] ,[] ,[]) EmptyEDD} {([] ,[] ,[172_x ,174_x] ,[]) EmptyEDD} in {([] ,[] ,[168_x,172_x,173_x,174_x,175_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 168_x {([],[],[],[]) EmptyEDD} of False -> 9998 {([],[],[],[]) EmptyEDD} True -> {([] ,[] ,[172_x,173_x,174_x,175_x] ,[]) LetEDD (fromList ["169_x","174_x"]) (fromList ["161_x","162_x","169_x","172_x","173_x","175_x","180_x","181_x"])} let {169_x :: [Int] @ rho1} 169_x = {([] ,[] ,[172_x,173_x,175_x] ,[]) LetEDD (fromList ["171_x","175_x"]) (fromList ["161_x","171_x","172_x","173_x"])} let {171_x :: [Int] @ rho1} 171_x = : 172_x {([],[],[172_x],[]) EmptyEDD} 173_x {([] ,[] ,[173_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[172_x ,173_x] ,[]) EmptyEDD} in merge 171_x {([],[],[],[]) EmptyEDD} 175_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[171_x ,175_x] ,[]) EmptyEDD} in {([] ,[] ,[169_x,174_x] ,[]) LetEDD (fromList ["170_x"]) (fromList ["161_x","162_x","169_x","170_x","172_x","173_x","174_x","175_x","180_x","181_x"])} let {170_x :: [Int] @ rho1} 170_x = : 174_x {([],[],[174_x],[]) EmptyEDD} 169_x {([] ,[] ,[169_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[169_x ,174_x] ,[]) EmptyEDD} in 170_x {([],[],[170_x],[]) EmptyEDD} True -> {([] ,[] ,[172_x,173_x,174_x,175_x] ,[]) LetEDD (fromList ["165_x","172_x"]) (fromList ["161_x","162_x","165_x","173_x","174_x","175_x","180_x","181_x"])} let {165_x :: [Int] @ rho1} 165_x = {([] ,[] ,[173_x,174_x,175_x] ,[]) LetEDD (fromList ["167_x","173_x"]) (fromList ["162_x","167_x","174_x","175_x","180_x","181_x"])} let {167_x :: [Int] @ rho1} 167_x = : 174_x {([],[],[174_x],[]) EmptyEDD} 175_x {([] ,[] ,[175_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[174_x ,175_x] ,[]) EmptyEDD} in merge 173_x {([],[],[],[]) EmptyEDD} 167_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[167_x ,173_x] ,[]) EmptyEDD} in {([] ,[] ,[165_x,172_x] ,[]) LetEDD (fromList ["166_x"]) (fromList ["161_x","162_x","165_x","166_x","172_x","173_x","174_x","175_x","180_x","181_x"])} let {166_x :: [Int] @ rho1} 166_x = : 172_x {([],[],[172_x],[]) EmptyEDD} 165_x {([] ,[] ,[165_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[165_x ,172_x] ,[]) EmptyEDD} in 166_x {([],[],[166_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([] ,[] ,[162_x] ,[]) CaseEDD [(fromList ["176_x","177_x"],fromList ["177_x"]),(fromList [],fromList [])]} case 162_x {([],[],[],[]) EmptyEDD} of (: 176_x {([],[],[],[]) EmptyEDD} 177_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[176_x,177_x] ,[]) LetEDD (fromList ["163_x"]) (fromList ["162_x","163_x","176_x","177_x","180_x","181_x"])} let {163_x :: [Int] @ rho1} 163_x = : 176_x {([],[],[176_x],[]) EmptyEDD} 177_x {([] ,[] ,[177_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[176_x ,177_x] ,[]) EmptyEDD} in 163_x {([],[],[163_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 161_x {([],[],[161_x],[]) EmptyEDD} {msort :: [a] @ rho1 -> rho1 -> rho2 -> [Int] @ rho2} msort 182_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r= {([],[],[182_x],[]) LetEDD (fromList ["182_x","64_n"]) (fromList ["64_n"])} let {64_n :: Int} 64_n = length 182_x {([],[],[],[]) EmptyEDD} {([],[],[182_x],[]) EmptyEDD} in {([],[],[182_x,64_n],[]) LetEDD (fromList ["186_x"]) (fromList ["182_x","186_x"])} let {186_x :: TuplaTT [a] @ rho_self [a] @ rho1 @ rho_self} 186_x = {([],[],[182_x,64_n],[]) LetEDD (fromList ["182_x","183_x"]) (fromList ["183_x"])} let {183_x :: Int} 183_x = + 64_n {([],[],[],[]) EmptyEDD} 2 {([],[],[],[]) EmptyEDD} {([] ,[] ,[64_n] ,[]) EmptyEDD} in split 183_x {([],[],[],[]) EmptyEDD} 182_x {([],[],[],[]) EmptyEDD} @ 1_r self self {([],[],[182_x,183_x],[]) EmptyEDD} in {([] ,[] ,[186_x] ,[]) LetEDD (fromList ["186_x","65_xs1"]) (fromList ["182_x","186_x","65_xs1"])} let {65_xs1 :: [a] @ rho_self} 65_xs1 = {([],[],[186_x],[]) CaseEDD [(fromList ["191_x","192_x"],fromList [])]} case 186_x {([],[],[],[]) EmptyEDD} of (TuplaT 191_x {([],[],[],[]) EmptyEDD} 192_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 191_x {([],[],[191_x],[]) EmptyEDD} in {([] ,[] ,[186_x,65_xs1] ,[]) LetEDD (fromList ["65_xs1","66_xs2"]) (fromList ["182_x","186_x","65_xs1","66_xs2"])} let {66_xs2 :: [a] @ rho1} 66_xs2 = {([],[],[186_x],[]) CaseEDD [(fromList ["193_x","194_x"],fromList [])]} case 186_x {([],[],[],[]) EmptyEDD} of (TuplaT 193_x {([],[],[],[]) EmptyEDD} 194_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 194_x {([],[],[194_x],[]) EmptyEDD} in {([],[],[65_xs1,66_xs2],[]) LetEDD (fromList ["185_x","66_xs2"]) (fromList ["185_x"])} let {185_x :: [Int] @ rho2} 185_x = msort 65_xs1 {([],[],[],[]) EmptyEDD} @ self 2_r {([],[],[65_xs1],[]) EmptyEDD} in {([],[],[185_x,66_xs2],[]) LetEDD (fromList ["184_x","185_x"]) (fromList ["184_x"])} let {184_x :: [Int] @ rho2} 184_x = msort 66_xs2 {([],[],[],[]) EmptyEDD} @ 1_r 2_r {([],[],[66_xs2],[]) EmptyEDD} in merge 185_x {([],[],[],[]) EmptyEDD} 184_x {([],[],[],[]) EmptyEDD} @ 2_r {([] ,[] ,[184_x,185_x] ,[]) EmptyEDD} {partition :: Int -> [Int] @ rho1 -> rho2 -> rho3 -> rho4 -> TuplaTT [Int] @ rho2 [Int] @ rho3 @ rho4} partition 195_x {([],[],[],[]) EmptyEDD} 196_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r 3_r= {([] ,[] ,[195_x,196_x] ,[]) CaseEDD [(fromList ["215_x","216_x"],fromList ["216_x"]),(fromList [],fromList [])]} case 196_x {([],[],[],[]) EmptyEDD} of (: 215_x {([],[],[],[]) EmptyEDD} 216_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[195_x,215_x,216_x] ,[]) LetEDD (fromList ["195_x","206_x","215_x"]) (fromList ["195_x","206_x"])} let {206_x :: TuplaTT [Int] @ rho2 [Int] @ rho3 @ rho_self} 206_x = partition 195_x {([],[],[],[]) EmptyEDD} 216_x {([],[],[],[]) EmptyEDD} @ 1_r 2_r self {([],[],[195_x,216_x],[]) EmptyEDD} in {([] ,[] ,[195_x,206_x,215_x] ,[]) LetEDD (fromList ["195_x","206_x","215_x","71_ls"]) (fromList ["195_x","206_x","71_ls"])} let {71_ls :: [Int] @ rho2} 71_ls = {([],[],[206_x],[]) CaseEDD [(fromList ["211_x","212_x"],fromList [])]} case 206_x {([],[],[],[]) EmptyEDD} of (TuplaT 211_x {([],[],[],[]) EmptyEDD} 212_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 211_x {([],[],[211_x],[]) EmptyEDD} in {([] ,[] ,[195_x,206_x,215_x,71_ls] ,[]) LetEDD (fromList ["195_x","215_x","71_ls","72_gs"]) (fromList ["195_x","206_x","71_ls","72_gs"])} let {72_gs :: [Int] @ rho3} 72_gs = {([],[],[206_x],[]) CaseEDD [(fromList ["213_x","214_x"],fromList [])]} case 206_x {([],[],[],[]) EmptyEDD} of (TuplaT 213_x {([],[],[],[]) EmptyEDD} 214_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 214_x {([],[],[214_x],[]) EmptyEDD} in {([] ,[] ,[195_x,215_x,71_ls,72_gs] ,[]) LetEDD (fromList ["195_x","200_x","215_x","71_ls","72_gs"]) (fromList ["200_x"])} let {200_x :: Bool} 200_x = <= 215_x {([],[],[],[]) EmptyEDD} 195_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[195_x,215_x] ,[]) EmptyEDD} in {([] ,[] ,[195_x,200_x,215_x,71_ls,72_gs] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 200_x {([],[],[],[]) EmptyEDD} of False -> {([] ,[] ,[195_x,215_x,71_ls,72_gs] ,[]) LetEDD (fromList ["195_x","203_x","71_ls","72_gs"]) (fromList ["203_x"])} let {203_x :: Bool} 203_x = > 215_x {([],[],[],[]) EmptyEDD} 195_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[195_x ,215_x] ,[]) EmptyEDD} in {([] ,[] ,[195_x,203_x,71_ls,72_gs] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 203_x {([],[],[],[]) EmptyEDD} of False -> 9998 {([],[],[],[]) EmptyEDD} True -> {([] ,[] ,[195_x,71_ls,72_gs] ,[]) LetEDD (fromList ["204_x","71_ls"]) (fromList ["195_x","204_x","206_x","71_ls","72_gs"])} let {204_x :: [Int] @ rho3} 204_x = : 195_x {([],[],[195_x],[]) EmptyEDD} 72_gs {([] ,[] ,[72_gs] ,[]) EmptyEDD} @ 2_r {([] ,[] ,[195_x ,72_gs] ,[]) EmptyEDD} in {([] ,[] ,[204_x,71_ls] ,[]) LetEDD (fromList ["205_x"]) (fromList ["195_x","204_x","205_x","206_x","71_ls","72_gs"])} let {205_x :: TuplaTT [Int] @ rho2 [Int] @ rho3 @ rho4} 205_x = TuplaT 71_ls {([],[],[71_ls],[]) EmptyEDD} 204_x {([] ,[] ,[204_x] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[204_x ,71_ls] ,[]) EmptyEDD} in 205_x {([],[],[205_x],[]) EmptyEDD} True -> {([] ,[] ,[195_x,71_ls,72_gs] ,[]) LetEDD (fromList ["201_x","72_gs"]) (fromList ["195_x","201_x","206_x","71_ls","72_gs"])} let {201_x :: [Int] @ rho2} 201_x = : 195_x {([],[],[195_x],[]) EmptyEDD} 71_ls {([] ,[] ,[71_ls] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[195_x ,71_ls] ,[]) EmptyEDD} in {([] ,[] ,[201_x,72_gs] ,[]) LetEDD (fromList ["202_x"]) (fromList ["195_x","201_x","202_x","206_x","71_ls","72_gs"])} let {202_x :: TuplaTT [Int] @ rho2 [Int] @ rho3 @ rho4} 202_x = TuplaT 201_x {([],[],[201_x],[]) EmptyEDD} 72_gs {([] ,[] ,[72_gs] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[201_x ,72_gs] ,[]) EmptyEDD} in 202_x {([],[],[202_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["198_x"]) (fromList ["198_x"])} let {198_x :: [Int] @ rho2} 198_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in {([],[],[198_x],[]) LetEDD (fromList ["197_x","198_x"]) (fromList ["197_x"])} let {197_x :: [Int] @ rho3} 197_x = [] @ 2_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[197_x,198_x] ,[]) LetEDD (fromList ["199_x"]) (fromList ["197_x","198_x","199_x"])} let {199_x :: TuplaTT [Int] @ rho2 [Int] @ rho3 @ rho4} 199_x = TuplaT 198_x {([],[],[198_x],[]) EmptyEDD} 197_x {([] ,[] ,[197_x] ,[]) EmptyEDD} @ 3_r {([] ,[] ,[197_x ,198_x] ,[]) EmptyEDD} in 199_x {([],[],[199_x],[]) EmptyEDD} {qsort :: [Int] @ rho1 -> rho2 -> [Int] @ rho2} qsort 217_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[217_x] ,[]) CaseEDD [(fromList ["229_x","230_x"],fromList ["230_x"]),(fromList [],fromList [])]} case 217_x {([],[],[],[]) EmptyEDD} of (: 229_x {([],[],[],[]) EmptyEDD} 230_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[229_x,230_x] ,[]) LetEDD (fromList ["220_x","229_x"]) (fromList ["217_x","220_x","229_x"])} let {220_x :: TuplaTT [Int] @ rho_self [Int] @ rho_self @ rho_self} 220_x = partition 229_x {([],[],[],[]) EmptyEDD} 230_x {([],[],[],[]) EmptyEDD} @ self self self {([],[],[229_x,230_x],[]) EmptyEDD} in {([] ,[] ,[220_x,229_x] ,[]) LetEDD (fromList ["220_x","229_x","75_ls"]) (fromList ["217_x","220_x","229_x","75_ls"])} let {75_ls :: [Int] @ rho_self} 75_ls = {([],[],[220_x],[]) CaseEDD [(fromList ["225_x","226_x"],fromList [])]} case 220_x {([],[],[],[]) EmptyEDD} of (TuplaT 225_x {([],[],[],[]) EmptyEDD} 226_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 225_x {([],[],[225_x],[]) EmptyEDD} in {([] ,[] ,[220_x,229_x,75_ls] ,[]) LetEDD (fromList ["229_x","75_ls","76_gs"]) (fromList ["217_x","220_x","229_x","75_ls","76_gs"])} let {76_gs :: [Int] @ rho_self} 76_gs = {([],[],[220_x],[]) CaseEDD [(fromList ["227_x","228_x"],fromList [])]} case 220_x {([],[],[],[]) EmptyEDD} of (TuplaT 227_x {([],[],[],[]) EmptyEDD} 228_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> 228_x {([],[],[228_x],[]) EmptyEDD} in {([] ,[] ,[229_x,75_ls,76_gs] ,[]) LetEDD (fromList ["229_x","76_gs","77_ls1"]) (fromList ["217_x","220_x","229_x","75_ls","76_gs","77_ls1"])} let {77_ls1 :: [Int] @ rho_self} 77_ls1 = qsort 75_ls {([],[],[],[]) EmptyEDD} @ self {([],[],[75_ls],[]) EmptyEDD} in {([] ,[] ,[229_x,76_gs,77_ls1] ,[]) LetEDD (fromList ["229_x","77_ls1","78_gs1"]) (fromList ["217_x","220_x","229_x","75_ls","76_gs","77_ls1","78_gs1"])} let {78_gs1 :: [Int] @ rho2} 78_gs1 = qsort 76_gs {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[76_gs],[]) EmptyEDD} in {([] ,[] ,[229_x,77_ls1,78_gs1] ,[]) LetEDD (fromList ["219_x","77_ls1"]) (fromList ["217_x","219_x","220_x","229_x","75_ls","76_gs","77_ls1","78_gs1"])} let {219_x :: [Int] @ rho2} 219_x = : 229_x {([],[],[229_x],[]) EmptyEDD} 78_gs1 {([] ,[] ,[78_gs1] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[229_x ,78_gs1] ,[]) EmptyEDD} in concat 77_ls1 {([],[],[],[]) EmptyEDD} 219_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[219_x ,77_ls1] ,[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["218_x"]) (fromList ["218_x"])} let {218_x :: [Int] @ rho2} 218_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in 218_x {([],[],[218_x],[]) EmptyEDD} {insert :: Int -> [Int] @ rho1 -> rho1 -> [Int] @ rho1} insert 231_x {([],[],[],[]) EmptyEDD} 232_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[231_x,232_x] ,[]) CaseEDD [(fromList ["241_x","242_x"],fromList ["242_x"]),(fromList [],fromList [])]} case 232_x {([],[],[],[]) EmptyEDD} of (: 241_x {([],[],[],[]) EmptyEDD} 242_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[231_x,241_x,242_x] ,[]) LetEDD (fromList ["231_x","235_x","241_x","242_x"]) (fromList ["235_x"])} let {235_x :: Bool} 235_x = <= 231_x {([],[],[],[]) EmptyEDD} 241_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[231_x,241_x] ,[]) EmptyEDD} in {([] ,[] ,[231_x,235_x,241_x,242_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 235_x {([],[],[],[]) EmptyEDD} of False -> {([] ,[] ,[231_x,241_x,242_x] ,[]) LetEDD (fromList ["231_x","238_x","241_x","242_x"]) (fromList ["238_x"])} let {238_x :: Bool} 238_x = > 231_x {([],[],[],[]) EmptyEDD} 241_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[231_x ,241_x] ,[]) EmptyEDD} in {([] ,[] ,[231_x,238_x,241_x,242_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 238_x {([],[],[],[]) EmptyEDD} of False -> 9998 {([],[],[],[]) EmptyEDD} True -> {([] ,[] ,[231_x,241_x,242_x] ,[]) LetEDD (fromList ["239_x","241_x"]) (fromList ["231_x","232_x","239_x","242_x"])} let {239_x :: [Int] @ rho1} 239_x = insert 231_x {([],[],[],[]) EmptyEDD} 242_x {([] ,[] ,[] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[231_x ,242_x] ,[]) EmptyEDD} in {([] ,[] ,[239_x,241_x] ,[]) LetEDD (fromList ["240_x"]) (fromList ["231_x","232_x","239_x","240_x","241_x","242_x"])} let {240_x :: [Int] @ rho1} 240_x = : 241_x {([],[],[241_x],[]) EmptyEDD} 239_x {([] ,[] ,[239_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[239_x ,241_x] ,[]) EmptyEDD} in 240_x {([],[],[240_x],[]) EmptyEDD} True -> {([] ,[] ,[231_x,241_x,242_x] ,[]) LetEDD (fromList ["231_x","236_x"]) (fromList ["232_x","236_x","241_x","242_x"])} let {236_x :: [Int] @ rho1} 236_x = : 241_x {([],[],[241_x],[]) EmptyEDD} 242_x {([] ,[] ,[242_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[241_x ,242_x] ,[]) EmptyEDD} in {([] ,[] ,[231_x,236_x] ,[]) LetEDD (fromList ["237_x"]) (fromList ["231_x","232_x","236_x","237_x","241_x","242_x"])} let {237_x :: [Int] @ rho1} 237_x = : 231_x {([],[],[231_x],[]) EmptyEDD} 236_x {([] ,[] ,[236_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[231_x ,236_x] ,[]) EmptyEDD} in 237_x {([],[],[237_x],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[231_x],[]) LetEDD (fromList ["231_x","233_x"]) (fromList ["233_x"])} let {233_x :: [Int] @ rho1} 233_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in {([] ,[] ,[231_x,233_x] ,[]) LetEDD (fromList ["234_x"]) (fromList ["231_x","233_x","234_x"])} let {234_x :: [Int] @ rho1} 234_x = : 231_x {([],[],[231_x],[]) EmptyEDD} 233_x {([] ,[] ,[233_x] ,[]) EmptyEDD} @ 1_r {([] ,[] ,[231_x ,233_x] ,[]) EmptyEDD} in 234_x {([],[],[234_x],[]) EmptyEDD} {insSort :: [Int] @ rho1 -> rho2 -> [Int] @ rho2} insSort 243_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[243_x] ,[]) CaseEDD [(fromList ["246_x","247_x"],fromList ["247_x"]),(fromList [],fromList [])]} case 243_x {([],[],[],[]) EmptyEDD} of (: 246_x {([],[],[],[]) EmptyEDD} 247_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[246_x,247_x] ,[]) LetEDD (fromList ["245_x","246_x"]) (fromList ["243_x","245_x","247_x"])} let {245_x :: [Int] @ rho2} 245_x = insSort 247_x {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[247_x],[]) EmptyEDD} in insert 246_x {([],[],[],[]) EmptyEDD} 245_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[245_x ,246_x] ,[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["244_x"]) (fromList ["244_x"])} let {244_x :: [Int] @ rho2} 244_x = [] @ 1_r {([],[],[],[]) EmptyEDD} in 244_x {([],[],[244_x],[]) EmptyEDD} {copyAndCopy :: [Int] @ rho1 -> rho2 -> [Int] @ rho2} copyAndCopy 248_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[248_x] ,[]) CaseEDD [(fromList ["249_x","250_x"],fromList ["250_x"]),(fromList [],fromList [])]} case 248_x {([],[],[],[]) EmptyEDD} of (: 249_x {([],[],[],[]) EmptyEDD} 250_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([] ,[] ,[249_x,250_x] ,[]) CaseEDD [(fromList [],fromList []),(fromList [],fromList [])]} case 249_x {([],[],[],[]) EmptyEDD} of 3 -> {([] ,[] ,[250_x] ,[]) LetEDD (fromList ["86_ys"]) (fromList ["248_x","250_x","86_ys"])} let {86_ys :: [Int] @ rho_self} 86_ys = 250_x @ self {([],[],[250_x],[]) EmptyEDD} in {([] ,[] ,[86_ys] ,[]) LetEDD (fromList ["87_zs"]) (fromList ["248_x","250_x","86_ys","87_zs"])} let {87_zs :: [Int] @ rho_self} 87_zs = 86_ys @ self {([],[],[86_ys],[]) EmptyEDD} in {([] ,[] ,[87_zs] ,[]) LetEDD (fromList ["88_ws"]) (fromList ["248_x","250_x","86_ys","87_zs","88_ws"])} let {88_ws :: [Int] @ rho_self} 88_ws = 87_zs @ self {([],[],[87_zs],[]) EmptyEDD} in {([] ,[] ,[88_ws] ,[]) LetEDD (fromList ["89_vs"]) (fromList ["248_x","250_x","86_ys","87_zs","88_ws","89_vs"])} let {89_vs :: [Int] @ rho_self} 89_vs = 88_ws @ self {([],[],[88_ws],[]) EmptyEDD} in 89_vs @ 1_r {([],[],[89_vs],[]) EmptyEDD} _ {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> 9999 {([],[],[],[]) EmptyEDD} {sumInteg :: Integer @ rho1 -> Integer @ rho2 -> rho3 -> Integer @ rho3} sumInteg 251_x {([],[],[],[]) EmptyEDD} 252_x {([],[],[],[]) EmptyEDD} @ 1_r= {([],[],[251_x,252_x],[]) CaseEDD [(fromList ["255_x"],fromList [])]} case 251_x {([],[],[],[]) EmptyEDD} of (Integ 255_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([],[],[252_x,255_x],[]) CaseEDD [(fromList ["256_x"],fromList [])]} case 252_x {([],[],[],[]) EmptyEDD} of (Integ 256_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> {([],[],[255_x,256_x],[]) LetEDD (fromList ["253_x"]) (fromList ["253_x"])} let {253_x :: Int} 253_x = + 255_x {([],[],[],[]) EmptyEDD} 256_x {([],[],[],[]) EmptyEDD} {([] ,[] ,[255_x ,256_x] ,[]) EmptyEDD} in {([],[],[253_x],[]) LetEDD (fromList ["254_x"]) (fromList ["253_x","254_x"])} let {254_x :: Integer @ rho3} 254_x = Integ 253_x {([],[],[253_x],[]) EmptyEDD} @ 1_r {([] ,[] ,[253_x] ,[]) EmptyEDD} in 254_x {([],[],[254_x],[]) EmptyEDD} {sumIntegList :: [Integer @ rho1] @ rho2 -> rho3 -> Integer @ rho3} sumIntegList 257_x {([],[],[],[]) EmptyEDD} @ 1_r= {([] ,[] ,[257_x] ,[]) CaseEDD [(fromList ["260_x","261_x"],fromList ["261_x"]),(fromList [],fromList [])]} case 257_x {([],[],[],[]) EmptyEDD} of (: 260_x {([],[],[],[]) EmptyEDD} 261_x {([],[],[],[]) EmptyEDD}) {([] ,[] ,[] ,[]) EmptyEDD} -> {([],[],[260_x,261_x],[]) LetEDD (fromList ["259_x","260_x"]) (fromList ["259_x"])} let {259_x :: Integer @ rho_self} 259_x = sumIntegList 261_x {([],[],[],[]) EmptyEDD} @ self {([],[],[261_x],[]) EmptyEDD} in sumInteg 260_x {([],[],[],[]) EmptyEDD} 259_x {([],[],[],[]) EmptyEDD} @ 1_r {([] ,[] ,[259_x ,260_x] ,[]) EmptyEDD} [] {([],[],[],[]) EmptyEDD} -> {([],[],[],[]) LetEDD (fromList ["258_x"]) (fromList ["258_x"])} let {258_x :: Integer @ rho3} 258_x = Integ 0 {([],[],[],[]) EmptyEDD} @ 1_r {([],[],[],[]) EmptyEDD} in 258_x {([],[],[258_x],[]) EmptyEDD} {sum :: Int -> Int} sum 262_x {([],[],[],[]) EmptyEDD}= {([],[],[262_x],[]) LetEDD (fromList ["263_x"]) (fromList ["263_x"])} let {263_x :: Integer @ rho_self} 263_x = {([],[],[262_x],[]) LetEDD (fromList ["265_x"]) (fromList ["262_x","265_x"])} let {265_x :: [Integer @ rho_self] @ rho_self} 265_x = fall 262_x {([],[],[],[]) EmptyEDD} @ self self {([],[],[262_x],[]) EmptyEDD} in sumIntegList 265_x {([],[],[],[]) EmptyEDD} @ self {([],[],[265_x],[]) EmptyEDD} in {([],[],[263_x],[]) CaseEDD [(fromList ["264_x"],fromList [])]} case 263_x {([],[],[],[]) EmptyEDD} of (Integ 264_x {([],[],[],[]) EmptyEDD}) {([],[],[],[]) EmptyEDD} -> 264_x {([],[],[264_x],[]) EmptyEDD} + 2 {([],[],[],[]) EmptyEDD} 4 {([],[],[],[]) EmptyEDD} {([],[],[],[]) EmptyEDD}