9.45/3.98 MAYBE 11.72/4.59 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 11.72/4.59 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 11.72/4.59 11.72/4.59 11.72/4.59 H-Termination with start terms of the given HASKELL could not be shown: 11.72/4.59 11.72/4.59 (0) HASKELL 11.72/4.59 (1) LR [EQUIVALENT, 0 ms] 11.72/4.59 (2) HASKELL 11.72/4.59 (3) BR [EQUIVALENT, 0 ms] 11.72/4.59 (4) HASKELL 11.72/4.59 (5) COR [EQUIVALENT, 0 ms] 11.72/4.59 (6) HASKELL 11.72/4.59 (7) Narrow [SOUND, 0 ms] 11.72/4.59 (8) AND 11.72/4.59 (9) QDP 11.72/4.59 (10) MRRProof [EQUIVALENT, 26 ms] 11.72/4.59 (11) QDP 11.72/4.59 (12) NonTerminationLoopProof [COMPLETE, 0 ms] 11.72/4.59 (13) NO 11.72/4.59 (14) QDP 11.72/4.59 (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.72/4.59 (16) YES 11.72/4.59 (17) Narrow [COMPLETE, 0 ms] 11.72/4.59 (18) TRUE 11.72/4.59 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (0) 11.72/4.59 Obligation: 11.72/4.59 mainModule Main 11.72/4.59 module Maybe where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Main where { 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Monad where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Prelude; 11.72/4.59 foldM :: Monad b => (a -> c -> b a) -> a -> [c] -> b a; 11.72/4.59 foldM _ a [] = return a; 11.72/4.59 foldM f a (x : xs) = f a x >>= (\fax ->foldM f fax xs); 11.72/4.59 11.72/4.59 } 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (1) LR (EQUIVALENT) 11.72/4.59 Lambda Reductions: 11.72/4.59 The following Lambda expression 11.72/4.59 "\fax->foldM f fax xs" 11.72/4.59 is transformed to 11.72/4.59 "foldM0 f xs fax = foldM f fax xs; 11.72/4.59 " 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (2) 11.72/4.59 Obligation: 11.72/4.59 mainModule Main 11.72/4.59 module Maybe where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Main where { 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Monad where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Prelude; 11.72/4.59 foldM :: Monad b => (a -> c -> b a) -> a -> [c] -> b a; 11.72/4.59 foldM _ a [] = return a; 11.72/4.59 foldM f a (x : xs) = f a x >>= foldM0 f xs; 11.72/4.59 11.72/4.59 foldM0 f xs fax = foldM f fax xs; 11.72/4.59 11.72/4.59 } 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (3) BR (EQUIVALENT) 11.72/4.59 Replaced joker patterns by fresh variables and removed binding patterns. 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (4) 11.72/4.59 Obligation: 11.72/4.59 mainModule Main 11.72/4.59 module Maybe where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Main where { 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Monad where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Prelude; 11.72/4.59 foldM :: Monad a => (c -> b -> a c) -> c -> [b] -> a c; 11.72/4.59 foldM vy a [] = return a; 11.72/4.59 foldM f a (x : xs) = f a x >>= foldM0 f xs; 11.72/4.59 11.72/4.59 foldM0 f xs fax = foldM f fax xs; 11.72/4.59 11.72/4.59 } 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (5) COR (EQUIVALENT) 11.72/4.59 Cond Reductions: 11.72/4.59 The following Function with conditions 11.72/4.59 "undefined |Falseundefined; 11.72/4.59 " 11.72/4.59 is transformed to 11.72/4.59 "undefined = undefined1; 11.72/4.59 " 11.72/4.59 "undefined0 True = undefined; 11.72/4.59 " 11.72/4.59 "undefined1 = undefined0 False; 11.72/4.59 " 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (6) 11.72/4.59 Obligation: 11.72/4.59 mainModule Main 11.72/4.59 module Maybe where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Main where { 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Monad; 11.72/4.59 import qualified Prelude; 11.72/4.59 } 11.72/4.59 module Monad where { 11.72/4.59 import qualified Main; 11.72/4.59 import qualified Maybe; 11.72/4.59 import qualified Prelude; 11.72/4.59 foldM :: Monad c => (a -> b -> c a) -> a -> [b] -> c a; 11.72/4.59 foldM vy a [] = return a; 11.72/4.59 foldM f a (x : xs) = f a x >>= foldM0 f xs; 11.72/4.59 11.72/4.59 foldM0 f xs fax = foldM f fax xs; 11.72/4.59 11.72/4.59 } 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (7) Narrow (SOUND) 11.72/4.59 Haskell To QDPs 11.72/4.59 11.72/4.59 digraph dp_graph { 11.72/4.59 node [outthreshold=100, inthreshold=100];1[label="Monad.foldM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 3[label="Monad.foldM vz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 4[label="Monad.foldM vz3 vz4",fontsize=16,color="grey",shape="box"];4 -> 5[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 5[label="Monad.foldM vz3 vz4 vz5",fontsize=16,color="burlywood",shape="triangle"];40[label="vz5/vz50 : vz51",fontsize=10,color="white",style="solid",shape="box"];5 -> 40[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 40 -> 6[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 41[label="vz5/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 41[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 41 -> 7[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 6[label="Monad.foldM vz3 vz4 (vz50 : vz51)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 11.72/4.59 7[label="Monad.foldM vz3 vz4 []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 11.72/4.59 8 -> 10[label="",style="dashed", color="red", weight=0]; 11.72/4.59 8[label="vz3 vz4 vz50 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="magenta"];8 -> 11[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 9[label="return vz4",fontsize=16,color="black",shape="box"];9 -> 12[label="",style="solid", color="black", weight=3]; 11.72/4.59 11[label="vz3 vz4 vz50",fontsize=16,color="green",shape="box"];11 -> 17[label="",style="dashed", color="green", weight=3]; 11.72/4.59 11 -> 18[label="",style="dashed", color="green", weight=3]; 11.72/4.59 10[label="vz6 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="burlywood",shape="triangle"];42[label="vz6/vz60 : vz61",fontsize=10,color="white",style="solid",shape="box"];10 -> 42[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 42 -> 15[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 43[label="vz6/[]",fontsize=10,color="white",style="solid",shape="box"];10 -> 43[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 43 -> 16[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 12[label="vz4 : []",fontsize=16,color="green",shape="box"];17[label="vz4",fontsize=16,color="green",shape="box"];18[label="vz50",fontsize=16,color="green",shape="box"];15[label="vz60 : vz61 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="black",shape="box"];15 -> 19[label="",style="solid", color="black", weight=3]; 11.72/4.59 16[label="[] >>= Monad.foldM0 vz3 vz51",fontsize=16,color="black",shape="box"];16 -> 20[label="",style="solid", color="black", weight=3]; 11.72/4.59 19 -> 25[label="",style="dashed", color="red", weight=0]; 11.72/4.59 19[label="Monad.foldM0 vz3 vz51 vz60 ++ (vz61 >>= Monad.foldM0 vz3 vz51)",fontsize=16,color="magenta"];19 -> 26[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 19 -> 27[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 20[label="[]",fontsize=16,color="green",shape="box"];26[label="Monad.foldM0 vz3 vz51 vz60",fontsize=16,color="black",shape="box"];26 -> 30[label="",style="solid", color="black", weight=3]; 11.72/4.59 27 -> 10[label="",style="dashed", color="red", weight=0]; 11.72/4.59 27[label="vz61 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="magenta"];27 -> 31[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 25[label="vz8 ++ vz7",fontsize=16,color="burlywood",shape="triangle"];44[label="vz8/vz80 : vz81",fontsize=10,color="white",style="solid",shape="box"];25 -> 44[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 44 -> 32[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 45[label="vz8/[]",fontsize=10,color="white",style="solid",shape="box"];25 -> 45[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 45 -> 33[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 30 -> 5[label="",style="dashed", color="red", weight=0]; 11.72/4.59 30[label="Monad.foldM vz3 vz60 vz51",fontsize=16,color="magenta"];30 -> 34[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 30 -> 35[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 31[label="vz61",fontsize=16,color="green",shape="box"];32[label="(vz80 : vz81) ++ vz7",fontsize=16,color="black",shape="box"];32 -> 36[label="",style="solid", color="black", weight=3]; 11.72/4.59 33[label="[] ++ vz7",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 11.72/4.59 34[label="vz60",fontsize=16,color="green",shape="box"];35[label="vz51",fontsize=16,color="green",shape="box"];36[label="vz80 : vz81 ++ vz7",fontsize=16,color="green",shape="box"];36 -> 38[label="",style="dashed", color="green", weight=3]; 11.72/4.59 37[label="vz7",fontsize=16,color="green",shape="box"];38 -> 25[label="",style="dashed", color="red", weight=0]; 11.72/4.59 38[label="vz81 ++ vz7",fontsize=16,color="magenta"];38 -> 39[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 39[label="vz81",fontsize=16,color="green",shape="box"];} 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (8) 11.72/4.59 Complex Obligation (AND) 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (9) 11.72/4.59 Obligation: 11.72/4.59 Q DP problem: 11.72/4.59 The TRS P consists of the following rules: 11.72/4.59 11.72/4.59 new_foldM(vz3, :(vz50, vz51), h, ba) -> new_gtGtEs(vz3, vz51, h, ba) 11.72/4.59 new_gtGtEs(vz3, vz51, h, ba) -> new_gtGtEs(vz3, vz51, h, ba) 11.72/4.59 new_gtGtEs(vz3, vz51, h, ba) -> new_foldM(vz3, vz51, h, ba) 11.72/4.59 11.72/4.59 R is empty. 11.72/4.59 Q is empty. 11.72/4.59 We have to consider all minimal (P,Q,R)-chains. 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (10) MRRProof (EQUIVALENT) 11.72/4.59 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 11.72/4.59 11.72/4.59 Strictly oriented dependency pairs: 11.72/4.59 11.72/4.59 new_foldM(vz3, :(vz50, vz51), h, ba) -> new_gtGtEs(vz3, vz51, h, ba) 11.72/4.59 new_gtGtEs(vz3, vz51, h, ba) -> new_foldM(vz3, vz51, h, ba) 11.72/4.59 11.72/4.59 11.72/4.59 Used ordering: Polynomial interpretation [POLO]: 11.72/4.59 11.72/4.59 POL(:(x_1, x_2)) = 2 + x_1 + 2*x_2 11.72/4.59 POL(new_foldM(x_1, x_2, x_3, x_4)) = x_1 + 2*x_2 + x_3 + x_4 11.72/4.59 POL(new_gtGtEs(x_1, x_2, x_3, x_4)) = 2 + x_1 + 2*x_2 + x_3 + x_4 11.72/4.59 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (11) 11.72/4.59 Obligation: 11.72/4.59 Q DP problem: 11.72/4.59 The TRS P consists of the following rules: 11.72/4.59 11.72/4.59 new_gtGtEs(vz3, vz51, h, ba) -> new_gtGtEs(vz3, vz51, h, ba) 11.72/4.59 11.72/4.59 R is empty. 11.72/4.59 Q is empty. 11.72/4.59 We have to consider all minimal (P,Q,R)-chains. 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (12) NonTerminationLoopProof (COMPLETE) 11.72/4.59 We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. 11.72/4.59 Found a loop by semiunifying a rule from P directly. 11.72/4.59 11.72/4.59 s = new_gtGtEs(vz3, vz51, h, ba) evaluates to t =new_gtGtEs(vz3, vz51, h, ba) 11.72/4.59 11.72/4.59 Thus s starts an infinite chain as s semiunifies with t with the following substitutions: 11.72/4.59 * Matcher: [ ] 11.72/4.59 * Semiunifier: [ ] 11.72/4.59 11.72/4.59 -------------------------------------------------------------------------------- 11.72/4.59 Rewriting sequence 11.72/4.59 11.72/4.59 The DP semiunifies directly so there is only one rewrite step from new_gtGtEs(vz3, vz51, h, ba) to new_gtGtEs(vz3, vz51, h, ba). 11.72/4.59 11.72/4.59 11.72/4.59 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (13) 11.72/4.59 NO 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (14) 11.72/4.59 Obligation: 11.72/4.59 Q DP problem: 11.72/4.59 The TRS P consists of the following rules: 11.72/4.59 11.72/4.59 new_psPs(:(vz80, vz81), vz7, h) -> new_psPs(vz81, vz7, h) 11.72/4.59 11.72/4.59 R is empty. 11.72/4.59 Q is empty. 11.72/4.59 We have to consider all minimal (P,Q,R)-chains. 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (15) QDPSizeChangeProof (EQUIVALENT) 11.72/4.59 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. 11.72/4.59 11.72/4.59 From the DPs we obtained the following set of size-change graphs: 11.72/4.59 *new_psPs(:(vz80, vz81), vz7, h) -> new_psPs(vz81, vz7, h) 11.72/4.59 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 11.72/4.59 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (16) 11.72/4.59 YES 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (17) Narrow (COMPLETE) 11.72/4.59 Haskell To QDPs 11.72/4.59 11.72/4.59 digraph dp_graph { 11.72/4.59 node [outthreshold=100, inthreshold=100];1[label="Monad.foldM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 3[label="Monad.foldM vz3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 4[label="Monad.foldM vz3 vz4",fontsize=16,color="grey",shape="box"];4 -> 5[label="",style="dashed", color="grey", weight=3]; 11.72/4.59 5[label="Monad.foldM vz3 vz4 vz5",fontsize=16,color="burlywood",shape="triangle"];40[label="vz5/vz50 : vz51",fontsize=10,color="white",style="solid",shape="box"];5 -> 40[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 40 -> 6[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 41[label="vz5/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 41[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 41 -> 7[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 6[label="Monad.foldM vz3 vz4 (vz50 : vz51)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 11.72/4.59 7[label="Monad.foldM vz3 vz4 []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 11.72/4.59 8 -> 10[label="",style="dashed", color="red", weight=0]; 11.72/4.59 8[label="vz3 vz4 vz50 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="magenta"];8 -> 11[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 9[label="return vz4",fontsize=16,color="black",shape="box"];9 -> 12[label="",style="solid", color="black", weight=3]; 11.72/4.59 11[label="vz3 vz4 vz50",fontsize=16,color="green",shape="box"];11 -> 17[label="",style="dashed", color="green", weight=3]; 11.72/4.59 11 -> 18[label="",style="dashed", color="green", weight=3]; 11.72/4.59 10[label="vz6 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="burlywood",shape="triangle"];42[label="vz6/vz60 : vz61",fontsize=10,color="white",style="solid",shape="box"];10 -> 42[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 42 -> 15[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 43[label="vz6/[]",fontsize=10,color="white",style="solid",shape="box"];10 -> 43[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 43 -> 16[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 12[label="vz4 : []",fontsize=16,color="green",shape="box"];17[label="vz4",fontsize=16,color="green",shape="box"];18[label="vz50",fontsize=16,color="green",shape="box"];15[label="vz60 : vz61 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="black",shape="box"];15 -> 19[label="",style="solid", color="black", weight=3]; 11.72/4.59 16[label="[] >>= Monad.foldM0 vz3 vz51",fontsize=16,color="black",shape="box"];16 -> 20[label="",style="solid", color="black", weight=3]; 11.72/4.59 19 -> 25[label="",style="dashed", color="red", weight=0]; 11.72/4.59 19[label="Monad.foldM0 vz3 vz51 vz60 ++ (vz61 >>= Monad.foldM0 vz3 vz51)",fontsize=16,color="magenta"];19 -> 26[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 19 -> 27[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 20[label="[]",fontsize=16,color="green",shape="box"];26[label="Monad.foldM0 vz3 vz51 vz60",fontsize=16,color="black",shape="box"];26 -> 30[label="",style="solid", color="black", weight=3]; 11.72/4.59 27 -> 10[label="",style="dashed", color="red", weight=0]; 11.72/4.59 27[label="vz61 >>= Monad.foldM0 vz3 vz51",fontsize=16,color="magenta"];27 -> 31[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 25[label="vz8 ++ vz7",fontsize=16,color="burlywood",shape="triangle"];44[label="vz8/vz80 : vz81",fontsize=10,color="white",style="solid",shape="box"];25 -> 44[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 44 -> 32[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 45[label="vz8/[]",fontsize=10,color="white",style="solid",shape="box"];25 -> 45[label="",style="solid", color="burlywood", weight=9]; 11.72/4.59 45 -> 33[label="",style="solid", color="burlywood", weight=3]; 11.72/4.59 30 -> 5[label="",style="dashed", color="red", weight=0]; 11.72/4.59 30[label="Monad.foldM vz3 vz60 vz51",fontsize=16,color="magenta"];30 -> 34[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 30 -> 35[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 31[label="vz61",fontsize=16,color="green",shape="box"];32[label="(vz80 : vz81) ++ vz7",fontsize=16,color="black",shape="box"];32 -> 36[label="",style="solid", color="black", weight=3]; 11.72/4.59 33[label="[] ++ vz7",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 11.72/4.59 34[label="vz60",fontsize=16,color="green",shape="box"];35[label="vz51",fontsize=16,color="green",shape="box"];36[label="vz80 : vz81 ++ vz7",fontsize=16,color="green",shape="box"];36 -> 38[label="",style="dashed", color="green", weight=3]; 11.72/4.59 37[label="vz7",fontsize=16,color="green",shape="box"];38 -> 25[label="",style="dashed", color="red", weight=0]; 11.72/4.59 38[label="vz81 ++ vz7",fontsize=16,color="magenta"];38 -> 39[label="",style="dashed", color="magenta", weight=3]; 11.72/4.59 39[label="vz81",fontsize=16,color="green",shape="box"];} 11.72/4.59 11.72/4.59 ---------------------------------------- 11.72/4.59 11.72/4.59 (18) 11.72/4.59 TRUE 11.80/6.19 EOF