/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.hs /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.hs # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty H-Termination with start terms of the given HASKELL could be proven: (0) HASKELL (1) LR [EQUIVALENT, 0 ms] (2) HASKELL (3) CR [EQUIVALENT, 0 ms] (4) HASKELL (5) IFR [EQUIVALENT, 0 ms] (6) HASKELL (7) BR [EQUIVALENT, 0 ms] (8) HASKELL (9) COR [EQUIVALENT, 11 ms] (10) HASKELL (11) NumRed [SOUND, 0 ms] (12) HASKELL (13) Narrow [SOUND, 0 ms] (14) AND (15) QDP (16) TransformationProof [EQUIVALENT, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] (22) YES ---------------------------------------- (0) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : _) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (\vv1 ->case vv1 of { (x,i)-> if p x then i : [] else []; _-> []; } ) (zip xs (enumFrom 0)); } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (1) LR (EQUIVALENT) Lambda Reductions: The following Lambda expression "\ab->(a,b)" is transformed to "zip0 a b = (a,b); " The following Lambda expression "\vv1->case vv1 of { (x,i) -> if p x then i : [] else []; _ -> []} " is transformed to "findIndices0 p vv1 = case vv1 of { (x,i) -> if p x then i : [] else []; _ -> []} ; " ---------------------------------------- (2) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : _) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom 0)); findIndices0 p vv1 = case vv1 of { (x,i)-> if p x then i : [] else []; _-> []; } ; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (3) CR (EQUIVALENT) Case Reductions: The following Case expression "case vv1 of { (x,i) -> if p x then i : [] else []; _ -> []} " is transformed to "findIndices00 p (x,i) = if p x then i : [] else []; findIndices00 p _ = []; " ---------------------------------------- (4) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : _) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom 0)); findIndices0 p vv1 = findIndices00 p vv1; findIndices00 p (x,i) = if p x then i : [] else []; findIndices00 p _ = []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (5) IFR (EQUIVALENT) If Reductions: The following If expression "if p x then i : [] else []" is transformed to "findIndices000 i True = i : []; findIndices000 i False = []; " ---------------------------------------- (6) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : _) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom 0)); findIndices0 p vv1 = findIndices00 p vv1; findIndices00 p (x,i) = findIndices000 i (p x); findIndices00 p _ = []; findIndices000 i True = i : []; findIndices000 i False = []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (7) BR (EQUIVALENT) Replaced joker patterns by fresh variables and removed binding patterns. ---------------------------------------- (8) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : wv) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom 0)); findIndices0 p vv1 = findIndices00 p vv1; findIndices00 p (x,i) = findIndices000 i (p x); findIndices00 p ww = []; findIndices000 i True = i : []; findIndices000 i False = []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (9) COR (EQUIVALENT) Cond Reductions: The following Function with conditions "undefined |Falseundefined; " is transformed to "undefined = undefined1; " "undefined0 True = undefined; " "undefined1 = undefined0 False; " ---------------------------------------- (10) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : wv) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom 0)); findIndices0 p vv1 = findIndices00 p vv1; findIndices00 p (x,i) = findIndices000 i (p x); findIndices00 p ww = []; findIndices000 i True = i : []; findIndices000 i False = []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (11) NumRed (SOUND) Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. ---------------------------------------- (12) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a : wv) = Just a; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; elemIndex :: Eq a => a -> [a] -> Maybe Int; elemIndex x = findIndex (== x); findIndex :: (a -> Bool) -> [a] -> Maybe Int; findIndex p = Maybe.listToMaybe . findIndices p; findIndices :: (a -> Bool) -> [a] -> [Int]; findIndices p xs = concatMap (findIndices0 p) (zip xs (enumFrom (Pos Zero))); findIndices0 p vv1 = findIndices00 p vv1; findIndices00 p (x,i) = findIndices000 i (p x); findIndices00 p ww = []; findIndices000 i True = i : []; findIndices000 i False = []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (13) Narrow (SOUND) Haskell To QDPs digraph dp_graph { node [outthreshold=100, inthreshold=100];1[label="List.elemIndex",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 3[label="List.elemIndex wx3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 4[label="List.elemIndex wx3 wx4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 5[label="List.findIndex (wx3 ==) wx4",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 6[label="Maybe.listToMaybe . List.findIndices (wx3 ==)",fontsize=16,color="black",shape="box"];6 -> 7[label="",style="solid", color="black", weight=3]; 7[label="Maybe.listToMaybe (List.findIndices (wx3 ==) wx4)",fontsize=16,color="black",shape="box"];7 -> 8[label="",style="solid", color="black", weight=3]; 8[label="Maybe.listToMaybe (concatMap (List.findIndices0 (wx3 ==)) (zip wx4 (enumFrom (Pos Zero))))",fontsize=16,color="black",shape="box"];8 -> 9[label="",style="solid", color="black", weight=3]; 9[label="Maybe.listToMaybe (concat . map (List.findIndices0 (wx3 ==)))",fontsize=16,color="black",shape="box"];9 -> 10[label="",style="solid", color="black", weight=3]; 10[label="Maybe.listToMaybe (concat (map (List.findIndices0 (wx3 ==)) (zip wx4 (enumFrom (Pos Zero)))))",fontsize=16,color="black",shape="box"];10 -> 11[label="",style="solid", color="black", weight=3]; 11[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zip wx4 (enumFrom (Pos Zero)))))",fontsize=16,color="black",shape="box"];11 -> 12[label="",style="solid", color="black", weight=3]; 12[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx4 (enumFrom (Pos Zero)))))",fontsize=16,color="burlywood",shape="box"];234[label="wx4/wx40 : wx41",fontsize=10,color="white",style="solid",shape="box"];12 -> 234[label="",style="solid", color="burlywood", weight=9]; 234 -> 13[label="",style="solid", color="burlywood", weight=3]; 235[label="wx4/[]",fontsize=10,color="white",style="solid",shape="box"];12 -> 235[label="",style="solid", color="burlywood", weight=9]; 235 -> 14[label="",style="solid", color="burlywood", weight=3]; 13[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 (wx40 : wx41) (enumFrom (Pos Zero)))))",fontsize=16,color="black",shape="box"];13 -> 15[label="",style="solid", color="black", weight=3]; 14[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 [] (enumFrom (Pos Zero)))))",fontsize=16,color="black",shape="box"];14 -> 16[label="",style="solid", color="black", weight=3]; 15[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 (wx40 : wx41) (numericEnumFrom (Pos Zero)))))",fontsize=16,color="black",shape="box"];15 -> 17[label="",style="solid", color="black", weight=3]; 16[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) []))",fontsize=16,color="black",shape="triangle"];16 -> 18[label="",style="solid", color="black", weight=3]; 17[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 (wx40 : wx41) (Pos Zero : (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];17 -> 19[label="",style="solid", color="black", weight=3]; 18[label="Maybe.listToMaybe (foldr (++) [] [])",fontsize=16,color="black",shape="box"];18 -> 20[label="",style="solid", color="black", weight=3]; 19[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zip0 wx40 (Pos Zero) : zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];19 -> 21[label="",style="solid", color="black", weight=3]; 20[label="Maybe.listToMaybe []",fontsize=16,color="black",shape="box"];20 -> 22[label="",style="solid", color="black", weight=3]; 21[label="Maybe.listToMaybe (foldr (++) [] (List.findIndices0 (wx3 ==) (zip0 wx40 (Pos Zero)) : map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];21 -> 23[label="",style="solid", color="black", weight=3]; 22[label="Nothing",fontsize=16,color="green",shape="box"];23[label="Maybe.listToMaybe ((++) List.findIndices0 (wx3 ==) (zip0 wx40 (Pos Zero)) foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];23 -> 24[label="",style="solid", color="black", weight=3]; 24[label="Maybe.listToMaybe ((++) List.findIndices00 (wx3 ==) (zip0 wx40 (Pos Zero)) foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];24 -> 25[label="",style="solid", color="black", weight=3]; 25[label="Maybe.listToMaybe ((++) List.findIndices00 (wx3 ==) (wx40,Pos Zero) foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];25 -> 26[label="",style="solid", color="black", weight=3]; 26[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (wx3 == wx40) foldr (++) [] (map (List.findIndices0 (wx3 ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];236[label="wx3/False",fontsize=10,color="white",style="solid",shape="box"];26 -> 236[label="",style="solid", color="burlywood", weight=9]; 236 -> 27[label="",style="solid", color="burlywood", weight=3]; 237[label="wx3/True",fontsize=10,color="white",style="solid",shape="box"];26 -> 237[label="",style="solid", color="burlywood", weight=9]; 237 -> 28[label="",style="solid", color="burlywood", weight=3]; 27[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (False == wx40) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];238[label="wx40/False",fontsize=10,color="white",style="solid",shape="box"];27 -> 238[label="",style="solid", color="burlywood", weight=9]; 238 -> 29[label="",style="solid", color="burlywood", weight=3]; 239[label="wx40/True",fontsize=10,color="white",style="solid",shape="box"];27 -> 239[label="",style="solid", color="burlywood", weight=9]; 239 -> 30[label="",style="solid", color="burlywood", weight=3]; 28[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (True == wx40) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];240[label="wx40/False",fontsize=10,color="white",style="solid",shape="box"];28 -> 240[label="",style="solid", color="burlywood", weight=9]; 240 -> 31[label="",style="solid", color="burlywood", weight=3]; 241[label="wx40/True",fontsize=10,color="white",style="solid",shape="box"];28 -> 241[label="",style="solid", color="burlywood", weight=9]; 241 -> 32[label="",style="solid", color="burlywood", weight=3]; 29[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (False == False) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];29 -> 33[label="",style="solid", color="black", weight=3]; 30[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (False == True) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];30 -> 34[label="",style="solid", color="black", weight=3]; 31[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (True == False) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];31 -> 35[label="",style="solid", color="black", weight=3]; 32[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) (True == True) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];32 -> 36[label="",style="solid", color="black", weight=3]; 33[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) True foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 34[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) False foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];34 -> 38[label="",style="solid", color="black", weight=3]; 35[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) False foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];35 -> 39[label="",style="solid", color="black", weight=3]; 36[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos Zero) True foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];36 -> 40[label="",style="solid", color="black", weight=3]; 37[label="Maybe.listToMaybe ((++) (Pos Zero : []) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];37 -> 41[label="",style="solid", color="black", weight=3]; 38[label="Maybe.listToMaybe ((++) [] foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];38 -> 42[label="",style="solid", color="black", weight=3]; 39[label="Maybe.listToMaybe ((++) [] foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];39 -> 43[label="",style="solid", color="black", weight=3]; 40[label="Maybe.listToMaybe ((++) (Pos Zero : []) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];40 -> 44[label="",style="solid", color="black", weight=3]; 41[label="Maybe.listToMaybe (Pos Zero : [] ++ foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];41 -> 45[label="",style="solid", color="black", weight=3]; 42[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];242[label="wx41/wx410 : wx411",fontsize=10,color="white",style="solid",shape="box"];42 -> 242[label="",style="solid", color="burlywood", weight=9]; 242 -> 46[label="",style="solid", color="burlywood", weight=3]; 243[label="wx41/[]",fontsize=10,color="white",style="solid",shape="box"];42 -> 243[label="",style="solid", color="burlywood", weight=9]; 243 -> 47[label="",style="solid", color="burlywood", weight=3]; 43[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];244[label="wx41/wx410 : wx411",fontsize=10,color="white",style="solid",shape="box"];43 -> 244[label="",style="solid", color="burlywood", weight=9]; 244 -> 48[label="",style="solid", color="burlywood", weight=3]; 245[label="wx41/[]",fontsize=10,color="white",style="solid",shape="box"];43 -> 245[label="",style="solid", color="burlywood", weight=9]; 245 -> 49[label="",style="solid", color="burlywood", weight=3]; 44[label="Maybe.listToMaybe (Pos Zero : [] ++ foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41 (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];44 -> 50[label="",style="solid", color="black", weight=3]; 45[label="Just (Pos Zero)",fontsize=16,color="green",shape="box"];46[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx410 : wx411) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];46 -> 51[label="",style="solid", color="black", weight=3]; 47[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 [] (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];47 -> 52[label="",style="solid", color="black", weight=3]; 48[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx410 : wx411) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];48 -> 53[label="",style="solid", color="black", weight=3]; 49[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 [] (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];49 -> 54[label="",style="solid", color="black", weight=3]; 50[label="Just (Pos Zero)",fontsize=16,color="green",shape="box"];51 -> 110[label="",style="dashed", color="red", weight=0]; 51[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx410 : wx411) (Pos Zero + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos Zero + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="magenta"];51 -> 111[label="",style="dashed", color="magenta", weight=3]; 51 -> 112[label="",style="dashed", color="magenta", weight=3]; 51 -> 113[label="",style="dashed", color="magenta", weight=3]; 51 -> 114[label="",style="dashed", color="magenta", weight=3]; 52 -> 16[label="",style="dashed", color="red", weight=0]; 52[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) []))",fontsize=16,color="magenta"];52 -> 56[label="",style="dashed", color="magenta", weight=3]; 53 -> 185[label="",style="dashed", color="red", weight=0]; 53[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx410 : wx411) (Pos Zero + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos Zero + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="magenta"];53 -> 186[label="",style="dashed", color="magenta", weight=3]; 53 -> 187[label="",style="dashed", color="magenta", weight=3]; 53 -> 188[label="",style="dashed", color="magenta", weight=3]; 53 -> 189[label="",style="dashed", color="magenta", weight=3]; 54 -> 16[label="",style="dashed", color="red", weight=0]; 54[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) []))",fontsize=16,color="magenta"];54 -> 58[label="",style="dashed", color="magenta", weight=3]; 111[label="wx410",fontsize=16,color="green",shape="box"];112[label="Zero",fontsize=16,color="green",shape="box"];113[label="wx411",fontsize=16,color="green",shape="box"];114[label="Zero",fontsize=16,color="green",shape="box"];110[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (Pos wx5 + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos wx6 + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="triangle"];110 -> 117[label="",style="solid", color="black", weight=3]; 56[label="False",fontsize=16,color="green",shape="box"];186[label="Zero",fontsize=16,color="green",shape="box"];187[label="Zero",fontsize=16,color="green",shape="box"];188[label="wx410",fontsize=16,color="green",shape="box"];189[label="wx411",fontsize=16,color="green",shape="box"];185[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (Pos wx9 + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos wx10 + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="triangle"];185 -> 192[label="",style="solid", color="black", weight=3]; 58[label="True",fontsize=16,color="green",shape="box"];117[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (enforceWHNF (WHNF (Pos wx5 + fromInt (Pos (Succ Zero)))) (numericEnumFrom (Pos wx6 + fromInt (Pos (Succ Zero))))))))",fontsize=16,color="black",shape="box"];117 -> 121[label="",style="solid", color="black", weight=3]; 192[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (enforceWHNF (WHNF (Pos wx9 + fromInt (Pos (Succ Zero)))) (numericEnumFrom (Pos wx10 + fromInt (Pos (Succ Zero))))))))",fontsize=16,color="black",shape="box"];192 -> 195[label="",style="solid", color="black", weight=3]; 121[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (enforceWHNF (WHNF (primPlusInt (Pos wx5) (fromInt (Pos (Succ Zero))))) (numericEnumFrom (primPlusInt (Pos wx6) (fromInt (Pos (Succ Zero)))))))))",fontsize=16,color="black",shape="box"];121 -> 130[label="",style="solid", color="black", weight=3]; 195[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (enforceWHNF (WHNF (primPlusInt (Pos wx9) (fromInt (Pos (Succ Zero))))) (numericEnumFrom (primPlusInt (Pos wx10) (fromInt (Pos (Succ Zero)))))))))",fontsize=16,color="black",shape="box"];195 -> 197[label="",style="solid", color="black", weight=3]; 130[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (enforceWHNF (WHNF (primPlusInt (Pos wx5) (Pos (Succ Zero)))) (numericEnumFrom (primPlusInt (Pos wx6) (Pos (Succ Zero))))))))",fontsize=16,color="black",shape="box"];130 -> 132[label="",style="solid", color="black", weight=3]; 197[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (enforceWHNF (WHNF (primPlusInt (Pos wx9) (Pos (Succ Zero)))) (numericEnumFrom (primPlusInt (Pos wx10) (Pos (Succ Zero))))))))",fontsize=16,color="black",shape="box"];197 -> 200[label="",style="solid", color="black", weight=3]; 132[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (enforceWHNF (WHNF (Pos (primPlusNat wx5 (Succ Zero)))) (numericEnumFrom (Pos (primPlusNat wx5 (Succ Zero))))))))",fontsize=16,color="black",shape="box"];132 -> 134[label="",style="solid", color="black", weight=3]; 200 -> 203[label="",style="dashed", color="red", weight=0]; 200[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (enforceWHNF (WHNF (Pos (primPlusNat wx9 (Succ Zero)))) (numericEnumFrom (Pos (primPlusNat wx9 (Succ Zero))))))))",fontsize=16,color="magenta"];200 -> 204[label="",style="dashed", color="magenta", weight=3]; 200 -> 205[label="",style="dashed", color="magenta", weight=3]; 134[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (numericEnumFrom (Pos (primPlusNat wx5 (Succ Zero)))))))",fontsize=16,color="black",shape="box"];134 -> 136[label="",style="solid", color="black", weight=3]; 204 -> 172[label="",style="dashed", color="red", weight=0]; 204[label="primPlusNat wx9 (Succ Zero)",fontsize=16,color="magenta"];204 -> 206[label="",style="dashed", color="magenta", weight=3]; 205 -> 172[label="",style="dashed", color="red", weight=0]; 205[label="primPlusNat wx9 (Succ Zero)",fontsize=16,color="magenta"];205 -> 207[label="",style="dashed", color="magenta", weight=3]; 203[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (enforceWHNF (WHNF (Pos wx12)) (numericEnumFrom (Pos wx11))))))",fontsize=16,color="black",shape="triangle"];203 -> 208[label="",style="solid", color="black", weight=3]; 136[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx4110 : wx4111) (Pos (primPlusNat wx5 (Succ Zero)) : (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];136 -> 138[label="",style="solid", color="black", weight=3]; 206[label="wx9",fontsize=16,color="green",shape="box"];172[label="primPlusNat wx5 (Succ Zero)",fontsize=16,color="burlywood",shape="triangle"];246[label="wx5/Succ wx50",fontsize=10,color="white",style="solid",shape="box"];172 -> 246[label="",style="solid", color="burlywood", weight=9]; 246 -> 178[label="",style="solid", color="burlywood", weight=3]; 247[label="wx5/Zero",fontsize=10,color="white",style="solid",shape="box"];172 -> 247[label="",style="solid", color="burlywood", weight=9]; 247 -> 179[label="",style="solid", color="burlywood", weight=3]; 207[label="wx9",fontsize=16,color="green",shape="box"];208[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (numericEnumFrom (Pos wx11)))))",fontsize=16,color="black",shape="box"];208 -> 209[label="",style="solid", color="black", weight=3]; 138[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zip0 wx4110 (Pos (primPlusNat wx5 (Succ Zero))) : zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];138 -> 140[label="",style="solid", color="black", weight=3]; 178[label="primPlusNat (Succ wx50) (Succ Zero)",fontsize=16,color="black",shape="box"];178 -> 193[label="",style="solid", color="black", weight=3]; 179[label="primPlusNat Zero (Succ Zero)",fontsize=16,color="black",shape="box"];179 -> 194[label="",style="solid", color="black", weight=3]; 209[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx41110 : wx41111) (Pos wx11 : (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];209 -> 210[label="",style="solid", color="black", weight=3]; 140[label="Maybe.listToMaybe (foldr (++) [] (List.findIndices0 (False ==) (zip0 wx4110 (Pos (primPlusNat wx5 (Succ Zero)))) : map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];140 -> 142[label="",style="solid", color="black", weight=3]; 193[label="Succ (Succ (primPlusNat wx50 Zero))",fontsize=16,color="green",shape="box"];193 -> 196[label="",style="dashed", color="green", weight=3]; 194[label="Succ Zero",fontsize=16,color="green",shape="box"];210[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zip0 wx41110 (Pos wx11) : zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];210 -> 211[label="",style="solid", color="black", weight=3]; 142[label="Maybe.listToMaybe ((++) List.findIndices0 (False ==) (zip0 wx4110 (Pos (primPlusNat wx5 (Succ Zero)))) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];142 -> 144[label="",style="solid", color="black", weight=3]; 196[label="primPlusNat wx50 Zero",fontsize=16,color="burlywood",shape="box"];248[label="wx50/Succ wx500",fontsize=10,color="white",style="solid",shape="box"];196 -> 248[label="",style="solid", color="burlywood", weight=9]; 248 -> 198[label="",style="solid", color="burlywood", weight=3]; 249[label="wx50/Zero",fontsize=10,color="white",style="solid",shape="box"];196 -> 249[label="",style="solid", color="burlywood", weight=9]; 249 -> 199[label="",style="solid", color="burlywood", weight=3]; 211[label="Maybe.listToMaybe (foldr (++) [] (List.findIndices0 (True ==) (zip0 wx41110 (Pos wx11)) : map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];211 -> 212[label="",style="solid", color="black", weight=3]; 144[label="Maybe.listToMaybe ((++) List.findIndices00 (False ==) (zip0 wx4110 (Pos (primPlusNat wx5 (Succ Zero)))) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];144 -> 146[label="",style="solid", color="black", weight=3]; 198[label="primPlusNat (Succ wx500) Zero",fontsize=16,color="black",shape="box"];198 -> 201[label="",style="solid", color="black", weight=3]; 199[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];199 -> 202[label="",style="solid", color="black", weight=3]; 212[label="Maybe.listToMaybe ((++) List.findIndices0 (True ==) (zip0 wx41110 (Pos wx11)) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];212 -> 213[label="",style="solid", color="black", weight=3]; 146[label="Maybe.listToMaybe ((++) List.findIndices00 (False ==) (wx4110,Pos (primPlusNat wx5 (Succ Zero))) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];146 -> 148[label="",style="solid", color="black", weight=3]; 201[label="Succ wx500",fontsize=16,color="green",shape="box"];202[label="Zero",fontsize=16,color="green",shape="box"];213[label="Maybe.listToMaybe ((++) List.findIndices00 (True ==) (zip0 wx41110 (Pos wx11)) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];213 -> 214[label="",style="solid", color="black", weight=3]; 148[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos (primPlusNat wx5 (Succ Zero))) (False == wx4110) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];250[label="wx4110/False",fontsize=10,color="white",style="solid",shape="box"];148 -> 250[label="",style="solid", color="burlywood", weight=9]; 250 -> 150[label="",style="solid", color="burlywood", weight=3]; 251[label="wx4110/True",fontsize=10,color="white",style="solid",shape="box"];148 -> 251[label="",style="solid", color="burlywood", weight=9]; 251 -> 151[label="",style="solid", color="burlywood", weight=3]; 214[label="Maybe.listToMaybe ((++) List.findIndices00 (True ==) (wx41110,Pos wx11) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];214 -> 215[label="",style="solid", color="black", weight=3]; 150[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos (primPlusNat wx5 (Succ Zero))) (False == False) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];150 -> 154[label="",style="solid", color="black", weight=3]; 151[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos (primPlusNat wx5 (Succ Zero))) (False == True) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];151 -> 155[label="",style="solid", color="black", weight=3]; 215[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos wx11) (True == wx41110) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];252[label="wx41110/False",fontsize=10,color="white",style="solid",shape="box"];215 -> 252[label="",style="solid", color="burlywood", weight=9]; 252 -> 216[label="",style="solid", color="burlywood", weight=3]; 253[label="wx41110/True",fontsize=10,color="white",style="solid",shape="box"];215 -> 253[label="",style="solid", color="burlywood", weight=9]; 253 -> 217[label="",style="solid", color="burlywood", weight=3]; 154[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos (primPlusNat wx5 (Succ Zero))) True foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];154 -> 158[label="",style="solid", color="black", weight=3]; 155[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos (primPlusNat wx5 (Succ Zero))) False foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];155 -> 159[label="",style="solid", color="black", weight=3]; 216[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos wx11) (True == False) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];216 -> 218[label="",style="solid", color="black", weight=3]; 217[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos wx11) (True == True) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];217 -> 219[label="",style="solid", color="black", weight=3]; 158[label="Maybe.listToMaybe ((++) (Pos (primPlusNat wx5 (Succ Zero)) : []) foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];158 -> 162[label="",style="solid", color="black", weight=3]; 159[label="Maybe.listToMaybe ((++) [] foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];159 -> 163[label="",style="solid", color="black", weight=3]; 218[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos wx11) False foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];218 -> 220[label="",style="solid", color="black", weight=3]; 219[label="Maybe.listToMaybe ((++) List.findIndices000 (Pos wx11) True foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];219 -> 221[label="",style="solid", color="black", weight=3]; 162[label="Maybe.listToMaybe (Pos (primPlusNat wx5 (Succ Zero)) : [] ++ foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];162 -> 166[label="",style="solid", color="black", weight=3]; 163[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 wx4111 (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];254[label="wx4111/wx41110 : wx41111",fontsize=10,color="white",style="solid",shape="box"];163 -> 254[label="",style="solid", color="burlywood", weight=9]; 254 -> 167[label="",style="solid", color="burlywood", weight=3]; 255[label="wx4111/[]",fontsize=10,color="white",style="solid",shape="box"];163 -> 255[label="",style="solid", color="burlywood", weight=9]; 255 -> 168[label="",style="solid", color="burlywood", weight=3]; 220[label="Maybe.listToMaybe ((++) [] foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];220 -> 222[label="",style="solid", color="black", weight=3]; 221[label="Maybe.listToMaybe ((++) (Pos wx11 : []) foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];221 -> 223[label="",style="solid", color="black", weight=3]; 166[label="Just (Pos (primPlusNat wx5 (Succ Zero)))",fontsize=16,color="green",shape="box"];166 -> 172[label="",style="dashed", color="green", weight=3]; 167[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx41110 : wx41111) (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];167 -> 173[label="",style="solid", color="black", weight=3]; 168[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 [] (numericEnumFrom $! Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];168 -> 174[label="",style="solid", color="black", weight=3]; 222[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="burlywood",shape="box"];256[label="wx41111/wx411110 : wx411111",fontsize=10,color="white",style="solid",shape="box"];222 -> 256[label="",style="solid", color="burlywood", weight=9]; 256 -> 224[label="",style="solid", color="burlywood", weight=3]; 257[label="wx41111/[]",fontsize=10,color="white",style="solid",shape="box"];222 -> 257[label="",style="solid", color="burlywood", weight=9]; 257 -> 225[label="",style="solid", color="burlywood", weight=3]; 223[label="Maybe.listToMaybe (Pos wx11 : [] ++ foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 wx41111 (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];223 -> 226[label="",style="solid", color="black", weight=3]; 173 -> 110[label="",style="dashed", color="red", weight=0]; 173[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) (zipWith zip0 (wx41110 : wx41111) (Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos (primPlusNat wx5 (Succ Zero)) + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="magenta"];173 -> 180[label="",style="dashed", color="magenta", weight=3]; 173 -> 181[label="",style="dashed", color="magenta", weight=3]; 173 -> 182[label="",style="dashed", color="magenta", weight=3]; 173 -> 183[label="",style="dashed", color="magenta", weight=3]; 174 -> 16[label="",style="dashed", color="red", weight=0]; 174[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (False ==)) []))",fontsize=16,color="magenta"];174 -> 184[label="",style="dashed", color="magenta", weight=3]; 224[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx411110 : wx411111) (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];224 -> 227[label="",style="solid", color="black", weight=3]; 225[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 [] (numericEnumFrom $! Pos wx11 + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];225 -> 228[label="",style="solid", color="black", weight=3]; 226[label="Just (Pos wx11)",fontsize=16,color="green",shape="box"];180[label="wx41110",fontsize=16,color="green",shape="box"];181 -> 172[label="",style="dashed", color="red", weight=0]; 181[label="primPlusNat wx5 (Succ Zero)",fontsize=16,color="magenta"];182[label="wx41111",fontsize=16,color="green",shape="box"];183 -> 172[label="",style="dashed", color="red", weight=0]; 183[label="primPlusNat wx5 (Succ Zero)",fontsize=16,color="magenta"];184[label="False",fontsize=16,color="green",shape="box"];227 -> 185[label="",style="dashed", color="red", weight=0]; 227[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) (zipWith zip0 (wx411110 : wx411111) (Pos wx11 + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos wx11 + fromInt (Pos (Succ Zero)))))))",fontsize=16,color="magenta"];227 -> 229[label="",style="dashed", color="magenta", weight=3]; 227 -> 230[label="",style="dashed", color="magenta", weight=3]; 227 -> 231[label="",style="dashed", color="magenta", weight=3]; 227 -> 232[label="",style="dashed", color="magenta", weight=3]; 228 -> 16[label="",style="dashed", color="red", weight=0]; 228[label="Maybe.listToMaybe (foldr (++) [] (map (List.findIndices0 (True ==)) []))",fontsize=16,color="magenta"];228 -> 233[label="",style="dashed", color="magenta", weight=3]; 229[label="wx11",fontsize=16,color="green",shape="box"];230[label="wx11",fontsize=16,color="green",shape="box"];231[label="wx411110",fontsize=16,color="green",shape="box"];232[label="wx411111",fontsize=16,color="green",shape="box"];233[label="True",fontsize=16,color="green",shape="box"];} ---------------------------------------- (14) Complex Obligation (AND) ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: new_listToMaybe(False, :(wx411110, wx411111), wx12, wx11) -> new_listToMaybe0(wx411110, wx411111, wx11, wx11) new_listToMaybe0(wx41110, wx41111, wx9, wx10) -> new_listToMaybe(wx41110, wx41111, new_primPlusNat(wx9), new_primPlusNat(wx9)) The TRS R consists of the following rules: new_primPlusNat(Succ(wx50)) -> Succ(Succ(new_primPlusNat0(wx50))) new_primPlusNat(Zero) -> Succ(Zero) new_primPlusNat0(Succ(wx500)) -> Succ(wx500) new_primPlusNat0(Zero) -> Zero The set Q consists of the following terms: new_primPlusNat0(Succ(x0)) new_primPlusNat0(Zero) new_primPlusNat(Succ(x0)) new_primPlusNat(Zero) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule new_listToMaybe0(wx41110, wx41111, wx9, wx10) -> new_listToMaybe(wx41110, wx41111, new_primPlusNat(wx9), new_primPlusNat(wx9)) we obtained the following new rules [LPAR04]: (new_listToMaybe0(z0, z1, z3, z3) -> new_listToMaybe(z0, z1, new_primPlusNat(z3), new_primPlusNat(z3)),new_listToMaybe0(z0, z1, z3, z3) -> new_listToMaybe(z0, z1, new_primPlusNat(z3), new_primPlusNat(z3))) ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: new_listToMaybe(False, :(wx411110, wx411111), wx12, wx11) -> new_listToMaybe0(wx411110, wx411111, wx11, wx11) new_listToMaybe0(z0, z1, z3, z3) -> new_listToMaybe(z0, z1, new_primPlusNat(z3), new_primPlusNat(z3)) The TRS R consists of the following rules: new_primPlusNat(Succ(wx50)) -> Succ(Succ(new_primPlusNat0(wx50))) new_primPlusNat(Zero) -> Succ(Zero) new_primPlusNat0(Succ(wx500)) -> Succ(wx500) new_primPlusNat0(Zero) -> Zero The set Q consists of the following terms: new_primPlusNat0(Succ(x0)) new_primPlusNat0(Zero) new_primPlusNat(Succ(x0)) new_primPlusNat(Zero) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_listToMaybe0(z0, z1, z3, z3) -> new_listToMaybe(z0, z1, new_primPlusNat(z3), new_primPlusNat(z3)) The graph contains the following edges 1 >= 1, 2 >= 2 *new_listToMaybe(False, :(wx411110, wx411111), wx12, wx11) -> new_listToMaybe0(wx411110, wx411111, wx11, wx11) The graph contains the following edges 2 > 1, 2 > 2, 4 >= 3, 4 >= 4 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: new_listToMaybe1(True, :(wx41110, wx41111), wx5, wx6) -> new_listToMaybe1(wx41110, wx41111, new_primPlusNat(wx5), new_primPlusNat(wx5)) The TRS R consists of the following rules: new_primPlusNat(Succ(wx50)) -> Succ(Succ(new_primPlusNat0(wx50))) new_primPlusNat(Zero) -> Succ(Zero) new_primPlusNat0(Succ(wx500)) -> Succ(wx500) new_primPlusNat0(Zero) -> Zero The set Q consists of the following terms: new_primPlusNat0(Succ(x0)) new_primPlusNat0(Zero) new_primPlusNat(Succ(x0)) new_primPlusNat(Zero) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_listToMaybe1(True, :(wx41110, wx41111), wx5, wx6) -> new_listToMaybe1(wx41110, wx41111, new_primPlusNat(wx5), new_primPlusNat(wx5)) The graph contains the following edges 2 > 1, 2 > 2 ---------------------------------------- (22) YES