------------------------------------------ 6. Sharing analysis Source: polyrec.safe Date: Di 27. Jan 15:03:04 CET 2009 ------------------------------------------ Entorno de comparticion (SubRP, ShRP, SubP, SubR, ShR, Sub, Sh) ----------------------- "%" => ([],[],[],[],[],[],[]) "&&" => ([],[],[],[],[],[],[]) "*" => ([],[],[],[],[],[],[]) "+" => ([],[],[],[],[],[],[]) "++" => ([],[],[],[],[],[],[]) "-" => ([],[],[],[],[],[],[]) "/" => ([],[],[],[],[],[],[]) "<" => ([],[],[],[],[],[],[]) "<=" => ([],[],[],[],[],[],[]) "==" => ([],[],[],[],[],[],[]) ">" => ([],[],[],[],[],[],[]) ">=" => ([],[],[],[],[],[],[]) "concat" => ([],[1,2],[],[],[],[],[1,2]) "fib" => ([],[],[],[],[],[],[]) "fst" => ([],[],[1],[],[],[],[1]) "fstD" => ([],[],[1],[],[],[],[1]) "g" => ([],[],[],[],[],[],[]) "h" => ([],[2],[],[2],[2],[2],[2]) "pascal" => ([],[],[],[],[],[],[]) "snd" => ([],[],[1],[],[],[],[1]) "sndD" => ([],[],[1],[],[],[],[1]) "sumList" => ([],[1],[],[],[],[],[1]) "sumList'" => ([],[1],[],[],[],[],[1]) Programa decorado ----------------- data ListaT a @ rho1 = | [] @ rho1 | : a REC @ rho1 data Ent @ rho1 = | E Int @ rho1 {* :: Int -> Int -> Int Int -> Int -> Int} * 0_x {(Int,)} 1_x {(Int,)}= {(Int,)} case 0_x {(Int,)} of 0 -> {(Int,)} case 1_x {(Int,)} of 0 -> 0 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {+ :: Int -> Int -> Int Int -> Int -> Int} + 2_x {(Int,)} 3_x {(Int,)}= {(Int,)} case 2_x {(Int,)} of 0 -> {(Int,)} case 3_x {(Int,)} of 0 -> 0 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {- :: Int -> Int -> Int Int -> Int -> Int} - 4_x {(Int,)} 5_x {(Int,)}= {(Int,)} case 4_x {(Int,)} of 0 -> {(Int,)} case 5_x {(Int,)} of 0 -> 0 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {/ :: Int -> Int -> Int Int -> Int -> Int} / 6_x {(Int,)} 7_x {(Int,)}= {(Int,)} case 6_x {(Int,)} of 0 -> {(Int,)} case 7_x {(Int,)} of 0 -> 0 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {% :: Int -> Int -> Int Int -> Int -> Int} % 8_x {(Int,)} 9_x {(Int,)}= {(Int,)} case 8_x {(Int,)} of 0 -> {(Int,)} case 9_x {(Int,)} of 0 -> 0 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {< :: Int -> Int -> Bool Int -> Int -> Bool} < 10_x {(Int,)} 11_x {(Int,)}= {(Bool,)} case 10_x {(Int,)} of 0 -> {(Bool,)} case 11_x {(Int,)} of 0 -> True {(Bool,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {> :: Int -> Int -> Bool Int -> Int -> Bool} > 12_x {(Int,)} 13_x {(Int,)}= {(Bool,)} case 12_x {(Int,)} of 0 -> {(Bool,)} case 13_x {(Int,)} of 0 -> True {(Bool,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {== :: a -> a -> Bool a -> a -> Bool} == 14_x {(A1,)} 15_x {(A2,)}= True {(Bool,)} {<= :: Int -> Int -> Bool Int -> Int -> Bool} <= 16_x {(Int,)} 17_x {(Int,)}= {(Bool,)} case 16_x {(Int,)} of 0 -> {(Bool,)} case 17_x {(Int,)} of 0 -> True {(Bool,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {>= :: Int -> Int -> Bool Int -> Int -> Bool} >= 18_x {(Int,)} 19_x {(Int,)}= {(Bool,)} case 18_x {(Int,)} of 0 -> {(Bool,)} case 19_x {(Int,)} of 0 -> False {(Bool,)} _ {(Int,)} -> 9999 {(Int,)} _ {(Int,)} -> 9999 {(Int,)} {&& :: Bool -> Bool -> Bool Bool -> Bool -> Bool} && 20_x {(A1,)} 21_x {(A2,)}= False {(Bool,)} {fst :: TuplaTT a b @ rho1 -> a} fst 22_x {(TuplaTT a b @ rho1,)}= {(a,)} case 22_x {(TuplaTT a b @ rho1,)} of (TuplaT 23_x {(a,)} 24_x {(b,)}) {(TuplaTT a b @ rho1,)} -> 23_x {(a,)} {snd :: TuplaTT a b @ rho1 -> b} snd 25_x {(TuplaTT a b @ rho1,)}= {(b,)} case 25_x {(TuplaTT a b @ rho1,)} of (TuplaT 26_x {(a,)} 27_x {(b,)}) {(TuplaTT a b @ rho1,)} -> 27_x {(b,)} {fstD :: TuplaTT a b @ rho1 -> a} fstD 28_x {(TuplaTT a b @ rho1,)}= {(a,([28_x],[28_x],[28_x],[28_x],[28_x],[28_x],[28_x]))} case! 28_x {(TuplaTT a b @ rho1,)} of (TuplaT 29_x {(a,)} 30_x {(b,)}) {(TuplaTT a b @ rho1,)} -> 29_x {(a,)} {sndD :: TuplaTT a b @ rho1 -> b} sndD 31_x {(TuplaTT a b @ rho1,)}= {(b,([31_x],[31_x],[31_x],[31_x],[31_x],[31_x],[31_x]))} case! 31_x {(TuplaTT a b @ rho1,)} of (TuplaT 32_x {(a,)} 33_x {(b,)}) {(TuplaTT a b @ rho1,)} -> 33_x {(b,)} {++ :: Ent @ rho1 -> Ent @ rho2 -> rho3 -> Ent @ rho3} ++ 34_x {(Ent @ rho1,)} 35_x {(Ent @ rho2,)} @ 1_r= {(Ent @ rho3,)} case 34_x {(Ent @ rho1,)} of (E 38_x {(Int,)}) {(Ent @ rho1,)} -> {(Ent @ rho3,)} case 35_x {(Ent @ rho2,)} of (E 39_x {(Int,)}) {(Ent @ rho2,)} -> {(Ent @ rho3,([36_x],[36_x],[36_x],[36_x],[36_x],[36_x],[36_x]))} let {36_x :: Int} 36_x = + 38_x {(Int ,([38_x],[38_x],[38_x],[38_x],[38_x],[34_x,38_x],[34_x,38_x]))} 39_x {(Int ,([39_x] ,[39_x] ,[39_x] ,[39_x] ,[39_x] ,[35_x,39_x] ,[35_x,39_x]))} {(Int,)} in {(Ent @ rho3 ,([37_x],[37_x],[37_x],[36_x,37_x],[36_x,37_x],[37_x],[36_x,37_x]))} let {37_x :: Ent @ rho3} 37_x = E 36_x {(Int,)} @ 1_r {(Ent @ rho3,)} in 37_x {(Ent @ rho3,)} {concat :: [a] @ rho1 -> [a] @ rho2 -> rho3 -> [a] @ rho3} concat 40_x {([a] @ rho1,)} 41_x {([a] @ rho2,)} @ 1_r= {([a] @ rho3,)} case 40_x {([a] @ rho1,)} of (: 44_x {(a,)} 45_x {([a] @ rho1,)}) {([a] @ rho1,)} -> {([a] @ rho3 ,([19_v] ,[19_v] ,[19_v] ,[19_v,40_x,41_x,44_x,45_x] ,[19_v,44_x] ,[19_v] ,[19_v,40_x,41_x,44_x,45_x]))} let {19_v :: [a] @ rho_self} 19_v = {([a] @ rho_self ,([42_x] ,[42_x] ,[42_x] ,[40_x,41_x,42_x,45_x] ,[42_x] ,[42_x] ,[40_x,41_x,42_x,45_x]))} let {42_x :: [a] @ rho_self} 42_x = concat 45_x {([a] @ rho1 ,([45_x] ,[40_x,45_x] ,[40_x,45_x] ,[40_x,45_x] ,[45_x] ,[40_x,45_x] ,[40_x,45_x]))} 41_x {([a] @ rho2 ,([41_x] ,[41_x] ,[41_x] ,[41_x] ,[41_x] ,[41_x] ,[41_x]))} @ self {([a] @ rho_self,)} in {([a] @ rho_self ,([42_x,43_x] ,[43_x] ,[42_x,43_x] ,[40_x,41_x,42_x,43_x,44_x,45_x] ,[42_x,43_x,44_x] ,[43_x] ,[40_x,41_x,42_x,43_x,44_x,45_x]))} let {43_x :: [a] @ rho_self} 43_x = : 44_x {(a,)} 42_x {([a] @ rho_self,)} @ self {([a] @ rho_self,)} in 43_x {([a] @ rho_self,)} in 19_v @ 1_r {([a] @ rho3,)} [] {([a] @ rho1,)} -> 41_x @ 1_r {([a] @ rho3,)} {fib :: Ent @ rho1 -> rho2 -> Ent @ rho2} fib 46_x {(Ent @ rho1,)} @ 1_r= {(Ent @ rho2,)} case 46_x {(Ent @ rho1,)} of (E 57_x {(Int,)}) {(Ent @ rho1,)} -> {(Ent @ rho2,)} case 57_x {(Int,)} of 0 -> {(Ent @ rho2,([47_x],[47_x],[47_x],[47_x],[47_x],[47_x],[47_x]))} let {47_x :: Ent @ rho2} 47_x = E 1 {(Int,)} @ 1_r {(Ent @ rho2,)} in 47_x {(Ent @ rho2,)} 1 -> {(Ent @ rho2,([48_x],[48_x],[48_x],[48_x],[48_x],[48_x],[48_x]))} let {48_x :: Ent @ rho2} 48_x = E 1 {(Int,)} @ 1_r {(Ent @ rho2,)} in 48_x {(Ent @ rho2,)} _ {(Int,)} -> {(Ent @ rho2,([50_x],[50_x],[50_x],[50_x],[50_x],[50_x],[50_x]))} let {50_x :: Ent @ rho_self} 50_x = {(Ent @ rho_self,([54_x],[54_x],[54_x],[54_x],[54_x],[54_x],[54_x]))} let {54_x :: Ent @ rho_self} 54_x = {(Ent @ rho_self ,([55_x],[55_x],[55_x],[55_x],[55_x],[55_x],[55_x]))} let {55_x :: Int} 55_x = - 57_x {(Int ,([57_x,_] ,[57_x,_] ,[57_x,_] ,[57_x,_] ,[57_x,_] ,[46_x,57_x,_] ,[46_x,57_x,_]))} 1 {(Int,)} {(Int,)} in {(Ent @ rho_self ,([56_x] ,[56_x] ,[56_x] ,[55_x,56_x] ,[55_x,56_x] ,[56_x] ,[55_x,56_x]))} let {56_x :: Ent @ rho_self} 56_x = E 55_x {(Int,)} @ self {(Ent @ rho_self,)} in 56_x {(Ent @ rho_self,)} in fib 54_x {(Ent @ rho_self ,([54_x] ,[54_x] ,[54_x] ,[54_x] ,[54_x] ,[54_x] ,[54_x]))} @ self {(Ent @ rho_self,)} in {(Ent @ rho2,([49_x],[49_x],[49_x],[49_x],[49_x],[49_x],[49_x]))} let {49_x :: Ent @ rho_self} 49_x = {(Ent @ rho_self,([51_x],[51_x],[51_x],[51_x],[51_x],[51_x],[51_x]))} let {51_x :: Ent @ rho_self} 51_x = {(Ent @ rho_self ,([52_x],[52_x],[52_x],[52_x],[52_x],[52_x],[52_x]))} let {52_x :: Int} 52_x = - 57_x {(Int ,([57_x,_] ,[57_x,_] ,[57_x,_] ,[57_x,_] ,[57_x,_] ,[46_x,57_x,_] ,[46_x,57_x,_]))} 2 {(Int,)} {(Int,)} in {(Ent @ rho_self ,([53_x] ,[53_x] ,[53_x] ,[52_x,53_x] ,[52_x,53_x] ,[53_x] ,[52_x,53_x]))} let {53_x :: Ent @ rho_self} 53_x = E 52_x {(Int,)} @ self {(Ent @ rho_self,)} in 53_x {(Ent @ rho_self,)} in fib 51_x {(Ent @ rho_self ,([51_x] ,[51_x] ,[51_x] ,[51_x] ,[51_x] ,[51_x] ,[51_x]))} @ self {(Ent @ rho_self,)} in ++ 50_x {(Ent @ rho_self ,([50_x],[50_x],[50_x],[50_x],[50_x],[50_x],[50_x]))} 49_x {(Ent @ rho_self ,([49_x],[49_x],[49_x],[49_x],[49_x],[49_x],[49_x]))} @ 1_r {(Ent @ rho2 ,)} {sumList :: [Ent @ rho1] @ rho2 -> rho3 -> rho4 -> [Ent @ rho3] @ rho4} sumList 58_x {([Ent @ rho1] @ rho2,)} @ 1_r 2_r= {([Ent @ rho3] @ rho4,)} case 58_x {([Ent @ rho1] @ rho2,)} of (: 68_x {(Ent @ rho1,)} 69_x {([Ent @ rho1] @ rho2,)}) {([Ent @ rho1] @ rho2,)} -> {([Ent @ rho3] @ rho4,)} case 69_x {([Ent @ rho1] @ rho2,)} of (: 66_x {(Ent @ rho1,)} 67_x {([Ent @ rho1] @ rho2,)}) {([Ent @ rho1] @ rho2 ,)} -> {([Ent @ rho3] @ rho4,([64_x],[64_x],[64_x],[64_x],[64_x],[64_x],[64_x]))} let {64_x :: Ent @ rho3} 64_x = ++ 68_x {(Ent @ rho1 ,([68_x],[68_x],[68_x],[68_x],[68_x],[58_x,68_x],[58_x,68_x]))} 66_x {(Ent @ rho1 ,([66_x] ,[66_x] ,[66_x] ,[66_x] ,[66_x] ,[58_x,66_x,69_x] ,[58_x,66_x,69_x]))} @ 1_r {(Ent @ rho3,)} in {([Ent @ rho3] @ rho4 ,([63_x] ,[63_x] ,[63_x] ,[58_x,63_x,67_x,69_x] ,[63_x] ,[63_x] ,[58_x,63_x,66_x,67_x,69_x]))} let {63_x :: [Ent @ rho3] @ rho4} 63_x = sumList 69_x {([Ent @ rho1] @ rho2 ,([67_x,69_x] ,[58_x,69_x] ,[58_x,67_x,69_x] ,[58_x,67_x,69_x] ,[66_x,67_x,69_x] ,[58_x,69_x] ,[58_x,66_x,67_x,69_x]))} @ 1_r 2_r {([Ent @ rho3] @ rho4 ,)} in {([Ent @ rho3] @ rho4 ,([63_x,65_x] ,[65_x] ,[63_x,65_x] ,[58_x,63_x,64_x,65_x,67_x,69_x] ,[63_x,64_x,65_x] ,[65_x] ,[58_x,63_x,64_x,65_x,66_x,67_x,69_x]))} let {65_x :: [Ent @ rho3] @ rho4} 65_x = : 64_x {(Ent @ rho3,)} 63_x {([Ent @ rho3] @ rho4 ,)} @ 2_r {([Ent @ rho3] @ rho4,)} in 65_x {([Ent @ rho3] @ rho4,)} [] {([Ent @ rho1] @ rho2,)} -> {([Ent @ rho3] @ rho4 ,([61_x],[61_x],[61_x],[61_x],[61_x],[61_x],[58_x,61_x,68_x]))} let {61_x :: Ent @ rho3} 61_x = 68_x @ 1_r {(Ent @ rho3,)} in {([Ent @ rho3] @ rho4,([60_x],[60_x],[60_x],[60_x],[60_x],[60_x],[60_x]))} let {60_x :: [Ent @ rho3] @ rho4} 60_x = [] @ 2_r {([Ent @ rho3] @ rho4,)} in {([Ent @ rho3] @ rho4 ,([60_x,62_x] ,[62_x] ,[60_x,62_x] ,[60_x,61_x,62_x] ,[60_x,61_x,62_x] ,[62_x] ,[58_x,60_x,61_x,62_x,68_x]))} let {62_x :: [Ent @ rho3] @ rho4} 62_x = : 61_x {(Ent @ rho3,)} 60_x {([Ent @ rho3] @ rho4 ,)} @ 2_r {([Ent @ rho3] @ rho4,)} in 62_x {([Ent @ rho3] @ rho4,)} [] {([Ent @ rho1] @ rho2,)} -> {([Ent @ rho3] @ rho4,([59_x],[59_x],[59_x],[59_x],[59_x],[59_x],[59_x]))} let {59_x :: [Ent @ rho3] @ rho4} 59_x = [] @ 2_r {([Ent @ rho3] @ rho4,)} in 59_x {([Ent @ rho3] @ rho4,)} {sumList' :: [Ent @ rho1] @ rho2 -> rho1 -> rho2 -> rho3 -> [Ent @ rho1] @ rho3} sumList' 70_x {([Ent @ rho1] @ rho2,)} @ 1_r 2_r 3_r= {([Ent @ rho1] @ rho3,)} case 70_x {([Ent @ rho1] @ rho2,)} of (: 77_x {(Ent @ rho1,)} 78_x {([Ent @ rho1] @ rho2,)}) {([Ent @ rho1] @ rho2,)} -> {([Ent @ rho1] @ rho3,)} case 78_x {([Ent @ rho1] @ rho2,)} of (: 79_x {(Ent @ rho1,)} 80_x {([Ent @ rho1] @ rho2,)}) {([Ent @ rho1] @ rho2 ,)} -> {([Ent @ rho1] @ rho3,([74_x],[74_x],[74_x],[74_x],[74_x],[74_x],[74_x]))} let {74_x :: Ent @ rho1} 74_x = ++ 77_x {(Ent @ rho1 ,([77_x],[77_x],[77_x],[77_x],[77_x],[70_x,77_x],[70_x,77_x]))} 79_x {(Ent @ rho1 ,([79_x] ,[79_x] ,[79_x] ,[79_x] ,[79_x] ,[70_x,78_x,79_x] ,[70_x,78_x,79_x]))} @ 1_r {(Ent @ rho1,)} in {([Ent @ rho1] @ rho3 ,([73_x] ,[73_x] ,[73_x] ,[70_x,73_x,78_x,79_x,80_x] ,[73_x] ,[73_x] ,[70_x,73_x,78_x,79_x,80_x]))} let {73_x :: [Ent @ rho1] @ rho3} 73_x = {([Ent @ rho1] @ rho3 ,([76_x,80_x] ,[76_x] ,[70_x,76_x,78_x,80_x] ,[70_x,76_x,78_x,79_x,80_x] ,[76_x,79_x,80_x] ,[76_x] ,[70_x,76_x,78_x,79_x,80_x]))} let {76_x :: [Ent @ rho1] @ rho2} 76_x = : 79_x {(Ent @ rho1,)} 80_x {([Ent @ rho1] @ rho2 ,)} @ 2_r {([Ent @ rho1] @ rho2,)} in sumList' 76_x {([Ent @ rho1] @ rho2 ,([76_x,80_x] ,[76_x] ,[70_x,76_x,78_x,80_x] ,[70_x,76_x,78_x,79_x,80_x] ,[76_x,79_x,80_x] ,[76_x] ,[70_x,76_x,78_x,79_x,80_x]))} @ 1_r 2_r 3_r {([Ent @ rho1] @ rho3,)} in {([Ent @ rho1] @ rho3 ,([73_x,75_x] ,[75_x] ,[73_x,75_x] ,[70_x,73_x,74_x,75_x,78_x,79_x,80_x] ,[73_x,74_x,75_x] ,[75_x] ,[70_x,73_x,74_x,75_x,78_x,79_x,80_x]))} let {75_x :: [Ent @ rho1] @ rho3} 75_x = : 74_x {(Ent @ rho1,)} 73_x {([Ent @ rho1] @ rho3 ,)} @ 3_r {([Ent @ rho1] @ rho3,)} in 75_x {([Ent @ rho1] @ rho3,)} [] {([Ent @ rho1] @ rho2,)} -> {([Ent @ rho1] @ rho3,([71_x],[71_x],[71_x],[71_x],[71_x],[71_x],[71_x]))} let {71_x :: [Ent @ rho1] @ rho3} 71_x = [] @ 3_r {([Ent @ rho1] @ rho3,)} in {([Ent @ rho1] @ rho3 ,([71_x,72_x] ,[72_x] ,[71_x,72_x] ,[71_x,72_x,77_x] ,[71_x,72_x,77_x] ,[72_x] ,[70_x,71_x,72_x,77_x]))} let {72_x :: [Ent @ rho1] @ rho3} 72_x = : 77_x {(Ent @ rho1,)} 71_x {([Ent @ rho1] @ rho3 ,)} @ 3_r {([Ent @ rho1] @ rho3,)} in 72_x {([Ent @ rho1] @ rho3,)} [] {(error,)} -> 9999 {(Int,)} {pascal :: Int -> rho1 -> rho2 -> [Ent @ rho1] @ rho2} pascal 81_x {(Int,)} @ 1_r 2_r= {([Ent @ rho1] @ rho2,)} case 81_x {(Int,)} of 0 -> {([Ent @ rho1] @ rho2,([83_x],[83_x],[83_x],[83_x],[83_x],[83_x],[83_x]))} let {83_x :: Ent @ rho1} 83_x = E 1 {(Int,)} @ 1_r {(Ent @ rho1,)} in {([Ent @ rho1] @ rho2,([82_x],[82_x],[82_x],[82_x],[82_x],[82_x],[82_x]))} let {82_x :: [Ent @ rho1] @ rho2} 82_x = [] @ 2_r {([Ent @ rho1] @ rho2,)} in {([Ent @ rho1] @ rho2 ,([82_x,84_x] ,[84_x] ,[82_x,84_x] ,[82_x,83_x,84_x] ,[82_x,83_x,84_x] ,[84_x] ,[82_x,83_x,84_x]))} let {84_x :: [Ent @ rho1] @ rho2} 84_x = : 83_x {(Ent @ rho1,)} 82_x {([Ent @ rho1] @ rho2 ,)} @ 2_r {([Ent @ rho1] @ rho2,)} in 84_x {([Ent @ rho1] @ rho2,)} _ {(Int,)} -> {([Ent @ rho1] @ rho2,([86_x],[86_x],[86_x],[86_x],[86_x],[86_x],[86_x]))} let {86_x :: Ent @ rho1} 86_x = E 1 {(Int,)} @ 1_r {(Ent @ rho1,)} in {([Ent @ rho1] @ rho2,([85_x],[85_x],[85_x],[85_x],[85_x],[85_x],[85_x]))} let {85_x :: [Ent @ rho1] @ rho2} 85_x = {([Ent @ rho1] @ rho2,([88_x],[88_x],[88_x],[88_x],[88_x],[88_x],[88_x]))} let {88_x :: [Ent @ rho_self] @ rho_self} 88_x = {([Ent @ rho_self] @ rho_self ,([89_x],[89_x],[89_x],[89_x],[89_x],[89_x],[89_x]))} let {89_x :: Int} 89_x = - 81_x {(Int ,([81_x,_] ,[81_x,_] ,[81_x,_] ,[81_x,_] ,[81_x,_] ,[81_x,_] ,[81_x,_]))} 1 {(Int,)} {(Int,)} in pascal 89_x {(Int ,([89_x] ,[89_x] ,[89_x] ,[89_x] ,[89_x] ,[89_x] ,[89_x]))} @ self self {([Ent @ rho_self] @ rho_self,)} in sumList 88_x {([Ent @ rho_self] @ rho_self ,([88_x],[88_x],[88_x],[88_x],[88_x],[88_x],[88_x]))} @ 1_r 2_r {([Ent @ rho1] @ rho2,)} in {([Ent @ rho1] @ rho2 ,([85_x,87_x] ,[87_x] ,[85_x,87_x] ,[85_x,86_x,87_x] ,[85_x,86_x,87_x] ,[87_x] ,[85_x,86_x,87_x]))} let {87_x :: [Ent @ rho1] @ rho2} 87_x = : 86_x {(Ent @ rho1,)} 85_x {([Ent @ rho1] @ rho2 ,)} @ 2_r {([Ent @ rho1] @ rho2,)} in 87_x {([Ent @ rho1] @ rho2,)} {g :: [Int] @ rho1 -> [Int] @ rho2 -> rho1 -> rho2 -> Int} g 90_x {([Int] @ rho1,)} 91_x {([Int] @ rho2,)} @ 1_r 2_r= {(Int,([32_z,90_x],[32_z],[32_z,90_x],[32_z,90_x],[32_z,90_x],[32_z],[32_z,90_x]))} let {32_z :: [Int] @ rho1} 32_z = : 1 {(Int,)} 90_x {([Int] @ rho1,)} @ 1_r {([Int] @ rho1,)} in 0 {(Int,)} {h :: [Int] @ rho1 -> [Int] @ rho1 -> rho1 -> [Int] @ rho1} h 92_x {([Int] @ rho1,)} 93_x {([Int] @ rho1,)} @ 1_r= {([Int] @ rho1,([93_x,94_x],[94_x],[93_x,94_x],[93_x,94_x],[93_x,94_x],[94_x],[93_x,94_x]))} let {94_x :: [Int] @ rho1} 94_x = : 0 {(Int,)} 93_x {([Int] @ rho1,)} @ 1_r {([Int] @ rho1,)} in 94_x {([Int] @ rho1,)} + 2 {(Int,)} 3 {(Int,)} {(a,)}