9.83/4.40 YES 11.56/4.92 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 11.56/4.92 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 11.56/4.92 11.56/4.92 11.56/4.92 H-Termination with start terms of the given HASKELL could be proven: 11.56/4.92 11.56/4.92 (0) HASKELL 11.56/4.92 (1) BR [EQUIVALENT, 0 ms] 11.56/4.92 (2) HASKELL 11.56/4.92 (3) COR [EQUIVALENT, 0 ms] 11.56/4.92 (4) HASKELL 11.56/4.92 (5) NumRed [SOUND, 0 ms] 11.56/4.92 (6) HASKELL 11.56/4.92 (7) Narrow [EQUIVALENT, 16 ms] 11.56/4.92 (8) YES 11.56/4.92 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (0) 11.56/4.92 Obligation: 11.56/4.92 mainModule Main 11.56/4.92 module FiniteMap where { 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 11.56/4.92 11.56/4.92 emptyFM :: FiniteMap b a; 11.56/4.92 emptyFM = EmptyFM; 11.56/4.92 11.56/4.92 unitFM :: a -> b -> FiniteMap a b; 11.56/4.92 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 11.56/4.92 11.56/4.92 } 11.56/4.92 module Maybe where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 module Main where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (1) BR (EQUIVALENT) 11.56/4.92 Replaced joker patterns by fresh variables and removed binding patterns. 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (2) 11.56/4.92 Obligation: 11.56/4.92 mainModule Main 11.56/4.92 module FiniteMap where { 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 11.56/4.92 11.56/4.92 emptyFM :: FiniteMap a b; 11.56/4.92 emptyFM = EmptyFM; 11.56/4.92 11.56/4.92 unitFM :: a -> b -> FiniteMap a b; 11.56/4.92 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 11.56/4.92 11.56/4.92 } 11.56/4.92 module Maybe where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 module Main where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (3) COR (EQUIVALENT) 11.56/4.92 Cond Reductions: 11.56/4.92 The following Function with conditions 11.56/4.92 "undefined |Falseundefined; 11.56/4.92 " 11.56/4.92 is transformed to 11.56/4.92 "undefined = undefined1; 11.56/4.92 " 11.56/4.92 "undefined0 True = undefined; 11.56/4.92 " 11.56/4.92 "undefined1 = undefined0 False; 11.56/4.92 " 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (4) 11.56/4.92 Obligation: 11.56/4.92 mainModule Main 11.56/4.92 module FiniteMap where { 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b) ; 11.56/4.92 11.56/4.92 emptyFM :: FiniteMap b a; 11.56/4.92 emptyFM = EmptyFM; 11.56/4.92 11.56/4.92 unitFM :: a -> b -> FiniteMap a b; 11.56/4.92 unitFM key elt = Branch key elt 1 emptyFM emptyFM; 11.56/4.92 11.56/4.92 } 11.56/4.92 module Maybe where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 module Main where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (5) NumRed (SOUND) 11.56/4.92 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (6) 11.56/4.92 Obligation: 11.56/4.92 mainModule Main 11.56/4.92 module FiniteMap where { 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a) ; 11.56/4.92 11.56/4.92 emptyFM :: FiniteMap a b; 11.56/4.92 emptyFM = EmptyFM; 11.56/4.92 11.56/4.92 unitFM :: b -> a -> FiniteMap b a; 11.56/4.92 unitFM key elt = Branch key elt (Pos (Succ Zero)) emptyFM emptyFM; 11.56/4.92 11.56/4.92 } 11.56/4.92 module Maybe where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Main; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 module Main where { 11.56/4.92 import qualified FiniteMap; 11.56/4.92 import qualified Maybe; 11.56/4.92 import qualified Prelude; 11.56/4.92 } 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (7) Narrow (EQUIVALENT) 11.56/4.92 Haskell To QDPs 11.56/4.92 11.56/4.92 digraph dp_graph { 11.56/4.92 node [outthreshold=100, inthreshold=100];1[label="FiniteMap.unitFM",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 11.56/4.92 3[label="FiniteMap.unitFM vy3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 11.56/4.92 4[label="FiniteMap.unitFM vy3 vy4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 11.56/4.92 5[label="FiniteMap.Branch vy3 vy4 (Pos (Succ Zero)) FiniteMap.emptyFM FiniteMap.emptyFM",fontsize=16,color="green",shape="box"];5 -> 6[label="",style="dashed", color="green", weight=3]; 11.56/4.92 5 -> 7[label="",style="dashed", color="green", weight=3]; 11.56/4.92 6[label="FiniteMap.emptyFM",fontsize=16,color="black",shape="triangle"];6 -> 8[label="",style="solid", color="black", weight=3]; 11.56/4.92 7 -> 6[label="",style="dashed", color="red", weight=0]; 11.56/4.92 7[label="FiniteMap.emptyFM",fontsize=16,color="magenta"];8[label="FiniteMap.EmptyFM",fontsize=16,color="green",shape="box"];} 11.56/4.92 11.56/4.92 ---------------------------------------- 11.56/4.92 11.56/4.92 (8) 11.56/4.92 YES 11.90/4.96 EOF