30.99/15.52 YES 33.69/16.22 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 33.69/16.22 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 33.69/16.22 33.69/16.22 33.69/16.22 H-Termination with start terms of the given HASKELL could be proven: 33.69/16.22 33.69/16.22 (0) HASKELL 33.69/16.22 (1) BR [EQUIVALENT, 0 ms] 33.69/16.22 (2) HASKELL 33.69/16.22 (3) COR [EQUIVALENT, 0 ms] 33.69/16.22 (4) HASKELL 33.69/16.22 (5) Narrow [SOUND, 0 ms] 33.69/16.22 (6) AND 33.69/16.22 (7) QDP 33.69/16.22 (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] 33.69/16.22 (9) YES 33.69/16.22 (10) QDP 33.69/16.22 (11) QDPPairToRuleProof [EQUIVALENT, 0 ms] 33.69/16.22 (12) AND 33.69/16.22 (13) QDP 33.69/16.22 (14) DependencyGraphProof [EQUIVALENT, 0 ms] 33.69/16.22 (15) QDP 33.69/16.22 (16) TransformationProof [EQUIVALENT, 0 ms] 33.69/16.22 (17) QDP 33.69/16.22 (18) UsableRulesProof [EQUIVALENT, 0 ms] 33.69/16.22 (19) QDP 33.69/16.22 (20) QReductionProof [EQUIVALENT, 0 ms] 33.69/16.22 (21) QDP 33.69/16.22 (22) InductionCalculusProof [EQUIVALENT, 0 ms] 33.69/16.22 (23) QDP 33.69/16.22 (24) NonInfProof [EQUIVALENT, 34 ms] 33.69/16.22 (25) AND 33.69/16.23 (26) QDP 33.69/16.23 (27) DependencyGraphProof [EQUIVALENT, 0 ms] 33.69/16.23 (28) TRUE 33.69/16.23 (29) QDP 33.69/16.23 (30) DependencyGraphProof [EQUIVALENT, 0 ms] 33.69/16.23 (31) TRUE 33.69/16.23 (32) QDP 33.69/16.23 (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] 33.69/16.23 (34) YES 33.69/16.23 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (0) 33.69/16.23 Obligation: 33.69/16.23 mainModule Main 33.69/16.23 module Main where { 33.69/16.23 import qualified Prelude; 33.69/16.23 data Main.Char = Char MyInt ; 33.69/16.23 33.69/16.23 data List a = Cons a (List a) | Nil ; 33.69/16.23 33.69/16.23 data MyBool = MyTrue | MyFalse ; 33.69/16.23 33.69/16.23 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.69/16.23 33.69/16.23 data Main.Nat = Succ Main.Nat | Zero ; 33.69/16.23 33.69/16.23 data Ordering = LT | EQ | GT ; 33.69/16.23 33.69/16.23 data Main.WHNF a = WHNF a ; 33.69/16.23 33.69/16.23 compareMyInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 compareMyInt = primCmpInt; 33.69/16.23 33.69/16.23 dsEm :: (a -> b) -> a -> b; 33.69/16.23 dsEm f x = Main.seq x (f x); 33.69/16.23 33.69/16.23 enforceWHNF :: Main.WHNF a -> b -> b; 33.69/16.23 enforceWHNF (Main.WHNF x) y = y; 33.69/16.23 33.69/16.23 enumFromChar :: Main.Char -> List Main.Char; 33.69/16.23 enumFromChar c = map toEnumChar (enumFromToMyInt (fromEnumChar c) (fromEnumChar maxBoundChar)); 33.69/16.23 33.69/16.23 enumFromToMyInt :: MyInt -> MyInt -> List MyInt; 33.69/16.23 enumFromToMyInt = numericEnumFromTo; 33.69/16.23 33.69/16.23 esEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 esEsOrdering LT LT = MyTrue; 33.69/16.23 esEsOrdering LT EQ = MyFalse; 33.69/16.23 esEsOrdering LT GT = MyFalse; 33.69/16.23 esEsOrdering EQ LT = MyFalse; 33.69/16.23 esEsOrdering EQ EQ = MyTrue; 33.69/16.23 esEsOrdering EQ GT = MyFalse; 33.69/16.23 esEsOrdering GT LT = MyFalse; 33.69/16.23 esEsOrdering GT EQ = MyFalse; 33.69/16.23 esEsOrdering GT GT = MyTrue; 33.69/16.23 33.69/16.23 flip :: (b -> a -> c) -> a -> b -> c; 33.69/16.23 flip f x y = f y x; 33.69/16.23 33.69/16.23 fromEnumChar :: Main.Char -> MyInt; 33.69/16.23 fromEnumChar = primCharToInt; 33.69/16.23 33.69/16.23 fromIntMyInt :: MyInt -> MyInt; 33.69/16.23 fromIntMyInt x = x; 33.69/16.23 33.69/16.23 fsEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 fsEsOrdering x y = not (esEsOrdering x y); 33.69/16.23 33.69/16.23 ltEsMyInt :: MyInt -> MyInt -> MyBool; 33.69/16.23 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 33.69/16.23 33.69/16.23 map :: (b -> a) -> List b -> List a; 33.69/16.23 map f Nil = Nil; 33.69/16.23 map f (Cons x xs) = Cons (f x) (map f xs); 33.69/16.23 33.69/16.23 maxBoundChar :: Main.Char; 33.69/16.23 maxBoundChar = Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); 33.69/16.23 33.69/16.23 not :: MyBool -> MyBool; 33.69/16.23 not MyTrue = MyFalse; 33.69/16.23 not MyFalse = MyTrue; 33.69/16.23 33.69/16.23 numericEnumFrom n = Cons n (dsEm numericEnumFrom (psMyInt n (fromIntMyInt (Main.Pos (Main.Succ Main.Zero))))); 33.69/16.23 33.69/16.23 numericEnumFromTo n m = takeWhile (flip ltEsMyInt m) (numericEnumFrom n); 33.69/16.23 33.69/16.23 otherwise :: MyBool; 33.69/16.23 otherwise = MyTrue; 33.69/16.23 33.69/16.23 primCharToInt :: Main.Char -> MyInt; 33.69/16.23 primCharToInt (Main.Char x) = x; 33.69/16.23 33.69/16.23 primCmpInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 33.69/16.23 33.69/16.23 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 33.69/16.23 primCmpNat Main.Zero Main.Zero = EQ; 33.69/16.23 primCmpNat Main.Zero (Main.Succ y) = LT; 33.69/16.23 primCmpNat (Main.Succ x) Main.Zero = GT; 33.69/16.23 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 33.69/16.23 33.69/16.23 primIntToChar :: MyInt -> Main.Char; 33.69/16.23 primIntToChar x = Main.Char x; 33.69/16.23 33.69/16.23 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 33.69/16.23 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 33.69/16.23 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 33.69/16.23 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 33.69/16.23 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 33.69/16.23 33.69/16.23 primPlusInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 33.69/16.23 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 33.69/16.23 33.69/16.23 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 33.69/16.23 primPlusNat Main.Zero Main.Zero = Main.Zero; 33.69/16.23 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 33.69/16.23 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 33.69/16.23 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 33.69/16.23 33.69/16.23 psMyInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 psMyInt = primPlusInt; 33.69/16.23 33.69/16.23 seq :: b -> a -> a; 33.69/16.23 seq x y = Main.enforceWHNF (Main.WHNF x) y; 33.69/16.23 33.69/16.23 takeWhile :: (a -> MyBool) -> List a -> List a; 33.69/16.23 takeWhile p Nil = takeWhile3 p Nil; 33.69/16.23 takeWhile p (Cons x xs) = takeWhile2 p (Cons x xs); 33.69/16.23 33.69/16.23 takeWhile0 p x xs MyTrue = Nil; 33.69/16.23 33.69/16.23 takeWhile1 p x xs MyTrue = Cons x (takeWhile p xs); 33.69/16.23 takeWhile1 p x xs MyFalse = takeWhile0 p x xs otherwise; 33.69/16.23 33.69/16.23 takeWhile2 p (Cons x xs) = takeWhile1 p x xs (p x); 33.69/16.23 33.69/16.23 takeWhile3 p Nil = Nil; 33.69/16.23 takeWhile3 vx vy = takeWhile2 vx vy; 33.69/16.23 33.69/16.23 toEnumChar :: MyInt -> Main.Char; 33.69/16.23 toEnumChar = primIntToChar; 33.69/16.23 33.69/16.23 } 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (1) BR (EQUIVALENT) 33.69/16.23 Replaced joker patterns by fresh variables and removed binding patterns. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (2) 33.69/16.23 Obligation: 33.69/16.23 mainModule Main 33.69/16.23 module Main where { 33.69/16.23 import qualified Prelude; 33.69/16.23 data Main.Char = Char MyInt ; 33.69/16.23 33.69/16.23 data List a = Cons a (List a) | Nil ; 33.69/16.23 33.69/16.23 data MyBool = MyTrue | MyFalse ; 33.69/16.23 33.69/16.23 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.69/16.23 33.69/16.23 data Main.Nat = Succ Main.Nat | Zero ; 33.69/16.23 33.69/16.23 data Ordering = LT | EQ | GT ; 33.69/16.23 33.69/16.23 data Main.WHNF a = WHNF a ; 33.69/16.23 33.69/16.23 compareMyInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 compareMyInt = primCmpInt; 33.69/16.23 33.69/16.23 dsEm :: (a -> b) -> a -> b; 33.69/16.23 dsEm f x = Main.seq x (f x); 33.69/16.23 33.69/16.23 enforceWHNF :: Main.WHNF a -> b -> b; 33.69/16.23 enforceWHNF (Main.WHNF x) y = y; 33.69/16.23 33.69/16.23 enumFromChar :: Main.Char -> List Main.Char; 33.69/16.23 enumFromChar c = map toEnumChar (enumFromToMyInt (fromEnumChar c) (fromEnumChar maxBoundChar)); 33.69/16.23 33.69/16.23 enumFromToMyInt :: MyInt -> MyInt -> List MyInt; 33.69/16.23 enumFromToMyInt = numericEnumFromTo; 33.69/16.23 33.69/16.23 esEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 esEsOrdering LT LT = MyTrue; 33.69/16.23 esEsOrdering LT EQ = MyFalse; 33.69/16.23 esEsOrdering LT GT = MyFalse; 33.69/16.23 esEsOrdering EQ LT = MyFalse; 33.69/16.23 esEsOrdering EQ EQ = MyTrue; 33.69/16.23 esEsOrdering EQ GT = MyFalse; 33.69/16.23 esEsOrdering GT LT = MyFalse; 33.69/16.23 esEsOrdering GT EQ = MyFalse; 33.69/16.23 esEsOrdering GT GT = MyTrue; 33.69/16.23 33.69/16.23 flip :: (c -> b -> a) -> b -> c -> a; 33.69/16.23 flip f x y = f y x; 33.69/16.23 33.69/16.23 fromEnumChar :: Main.Char -> MyInt; 33.69/16.23 fromEnumChar = primCharToInt; 33.69/16.23 33.69/16.23 fromIntMyInt :: MyInt -> MyInt; 33.69/16.23 fromIntMyInt x = x; 33.69/16.23 33.69/16.23 fsEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 fsEsOrdering x y = not (esEsOrdering x y); 33.69/16.23 33.69/16.23 ltEsMyInt :: MyInt -> MyInt -> MyBool; 33.69/16.23 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 33.69/16.23 33.69/16.23 map :: (b -> a) -> List b -> List a; 33.69/16.23 map f Nil = Nil; 33.69/16.23 map f (Cons x xs) = Cons (f x) (map f xs); 33.69/16.23 33.69/16.23 maxBoundChar :: Main.Char; 33.69/16.23 maxBoundChar = Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); 33.69/16.23 33.69/16.23 not :: MyBool -> MyBool; 33.69/16.23 not MyTrue = MyFalse; 33.69/16.23 not MyFalse = MyTrue; 33.69/16.23 33.69/16.23 numericEnumFrom n = Cons n (dsEm numericEnumFrom (psMyInt n (fromIntMyInt (Main.Pos (Main.Succ Main.Zero))))); 33.69/16.23 33.69/16.23 numericEnumFromTo n m = takeWhile (flip ltEsMyInt m) (numericEnumFrom n); 33.69/16.23 33.69/16.23 otherwise :: MyBool; 33.69/16.23 otherwise = MyTrue; 33.69/16.23 33.69/16.23 primCharToInt :: Main.Char -> MyInt; 33.69/16.23 primCharToInt (Main.Char x) = x; 33.69/16.23 33.69/16.23 primCmpInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 33.69/16.23 33.69/16.23 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 33.69/16.23 primCmpNat Main.Zero Main.Zero = EQ; 33.69/16.23 primCmpNat Main.Zero (Main.Succ y) = LT; 33.69/16.23 primCmpNat (Main.Succ x) Main.Zero = GT; 33.69/16.23 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 33.69/16.23 33.69/16.23 primIntToChar :: MyInt -> Main.Char; 33.69/16.23 primIntToChar x = Main.Char x; 33.69/16.23 33.69/16.23 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 33.69/16.23 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 33.69/16.23 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 33.69/16.23 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 33.69/16.23 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 33.69/16.23 33.69/16.23 primPlusInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 33.69/16.23 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 33.69/16.23 33.69/16.23 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 33.69/16.23 primPlusNat Main.Zero Main.Zero = Main.Zero; 33.69/16.23 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 33.69/16.23 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 33.69/16.23 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 33.69/16.23 33.69/16.23 psMyInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 psMyInt = primPlusInt; 33.69/16.23 33.69/16.23 seq :: b -> a -> a; 33.69/16.23 seq x y = Main.enforceWHNF (Main.WHNF x) y; 33.69/16.23 33.69/16.23 takeWhile :: (a -> MyBool) -> List a -> List a; 33.69/16.23 takeWhile p Nil = takeWhile3 p Nil; 33.69/16.23 takeWhile p (Cons x xs) = takeWhile2 p (Cons x xs); 33.69/16.23 33.69/16.23 takeWhile0 p x xs MyTrue = Nil; 33.69/16.23 33.69/16.23 takeWhile1 p x xs MyTrue = Cons x (takeWhile p xs); 33.69/16.23 takeWhile1 p x xs MyFalse = takeWhile0 p x xs otherwise; 33.69/16.23 33.69/16.23 takeWhile2 p (Cons x xs) = takeWhile1 p x xs (p x); 33.69/16.23 33.69/16.23 takeWhile3 p Nil = Nil; 33.69/16.23 takeWhile3 vx vy = takeWhile2 vx vy; 33.69/16.23 33.69/16.23 toEnumChar :: MyInt -> Main.Char; 33.69/16.23 toEnumChar = primIntToChar; 33.69/16.23 33.69/16.23 } 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (3) COR (EQUIVALENT) 33.69/16.23 Cond Reductions: 33.69/16.23 The following Function with conditions 33.69/16.23 "undefined |Falseundefined; 33.69/16.23 " 33.69/16.23 is transformed to 33.69/16.23 "undefined = undefined1; 33.69/16.23 " 33.69/16.23 "undefined0 True = undefined; 33.69/16.23 " 33.69/16.23 "undefined1 = undefined0 False; 33.69/16.23 " 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (4) 33.69/16.23 Obligation: 33.69/16.23 mainModule Main 33.69/16.23 module Main where { 33.69/16.23 import qualified Prelude; 33.69/16.23 data Main.Char = Char MyInt ; 33.69/16.23 33.69/16.23 data List a = Cons a (List a) | Nil ; 33.69/16.23 33.69/16.23 data MyBool = MyTrue | MyFalse ; 33.69/16.23 33.69/16.23 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.69/16.23 33.69/16.23 data Main.Nat = Succ Main.Nat | Zero ; 33.69/16.23 33.69/16.23 data Ordering = LT | EQ | GT ; 33.69/16.23 33.69/16.23 data Main.WHNF a = WHNF a ; 33.69/16.23 33.69/16.23 compareMyInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 compareMyInt = primCmpInt; 33.69/16.23 33.69/16.23 dsEm :: (a -> b) -> a -> b; 33.69/16.23 dsEm f x = Main.seq x (f x); 33.69/16.23 33.69/16.23 enforceWHNF :: Main.WHNF a -> b -> b; 33.69/16.23 enforceWHNF (Main.WHNF x) y = y; 33.69/16.23 33.69/16.23 enumFromChar :: Main.Char -> List Main.Char; 33.69/16.23 enumFromChar c = map toEnumChar (enumFromToMyInt (fromEnumChar c) (fromEnumChar maxBoundChar)); 33.69/16.23 33.69/16.23 enumFromToMyInt :: MyInt -> MyInt -> List MyInt; 33.69/16.23 enumFromToMyInt = numericEnumFromTo; 33.69/16.23 33.69/16.23 esEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 esEsOrdering LT LT = MyTrue; 33.69/16.23 esEsOrdering LT EQ = MyFalse; 33.69/16.23 esEsOrdering LT GT = MyFalse; 33.69/16.23 esEsOrdering EQ LT = MyFalse; 33.69/16.23 esEsOrdering EQ EQ = MyTrue; 33.69/16.23 esEsOrdering EQ GT = MyFalse; 33.69/16.23 esEsOrdering GT LT = MyFalse; 33.69/16.23 esEsOrdering GT EQ = MyFalse; 33.69/16.23 esEsOrdering GT GT = MyTrue; 33.69/16.23 33.69/16.23 flip :: (c -> b -> a) -> b -> c -> a; 33.69/16.23 flip f x y = f y x; 33.69/16.23 33.69/16.23 fromEnumChar :: Main.Char -> MyInt; 33.69/16.23 fromEnumChar = primCharToInt; 33.69/16.23 33.69/16.23 fromIntMyInt :: MyInt -> MyInt; 33.69/16.23 fromIntMyInt x = x; 33.69/16.23 33.69/16.23 fsEsOrdering :: Ordering -> Ordering -> MyBool; 33.69/16.23 fsEsOrdering x y = not (esEsOrdering x y); 33.69/16.23 33.69/16.23 ltEsMyInt :: MyInt -> MyInt -> MyBool; 33.69/16.23 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 33.69/16.23 33.69/16.23 map :: (a -> b) -> List a -> List b; 33.69/16.23 map f Nil = Nil; 33.69/16.23 map f (Cons x xs) = Cons (f x) (map f xs); 33.69/16.23 33.69/16.23 maxBoundChar :: Main.Char; 33.69/16.23 maxBoundChar = Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); 33.69/16.23 33.69/16.23 not :: MyBool -> MyBool; 33.69/16.23 not MyTrue = MyFalse; 33.69/16.23 not MyFalse = MyTrue; 33.69/16.23 33.69/16.23 numericEnumFrom n = Cons n (dsEm numericEnumFrom (psMyInt n (fromIntMyInt (Main.Pos (Main.Succ Main.Zero))))); 33.69/16.23 33.69/16.23 numericEnumFromTo n m = takeWhile (flip ltEsMyInt m) (numericEnumFrom n); 33.69/16.23 33.69/16.23 otherwise :: MyBool; 33.69/16.23 otherwise = MyTrue; 33.69/16.23 33.69/16.23 primCharToInt :: Main.Char -> MyInt; 33.69/16.23 primCharToInt (Main.Char x) = x; 33.69/16.23 33.69/16.23 primCmpInt :: MyInt -> MyInt -> Ordering; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 33.69/16.23 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 33.69/16.23 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 33.69/16.23 33.69/16.23 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 33.69/16.23 primCmpNat Main.Zero Main.Zero = EQ; 33.69/16.23 primCmpNat Main.Zero (Main.Succ y) = LT; 33.69/16.23 primCmpNat (Main.Succ x) Main.Zero = GT; 33.69/16.23 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 33.69/16.23 33.69/16.23 primIntToChar :: MyInt -> Main.Char; 33.69/16.23 primIntToChar x = Main.Char x; 33.69/16.23 33.69/16.23 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 33.69/16.23 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 33.69/16.23 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 33.69/16.23 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 33.69/16.23 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 33.69/16.23 33.69/16.23 primPlusInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 33.69/16.23 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 33.69/16.23 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 33.69/16.23 33.69/16.23 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 33.69/16.23 primPlusNat Main.Zero Main.Zero = Main.Zero; 33.69/16.23 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 33.69/16.23 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 33.69/16.23 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 33.69/16.23 33.69/16.23 psMyInt :: MyInt -> MyInt -> MyInt; 33.69/16.23 psMyInt = primPlusInt; 33.69/16.23 33.69/16.23 seq :: b -> a -> a; 33.69/16.23 seq x y = Main.enforceWHNF (Main.WHNF x) y; 33.69/16.23 33.69/16.23 takeWhile :: (a -> MyBool) -> List a -> List a; 33.69/16.23 takeWhile p Nil = takeWhile3 p Nil; 33.69/16.23 takeWhile p (Cons x xs) = takeWhile2 p (Cons x xs); 33.69/16.23 33.69/16.23 takeWhile0 p x xs MyTrue = Nil; 33.69/16.23 33.69/16.23 takeWhile1 p x xs MyTrue = Cons x (takeWhile p xs); 33.69/16.23 takeWhile1 p x xs MyFalse = takeWhile0 p x xs otherwise; 33.69/16.23 33.69/16.23 takeWhile2 p (Cons x xs) = takeWhile1 p x xs (p x); 33.69/16.23 33.69/16.23 takeWhile3 p Nil = Nil; 33.69/16.23 takeWhile3 vx vy = takeWhile2 vx vy; 33.69/16.23 33.69/16.23 toEnumChar :: MyInt -> Main.Char; 33.69/16.23 toEnumChar = primIntToChar; 33.69/16.23 33.69/16.23 } 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (5) Narrow (SOUND) 33.69/16.23 Haskell To QDPs 33.69/16.23 33.69/16.23 digraph dp_graph { 33.69/16.23 node [outthreshold=100, inthreshold=100];1[label="enumFromChar",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 33.69/16.23 3[label="enumFromChar vz3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 33.69/16.23 4[label="map toEnumChar (enumFromToMyInt (fromEnumChar vz3) (fromEnumChar maxBoundChar))",fontsize=16,color="black",shape="box"];4 -> 5[label="",style="solid", color="black", weight=3]; 33.69/16.23 5[label="map toEnumChar (numericEnumFromTo (fromEnumChar vz3) (fromEnumChar maxBoundChar))",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 33.69/16.23 6[label="map toEnumChar (takeWhile (flip ltEsMyInt (fromEnumChar maxBoundChar)) (numericEnumFrom (fromEnumChar vz3)))",fontsize=16,color="black",shape="box"];6 -> 7[label="",style="solid", color="black", weight=3]; 33.69/16.23 7[label="map toEnumChar (takeWhile (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Cons (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];7 -> 8[label="",style="solid", color="black", weight=3]; 33.69/16.23 8[label="map toEnumChar (takeWhile2 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Cons (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];8 -> 9[label="",style="solid", color="black", weight=3]; 33.69/16.23 9[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero))))) (flip ltEsMyInt (fromEnumChar maxBoundChar) (fromEnumChar vz3)))",fontsize=16,color="black",shape="box"];9 -> 10[label="",style="solid", color="black", weight=3]; 33.69/16.23 10[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero))))) (ltEsMyInt (fromEnumChar vz3) (fromEnumChar maxBoundChar)))",fontsize=16,color="black",shape="box"];10 -> 11[label="",style="solid", color="black", weight=3]; 33.69/16.23 11[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero))))) (fsEsOrdering (compareMyInt (fromEnumChar vz3) (fromEnumChar maxBoundChar)) GT))",fontsize=16,color="black",shape="box"];11 -> 12[label="",style="solid", color="black", weight=3]; 33.69/16.23 12[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (compareMyInt (fromEnumChar vz3) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 33.69/16.23 13[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (fromEnumChar vz3) (dsEm numericEnumFrom (psMyInt (fromEnumChar vz3) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (fromEnumChar vz3) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];13 -> 14[label="",style="solid", color="black", weight=3]; 33.69/16.23 14[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (primCharToInt vz3) (dsEm numericEnumFrom (psMyInt (primCharToInt vz3) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primCharToInt vz3) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="burlywood",shape="box"];539[label="vz3/Char vz30",fontsize=10,color="white",style="solid",shape="box"];14 -> 539[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 539 -> 15[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 15[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (primCharToInt (Char vz30)) (dsEm numericEnumFrom (psMyInt (primCharToInt (Char vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primCharToInt (Char vz30)) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];15 -> 16[label="",style="solid", color="black", weight=3]; 33.69/16.23 16[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) vz30 (dsEm numericEnumFrom (psMyInt vz30 (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt vz30 (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="burlywood",shape="box"];540[label="vz30/Pos vz300",fontsize=10,color="white",style="solid",shape="box"];16 -> 540[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 540 -> 17[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 541[label="vz30/Neg vz300",fontsize=10,color="white",style="solid",shape="box"];16 -> 541[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 541 -> 18[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 17[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Pos vz300) (dsEm numericEnumFrom (psMyInt (Pos vz300) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos vz300) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="burlywood",shape="box"];542[label="vz300/Succ vz3000",fontsize=10,color="white",style="solid",shape="box"];17 -> 542[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 542 -> 19[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 543[label="vz300/Zero",fontsize=10,color="white",style="solid",shape="box"];17 -> 543[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 543 -> 20[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 18[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Neg vz300) (dsEm numericEnumFrom (psMyInt (Neg vz300) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg vz300) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="burlywood",shape="box"];544[label="vz300/Succ vz3000",fontsize=10,color="white",style="solid",shape="box"];18 -> 544[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 544 -> 21[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 545[label="vz300/Zero",fontsize=10,color="white",style="solid",shape="box"];18 -> 545[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 545 -> 22[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 19[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Pos (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ vz3000)) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];19 -> 23[label="",style="solid", color="black", weight=3]; 33.69/16.23 20[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];20 -> 24[label="",style="solid", color="black", weight=3]; 33.69/16.23 21[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Neg (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz3000)) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];21 -> 25[label="",style="solid", color="black", weight=3]; 33.69/16.23 22[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (fromEnumChar maxBoundChar)) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg Zero) (fromEnumChar maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];22 -> 26[label="",style="solid", color="black", weight=3]; 33.69/16.23 23[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt maxBoundChar)) (Pos (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ vz3000)) (primCharToInt maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];23 -> 27[label="",style="solid", color="black", weight=3]; 33.69/16.23 24[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt maxBoundChar)) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (primCharToInt maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];24 -> 28[label="",style="solid", color="black", weight=3]; 33.69/16.23 25[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt maxBoundChar)) (Neg (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz3000)) (primCharToInt maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];25 -> 29[label="",style="solid", color="black", weight=3]; 33.69/16.23 26[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt maxBoundChar)) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg Zero) (primCharToInt maxBoundChar)) GT)))",fontsize=16,color="black",shape="box"];26 -> 30[label="",style="solid", color="black", weight=3]; 33.69/16.23 27 -> 31[label="",style="dashed", color="red", weight=0]; 33.69/16.23 27[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ vz3000)) (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) GT)))",fontsize=16,color="magenta"];27 -> 32[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 27 -> 33[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 28 -> 34[label="",style="dashed", color="red", weight=0]; 33.69/16.23 28[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) GT)))",fontsize=16,color="magenta"];28 -> 35[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 29 -> 36[label="",style="dashed", color="red", weight=0]; 33.69/16.23 29[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Neg (Succ vz3000)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz3000)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz3000)) (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) GT)))",fontsize=16,color="magenta"];29 -> 37[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 29 -> 38[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 30 -> 39[label="",style="dashed", color="red", weight=0]; 33.69/16.23 30[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg Zero) (primCharToInt (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) GT)))",fontsize=16,color="magenta"];30 -> 40[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 32[label="vz3000",fontsize=16,color="green",shape="box"];33[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];31[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ vz5))))) (Pos (Succ vz6)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz6)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ vz6)) (primCharToInt (Char (Pos (Succ vz5))))) GT)))",fontsize=16,color="black",shape="triangle"];31 -> 41[label="",style="solid", color="black", weight=3]; 33.69/16.23 35[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];34[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ vz8))))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (primCharToInt (Char (Pos (Succ vz8))))) GT)))",fontsize=16,color="black",shape="triangle"];34 -> 42[label="",style="solid", color="black", weight=3]; 33.69/16.23 37[label="vz3000",fontsize=16,color="green",shape="box"];38[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];36[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ vz10))))) (Neg (Succ vz11)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz11)) (primCharToInt (Char (Pos (Succ vz10))))) GT)))",fontsize=16,color="black",shape="triangle"];36 -> 43[label="",style="solid", color="black", weight=3]; 33.69/16.23 40[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];39[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (primCharToInt (Char (Pos (Succ vz13))))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg Zero) (primCharToInt (Char (Pos (Succ vz13))))) GT)))",fontsize=16,color="black",shape="triangle"];39 -> 44[label="",style="solid", color="black", weight=3]; 33.69/16.23 41[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz5))) (Pos (Succ vz6)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz6)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ vz6)) (Pos (Succ vz5))) GT)))",fontsize=16,color="black",shape="triangle"];41 -> 45[label="",style="solid", color="black", weight=3]; 33.69/16.23 42[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="triangle"];42 -> 46[label="",style="solid", color="black", weight=3]; 33.69/16.23 43[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Neg (Succ vz11)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz11)) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="triangle"];43 -> 47[label="",style="solid", color="black", weight=3]; 33.69/16.23 44[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg Zero) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];44 -> 48[label="",style="solid", color="black", weight=3]; 33.69/16.23 45 -> 446[label="",style="dashed", color="red", weight=0]; 33.69/16.23 45[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz5))) (Pos (Succ vz6)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz6)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat (Succ vz6) (Succ vz5)) GT)))",fontsize=16,color="magenta"];45 -> 447[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 45 -> 448[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 45 -> 449[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 45 -> 450[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 46[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat Zero (Succ vz8)) GT)))",fontsize=16,color="black",shape="box"];46 -> 50[label="",style="solid", color="black", weight=3]; 33.69/16.23 47[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Neg (Succ vz11)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering LT GT)))",fontsize=16,color="black",shape="box"];47 -> 51[label="",style="solid", color="black", weight=3]; 33.69/16.23 48[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering LT GT)))",fontsize=16,color="black",shape="box"];48 -> 52[label="",style="solid", color="black", weight=3]; 33.69/16.23 447[label="Succ vz5",fontsize=16,color="green",shape="box"];448[label="Succ vz6",fontsize=16,color="green",shape="box"];449[label="vz6",fontsize=16,color="green",shape="box"];450[label="vz5",fontsize=16,color="green",shape="box"];446[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat vz31 vz32) GT)))",fontsize=16,color="burlywood",shape="triangle"];546[label="vz31/Succ vz310",fontsize=10,color="white",style="solid",shape="box"];446 -> 546[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 546 -> 491[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 547[label="vz31/Zero",fontsize=10,color="white",style="solid",shape="box"];446 -> 547[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 547 -> 492[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 50[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering LT GT)))",fontsize=16,color="black",shape="box"];50 -> 55[label="",style="solid", color="black", weight=3]; 33.69/16.23 51[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Neg (Succ vz11)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (not MyFalse))",fontsize=16,color="black",shape="box"];51 -> 56[label="",style="solid", color="black", weight=3]; 33.69/16.23 52[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (not MyFalse))",fontsize=16,color="black",shape="box"];52 -> 57[label="",style="solid", color="black", weight=3]; 33.69/16.23 491[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat (Succ vz310) vz32) GT)))",fontsize=16,color="burlywood",shape="box"];548[label="vz32/Succ vz320",fontsize=10,color="white",style="solid",shape="box"];491 -> 548[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 548 -> 493[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 549[label="vz32/Zero",fontsize=10,color="white",style="solid",shape="box"];491 -> 549[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 549 -> 494[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 492[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat Zero vz32) GT)))",fontsize=16,color="burlywood",shape="box"];550[label="vz32/Succ vz320",fontsize=10,color="white",style="solid",shape="box"];492 -> 550[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 550 -> 495[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 551[label="vz32/Zero",fontsize=10,color="white",style="solid",shape="box"];492 -> 551[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 551 -> 496[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 55[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not MyFalse))",fontsize=16,color="black",shape="box"];55 -> 62[label="",style="solid", color="black", weight=3]; 33.69/16.23 56[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Neg (Succ vz11)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) MyTrue)",fontsize=16,color="black",shape="box"];56 -> 63[label="",style="solid", color="black", weight=3]; 33.69/16.23 57[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (Neg Zero) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) MyTrue)",fontsize=16,color="black",shape="box"];57 -> 64[label="",style="solid", color="black", weight=3]; 33.69/16.23 493[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat (Succ vz310) (Succ vz320)) GT)))",fontsize=16,color="black",shape="box"];493 -> 497[label="",style="solid", color="black", weight=3]; 33.69/16.23 494[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat (Succ vz310) Zero) GT)))",fontsize=16,color="black",shape="box"];494 -> 498[label="",style="solid", color="black", weight=3]; 33.69/16.23 495[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat Zero (Succ vz320)) GT)))",fontsize=16,color="black",shape="box"];495 -> 499[label="",style="solid", color="black", weight=3]; 33.69/16.23 496[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat Zero Zero) GT)))",fontsize=16,color="black",shape="box"];496 -> 500[label="",style="solid", color="black", weight=3]; 33.69/16.23 62[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) MyTrue)",fontsize=16,color="black",shape="box"];62 -> 69[label="",style="solid", color="black", weight=3]; 33.69/16.23 63[label="map toEnumChar (Cons (Neg (Succ vz11)) (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];63 -> 70[label="",style="solid", color="black", weight=3]; 33.69/16.23 64[label="map toEnumChar (Cons (Neg Zero) (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];64 -> 71[label="",style="solid", color="black", weight=3]; 33.69/16.23 497 -> 446[label="",style="dashed", color="red", weight=0]; 33.69/16.23 497[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpNat vz310 vz320) GT)))",fontsize=16,color="magenta"];497 -> 501[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 497 -> 502[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 498[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering GT GT)))",fontsize=16,color="black",shape="box"];498 -> 503[label="",style="solid", color="black", weight=3]; 33.69/16.23 499[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering LT GT)))",fontsize=16,color="black",shape="box"];499 -> 504[label="",style="solid", color="black", weight=3]; 33.69/16.23 500[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering EQ GT)))",fontsize=16,color="black",shape="box"];500 -> 505[label="",style="solid", color="black", weight=3]; 33.69/16.23 69[label="map toEnumChar (Cons (Pos Zero) (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];69 -> 77[label="",style="solid", color="black", weight=3]; 33.69/16.23 70[label="Cons (toEnumChar (Neg (Succ vz11))) (map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="green",shape="box"];70 -> 78[label="",style="dashed", color="green", weight=3]; 33.69/16.23 70 -> 79[label="",style="dashed", color="green", weight=3]; 33.69/16.23 71[label="Cons (toEnumChar (Neg Zero)) (map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="green",shape="box"];71 -> 80[label="",style="dashed", color="green", weight=3]; 33.69/16.23 71 -> 81[label="",style="dashed", color="green", weight=3]; 33.69/16.23 501[label="vz320",fontsize=16,color="green",shape="box"];502[label="vz310",fontsize=16,color="green",shape="box"];503[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not MyTrue))",fontsize=16,color="black",shape="box"];503 -> 506[label="",style="solid", color="black", weight=3]; 33.69/16.23 504[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not MyFalse))",fontsize=16,color="black",shape="triangle"];504 -> 507[label="",style="solid", color="black", weight=3]; 33.69/16.23 505 -> 504[label="",style="dashed", color="red", weight=0]; 33.69/16.23 505[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (not MyFalse))",fontsize=16,color="magenta"];77[label="Cons (toEnumChar (Pos Zero)) (map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="green",shape="box"];77 -> 89[label="",style="dashed", color="green", weight=3]; 33.69/16.23 77 -> 90[label="",style="dashed", color="green", weight=3]; 33.69/16.23 78[label="toEnumChar (Neg (Succ vz11))",fontsize=16,color="black",shape="box"];78 -> 91[label="",style="solid", color="black", weight=3]; 33.69/16.23 79[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];79 -> 92[label="",style="solid", color="black", weight=3]; 33.69/16.23 80[label="toEnumChar (Neg Zero)",fontsize=16,color="black",shape="box"];80 -> 93[label="",style="solid", color="black", weight=3]; 33.69/16.23 81[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (dsEm numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];81 -> 94[label="",style="solid", color="black", weight=3]; 33.69/16.23 506[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) MyFalse)",fontsize=16,color="black",shape="box"];506 -> 508[label="",style="solid", color="black", weight=3]; 33.69/16.23 507[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) MyTrue)",fontsize=16,color="black",shape="box"];507 -> 509[label="",style="solid", color="black", weight=3]; 33.69/16.23 89[label="toEnumChar (Pos Zero)",fontsize=16,color="black",shape="box"];89 -> 102[label="",style="solid", color="black", weight=3]; 33.69/16.23 90[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];90 -> 103[label="",style="solid", color="black", weight=3]; 33.69/16.23 91[label="primIntToChar (Neg (Succ vz11))",fontsize=16,color="black",shape="box"];91 -> 104[label="",style="solid", color="black", weight=3]; 33.69/16.23 92[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (seq (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];92 -> 105[label="",style="solid", color="black", weight=3]; 33.69/16.23 93[label="primIntToChar (Neg Zero)",fontsize=16,color="black",shape="box"];93 -> 106[label="",style="solid", color="black", weight=3]; 33.69/16.23 94[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (seq (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];94 -> 107[label="",style="solid", color="black", weight=3]; 33.69/16.23 508[label="map toEnumChar (takeWhile0 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) otherwise)",fontsize=16,color="black",shape="box"];508 -> 510[label="",style="solid", color="black", weight=3]; 33.69/16.23 509[label="map toEnumChar (Cons (Pos (Succ vz30)) (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];509 -> 511[label="",style="solid", color="black", weight=3]; 33.69/16.23 102[label="primIntToChar (Pos Zero)",fontsize=16,color="black",shape="box"];102 -> 116[label="",style="solid", color="black", weight=3]; 33.69/16.23 103[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (seq (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];103 -> 117[label="",style="solid", color="black", weight=3]; 33.69/16.23 104[label="Char (Neg (Succ vz11))",fontsize=16,color="green",shape="box"];105[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (enforceWHNF (WHNF (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];105 -> 118[label="",style="solid", color="black", weight=3]; 33.69/16.23 106[label="Char (Neg Zero)",fontsize=16,color="green",shape="box"];107[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (enforceWHNF (WHNF (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))) (numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];107 -> 119[label="",style="solid", color="black", weight=3]; 33.69/16.23 510[label="map toEnumChar (takeWhile0 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ vz30)) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) MyTrue)",fontsize=16,color="black",shape="box"];510 -> 512[label="",style="solid", color="black", weight=3]; 33.69/16.23 511[label="Cons (toEnumChar (Pos (Succ vz30))) (map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="green",shape="box"];511 -> 513[label="",style="dashed", color="green", weight=3]; 33.69/16.23 511 -> 514[label="",style="dashed", color="green", weight=3]; 33.69/16.23 116[label="Char (Pos Zero)",fontsize=16,color="green",shape="box"];117[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (enforceWHNF (WHNF (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];117 -> 132[label="",style="solid", color="black", weight=3]; 33.69/16.23 118[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (numericEnumFrom (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];118 -> 133[label="",style="solid", color="black", weight=3]; 33.69/16.23 119[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (numericEnumFrom (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];119 -> 134[label="",style="solid", color="black", weight=3]; 33.69/16.23 512[label="map toEnumChar Nil",fontsize=16,color="black",shape="box"];512 -> 515[label="",style="solid", color="black", weight=3]; 33.69/16.23 513[label="toEnumChar (Pos (Succ vz30))",fontsize=16,color="black",shape="box"];513 -> 516[label="",style="solid", color="black", weight=3]; 33.69/16.23 514[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (dsEm numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];514 -> 517[label="",style="solid", color="black", weight=3]; 33.69/16.23 132[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];132 -> 146[label="",style="solid", color="black", weight=3]; 33.69/16.23 133[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz10))) (Cons (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];133 -> 147[label="",style="solid", color="black", weight=3]; 33.69/16.23 134[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz13))) (Cons (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];134 -> 148[label="",style="solid", color="black", weight=3]; 33.69/16.23 515[label="Nil",fontsize=16,color="green",shape="box"];516[label="primIntToChar (Pos (Succ vz30))",fontsize=16,color="black",shape="box"];516 -> 518[label="",style="solid", color="black", weight=3]; 33.69/16.23 517[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (seq (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];517 -> 519[label="",style="solid", color="black", weight=3]; 33.69/16.23 146[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz8))) (Cons (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];146 -> 160[label="",style="solid", color="black", weight=3]; 33.69/16.23 147[label="map toEnumChar (takeWhile2 (flip ltEsMyInt (Pos (Succ vz10))) (Cons (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];147 -> 161[label="",style="solid", color="black", weight=3]; 33.69/16.23 148[label="map toEnumChar (takeWhile2 (flip ltEsMyInt (Pos (Succ vz13))) (Cons (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];148 -> 162[label="",style="solid", color="black", weight=3]; 33.69/16.23 518[label="Char (Pos (Succ vz30))",fontsize=16,color="green",shape="box"];519[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (enforceWHNF (WHNF (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))) (numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];519 -> 520[label="",style="solid", color="black", weight=3]; 33.69/16.23 160[label="map toEnumChar (takeWhile2 (flip ltEsMyInt (Pos (Succ vz8))) (Cons (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];160 -> 177[label="",style="solid", color="black", weight=3]; 33.69/16.23 161[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (flip ltEsMyInt (Pos (Succ vz10)) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];161 -> 178[label="",style="solid", color="black", weight=3]; 33.69/16.23 162[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (flip ltEsMyInt (Pos (Succ vz13)) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];162 -> 179[label="",style="solid", color="black", weight=3]; 33.69/16.23 520[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (numericEnumFrom (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];520 -> 521[label="",style="solid", color="black", weight=3]; 33.69/16.23 177[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (flip ltEsMyInt (Pos (Succ vz8)) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];177 -> 192[label="",style="solid", color="black", weight=3]; 33.69/16.23 178[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (ltEsMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz10))))",fontsize=16,color="black",shape="box"];178 -> 193[label="",style="solid", color="black", weight=3]; 33.69/16.23 179[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (ltEsMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz13))))",fontsize=16,color="black",shape="box"];179 -> 194[label="",style="solid", color="black", weight=3]; 33.69/16.23 521[label="map toEnumChar (takeWhile (flip ltEsMyInt (Pos (Succ vz29))) (Cons (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];521 -> 522[label="",style="solid", color="black", weight=3]; 33.69/16.23 192[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (ltEsMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz8))))",fontsize=16,color="black",shape="box"];192 -> 208[label="",style="solid", color="black", weight=3]; 33.69/16.23 193[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (fsEsOrdering (compareMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz10))) GT))",fontsize=16,color="black",shape="box"];193 -> 209[label="",style="solid", color="black", weight=3]; 33.69/16.23 194[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (fsEsOrdering (compareMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz13))) GT))",fontsize=16,color="black",shape="box"];194 -> 210[label="",style="solid", color="black", weight=3]; 33.69/16.23 522[label="map toEnumChar (takeWhile2 (flip ltEsMyInt (Pos (Succ vz29))) (Cons (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];522 -> 523[label="",style="solid", color="black", weight=3]; 33.69/16.23 208[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (fsEsOrdering (compareMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz8))) GT))",fontsize=16,color="black",shape="box"];208 -> 227[label="",style="solid", color="black", weight=3]; 33.69/16.23 209[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (compareMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];209 -> 228[label="",style="solid", color="black", weight=3]; 33.69/16.23 210[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (compareMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];210 -> 229[label="",style="solid", color="black", weight=3]; 33.69/16.23 523[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (flip ltEsMyInt (Pos (Succ vz29)) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];523 -> 524[label="",style="solid", color="black", weight=3]; 33.69/16.23 227[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (compareMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="box"];227 -> 244[label="",style="solid", color="black", weight=3]; 33.69/16.23 228[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (psMyInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];228 -> 245[label="",style="solid", color="black", weight=3]; 33.69/16.23 229[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (psMyInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];229 -> 246[label="",style="solid", color="black", weight=3]; 33.69/16.23 524[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (ltEsMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz29))))",fontsize=16,color="black",shape="box"];524 -> 525[label="",style="solid", color="black", weight=3]; 33.69/16.23 244[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="box"];244 -> 262[label="",style="solid", color="black", weight=3]; 33.69/16.23 245[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primPlusInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Neg (Succ vz11)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];245 -> 263[label="",style="solid", color="black", weight=3]; 33.69/16.23 246[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (primPlusInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Neg Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];246 -> 264[label="",style="solid", color="black", weight=3]; 33.69/16.23 525[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (fsEsOrdering (compareMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz29))) GT))",fontsize=16,color="black",shape="box"];525 -> 526[label="",style="solid", color="black", weight=3]; 33.69/16.23 262[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (primPlusInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="box"];262 -> 285[label="",style="solid", color="black", weight=3]; 33.69/16.23 263[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primPlusInt (Neg (Succ vz11)) (Pos (Succ Zero))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Neg (Succ vz11)) (Pos (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Neg (Succ vz11)) (Pos (Succ Zero))) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];263 -> 286[label="",style="solid", color="black", weight=3]; 33.69/16.23 264[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (primPlusInt (Neg Zero) (Pos (Succ Zero))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Neg Zero) (Pos (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Neg Zero) (Pos (Succ Zero))) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];264 -> 287[label="",style="solid", color="black", weight=3]; 33.69/16.23 526[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (compareMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz29))) GT)))",fontsize=16,color="black",shape="box"];526 -> 527[label="",style="solid", color="black", weight=3]; 33.69/16.23 285[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (primPlusInt (Pos Zero) (Pos (Succ Zero))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Pos Zero) (Pos (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Pos Zero) (Pos (Succ Zero))) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="box"];285 -> 303[label="",style="solid", color="black", weight=3]; 33.69/16.23 286[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primMinusNat (Succ Zero) (Succ vz11)) (dsEm numericEnumFrom (psMyInt (primMinusNat (Succ Zero) (Succ vz11)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primMinusNat (Succ Zero) (Succ vz11)) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];286 -> 304[label="",style="solid", color="black", weight=3]; 33.69/16.23 287[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (primMinusNat (Succ Zero) Zero) (dsEm numericEnumFrom (psMyInt (primMinusNat (Succ Zero) Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primMinusNat (Succ Zero) Zero) (Pos (Succ vz13))) GT)))",fontsize=16,color="black",shape="box"];287 -> 305[label="",style="solid", color="black", weight=3]; 33.69/16.23 527[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (psMyInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz29))) GT)))",fontsize=16,color="black",shape="box"];527 -> 528[label="",style="solid", color="black", weight=3]; 33.69/16.23 303[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos (primPlusNat Zero (Succ Zero))) (dsEm numericEnumFrom (psMyInt (Pos (primPlusNat Zero (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (primPlusNat Zero (Succ Zero))) (Pos (Succ vz8))) GT)))",fontsize=16,color="black",shape="box"];303 -> 322[label="",style="solid", color="black", weight=3]; 33.69/16.23 304[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primMinusNat Zero vz11) (dsEm numericEnumFrom (psMyInt (primMinusNat Zero vz11) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primMinusNat Zero vz11) (Pos (Succ vz10))) GT)))",fontsize=16,color="burlywood",shape="box"];552[label="vz11/Succ vz110",fontsize=10,color="white",style="solid",shape="box"];304 -> 552[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 552 -> 323[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 553[label="vz11/Zero",fontsize=10,color="white",style="solid",shape="box"];304 -> 553[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 553 -> 324[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 305 -> 41[label="",style="dashed", color="red", weight=0]; 33.69/16.23 305[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz13))) (Pos (Succ Zero)) (dsEm numericEnumFrom (psMyInt (Pos (Succ Zero)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ Zero)) (Pos (Succ vz13))) GT)))",fontsize=16,color="magenta"];305 -> 325[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 305 -> 326[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 528[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (primPlusInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Pos (Succ vz30)) (fromIntMyInt (Pos (Succ Zero)))) (Pos (Succ vz29))) GT)))",fontsize=16,color="black",shape="box"];528 -> 529[label="",style="solid", color="black", weight=3]; 33.69/16.23 322 -> 41[label="",style="dashed", color="red", weight=0]; 33.69/16.23 322[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz8))) (Pos (Succ Zero)) (dsEm numericEnumFrom (psMyInt (Pos (Succ Zero)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ Zero)) (Pos (Succ vz8))) GT)))",fontsize=16,color="magenta"];322 -> 346[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 322 -> 347[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 323[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primMinusNat Zero (Succ vz110)) (dsEm numericEnumFrom (psMyInt (primMinusNat Zero (Succ vz110)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primMinusNat Zero (Succ vz110)) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];323 -> 348[label="",style="solid", color="black", weight=3]; 33.69/16.23 324[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (primMinusNat Zero Zero) (dsEm numericEnumFrom (psMyInt (primMinusNat Zero Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primMinusNat Zero Zero) (Pos (Succ vz10))) GT)))",fontsize=16,color="black",shape="box"];324 -> 349[label="",style="solid", color="black", weight=3]; 33.69/16.23 325[label="Zero",fontsize=16,color="green",shape="box"];326[label="vz13",fontsize=16,color="green",shape="box"];529[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (primPlusInt (Pos (Succ vz30)) (Pos (Succ Zero))) (dsEm numericEnumFrom (psMyInt (primPlusInt (Pos (Succ vz30)) (Pos (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (primPlusInt (Pos (Succ vz30)) (Pos (Succ Zero))) (Pos (Succ vz29))) GT)))",fontsize=16,color="black",shape="box"];529 -> 530[label="",style="solid", color="black", weight=3]; 33.69/16.23 346[label="Zero",fontsize=16,color="green",shape="box"];347[label="vz8",fontsize=16,color="green",shape="box"];348 -> 43[label="",style="dashed", color="red", weight=0]; 33.69/16.23 348[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Neg (Succ vz110)) (dsEm numericEnumFrom (psMyInt (Neg (Succ vz110)) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Neg (Succ vz110)) (Pos (Succ vz10))) GT)))",fontsize=16,color="magenta"];348 -> 366[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 349 -> 42[label="",style="dashed", color="red", weight=0]; 33.69/16.23 349[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz10))) (Pos Zero) (dsEm numericEnumFrom (psMyInt (Pos Zero) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos Zero) (Pos (Succ vz10))) GT)))",fontsize=16,color="magenta"];349 -> 367[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 530[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (primPlusNat (Succ vz30) (Succ Zero))) (dsEm numericEnumFrom (psMyInt (Pos (primPlusNat (Succ vz30) (Succ Zero))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (primPlusNat (Succ vz30) (Succ Zero))) (Pos (Succ vz29))) GT)))",fontsize=16,color="black",shape="box"];530 -> 531[label="",style="solid", color="black", weight=3]; 33.69/16.23 366[label="vz110",fontsize=16,color="green",shape="box"];367[label="vz10",fontsize=16,color="green",shape="box"];531 -> 41[label="",style="dashed", color="red", weight=0]; 33.69/16.23 531[label="map toEnumChar (takeWhile1 (flip ltEsMyInt (Pos (Succ vz29))) (Pos (Succ (Succ (primPlusNat vz30 Zero)))) (dsEm numericEnumFrom (psMyInt (Pos (Succ (Succ (primPlusNat vz30 Zero)))) (fromIntMyInt (Pos (Succ Zero))))) (not (esEsOrdering (primCmpInt (Pos (Succ (Succ (primPlusNat vz30 Zero)))) (Pos (Succ vz29))) GT)))",fontsize=16,color="magenta"];531 -> 532[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 531 -> 533[label="",style="dashed", color="magenta", weight=3]; 33.69/16.23 532[label="Succ (primPlusNat vz30 Zero)",fontsize=16,color="green",shape="box"];532 -> 534[label="",style="dashed", color="green", weight=3]; 33.69/16.23 533[label="vz29",fontsize=16,color="green",shape="box"];534[label="primPlusNat vz30 Zero",fontsize=16,color="burlywood",shape="box"];554[label="vz30/Succ vz300",fontsize=10,color="white",style="solid",shape="box"];534 -> 554[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 554 -> 535[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 555[label="vz30/Zero",fontsize=10,color="white",style="solid",shape="box"];534 -> 555[label="",style="solid", color="burlywood", weight=9]; 33.69/16.23 555 -> 536[label="",style="solid", color="burlywood", weight=3]; 33.69/16.23 535[label="primPlusNat (Succ vz300) Zero",fontsize=16,color="black",shape="box"];535 -> 537[label="",style="solid", color="black", weight=3]; 33.69/16.23 536[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];536 -> 538[label="",style="solid", color="black", weight=3]; 33.69/16.23 537[label="Succ vz300",fontsize=16,color="green",shape="box"];538[label="Zero",fontsize=16,color="green",shape="box"];} 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (6) 33.69/16.23 Complex Obligation (AND) 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (7) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 new_map2(vz10, Main.Succ(vz110)) -> new_map2(vz10, vz110) 33.69/16.23 33.69/16.23 R is empty. 33.69/16.23 Q is empty. 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (8) QDPSizeChangeProof (EQUIVALENT) 33.69/16.23 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. 33.69/16.23 33.69/16.23 From the DPs we obtained the following set of size-change graphs: 33.69/16.23 *new_map2(vz10, Main.Succ(vz110)) -> new_map2(vz10, vz110) 33.69/16.23 The graph contains the following edges 1 >= 1, 2 > 2 33.69/16.23 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (9) 33.69/16.23 YES 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (10) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 new_map(vz29, vz30, Main.Succ(vz310), Main.Succ(vz320)) -> new_map(vz29, vz30, vz310, vz320) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map0(vz5, vz6) -> new_map(vz5, vz6, Main.Succ(vz6), Main.Succ(vz5)) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (11) QDPPairToRuleProof (EQUIVALENT) 33.69/16.23 The dependency pair new_map(vz29, vz30, Main.Succ(vz310), Main.Succ(vz320)) -> new_map(vz29, vz30, vz310, vz320) was transformed to the following new rules: 33.69/16.23 anew_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 the following new pairs maintain the fan-in: 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, anew_new_map(Main.Succ(vz6), Main.Succ(vz5))) 33.69/16.23 33.69/16.23 the following new pairs maintain the fan-out: 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (12) 33.69/16.23 Complex Obligation (AND) 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (13) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map0(vz5, vz6) -> new_map(vz5, vz6, Main.Succ(vz6), Main.Succ(vz5)) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, anew_new_map(Main.Succ(vz6), Main.Succ(vz5))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 anew_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 anew_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (14) DependencyGraphProof (EQUIVALENT) 33.69/16.23 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (15) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, anew_new_map(Main.Succ(vz6), Main.Succ(vz5))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 anew_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 anew_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (16) TransformationProof (EQUIVALENT) 33.69/16.23 By rewriting [LPAR04] the rule new_map0(vz5, vz6) -> H(vz5, vz6, anew_new_map(Main.Succ(vz6), Main.Succ(vz5))) at position [2] we obtained the following new rules [LPAR04]: 33.69/16.23 33.69/16.23 (new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)),new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5))) 33.69/16.23 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (17) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 anew_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 anew_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (18) UsableRulesProof (EQUIVALENT) 33.69/16.23 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (19) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 anew_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (20) QReductionProof (EQUIVALENT) 33.69/16.23 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 33.69/16.23 33.69/16.23 anew_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (21) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (22) InductionCalculusProof (EQUIVALENT) 33.69/16.23 Note that final constraints are written in bold face. 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) the following chains were created: 33.69/16.23 *We consider the chain H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5))) -> new_map(x3, x4, Main.Zero, Main.Succ(x5)), new_map(x6, x7, Main.Zero, Main.Succ(x8)) -> new_map0(x6, Main.Succ(new_primPlusNat(x7))) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map(x3, x4, Main.Zero, Main.Succ(x5))=new_map(x6, x7, Main.Zero, Main.Succ(x8)) ==> H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) the following chains were created: 33.69/16.23 *We consider the chain new_map(x36, x37, Main.Zero, Main.Succ(x38)) -> new_map0(x36, Main.Succ(new_primPlusNat(x37))), new_map0(x39, x40) -> H(x39, x40, new_new_map(x40, x39)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map0(x36, Main.Succ(new_primPlusNat(x37)))=new_map0(x39, x40) ==> new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) the following chains were created: 33.69/16.23 *We consider the chain H(x47, x48, cons_new_map(Main.Zero, Main.Zero)) -> new_map(x47, x48, Main.Zero, Main.Zero), new_map(x49, x50, Main.Zero, Main.Zero) -> new_map1(x49, x50) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map(x47, x48, Main.Zero, Main.Zero)=new_map(x49, x50, Main.Zero, Main.Zero) ==> H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) the following chains were created: 33.69/16.23 *We consider the chain new_map(x63, x64, Main.Zero, Main.Zero) -> new_map1(x63, x64), new_map1(x65, x66) -> new_map0(x65, Main.Succ(new_primPlusNat(x66))) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map1(x63, x64)=new_map1(x65, x66) ==> new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) the following chains were created: 33.69/16.23 *We consider the chain new_map1(x79, x80) -> new_map0(x79, Main.Succ(new_primPlusNat(x80))), new_map0(x81, x82) -> H(x81, x82, new_new_map(x82, x81)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map0(x79, Main.Succ(new_primPlusNat(x80)))=new_map0(x81, x82) ==> new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) the following chains were created: 33.69/16.23 *We consider the chain new_map0(x83, x84) -> H(x83, x84, new_new_map(x84, x83)), H(x85, x86, cons_new_map(Main.Zero, Main.Succ(x87))) -> new_map(x85, x86, Main.Zero, Main.Succ(x87)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (H(x83, x84, new_new_map(x84, x83))=H(x85, x86, cons_new_map(Main.Zero, Main.Succ(x87))) ==> new_map0(x83, x84)_>=_H(x83, x84, new_new_map(x84, x83))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_new_map(x84, x83)=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(x83, x84)_>=_H(x83, x84, new_new_map(x84, x83))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x84, x83)=cons_new_map(Main.Zero, Main.Succ(x87)) which results in the following new constraints: 33.69/16.23 33.69/16.23 (3) (new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x87)) & (\/x102:new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x102)) ==> new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100))) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 (4) (cons_new_map(Main.Zero, Main.Succ(x103))=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 (5) (cons_new_map(Main.Zero, Main.Zero)=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x102:new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x102)) ==> new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100))) with sigma = [x102 / x87] which results in the following new constraint: 33.69/16.23 33.69/16.23 (6) (new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100)) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (4) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (7) (new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We solved constraint (5) using rules (I), (II). 33.69/16.23 *We consider the chain new_map0(x90, x91) -> H(x90, x91, new_new_map(x91, x90)), H(x92, x93, cons_new_map(Main.Zero, Main.Zero)) -> new_map(x92, x93, Main.Zero, Main.Zero) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (H(x90, x91, new_new_map(x91, x90))=H(x92, x93, cons_new_map(Main.Zero, Main.Zero)) ==> new_map0(x90, x91)_>=_H(x90, x91, new_new_map(x91, x90))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_new_map(x91, x90)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x90, x91)_>=_H(x90, x91, new_new_map(x91, x90))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x91, x90)=cons_new_map(Main.Zero, Main.Zero) which results in the following new constraints: 33.69/16.23 33.69/16.23 (3) (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) & (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104))) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 (4) (cons_new_map(Main.Zero, Main.Succ(x106))=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(Main.Succ(x106), Main.Zero)_>=_H(Main.Succ(x106), Main.Zero, new_new_map(Main.Zero, Main.Succ(x106)))) 33.69/16.23 33.69/16.23 (5) (cons_new_map(Main.Zero, Main.Zero)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104))) with sigma = [ ] which results in the following new constraint: 33.69/16.23 33.69/16.23 (6) (new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104)) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We solved constraint (4) using rules (I), (II).We simplified constraint (5) using rules (I), (II) which results in the following new constraint: 33.69/16.23 33.69/16.23 (7) (new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 To summarize, we get the following constraints P__>=_ for the following pairs. 33.69/16.23 33.69/16.23 *H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 33.69/16.23 *(H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 *(new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 *(H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 33.69/16.23 *(new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 *(new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 *(new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100)) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104)) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (23) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (24) NonInfProof (EQUIVALENT) 33.69/16.23 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 33.69/16.23 33.69/16.23 Note that final constraints are written in bold face. 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) the following chains were created: 33.69/16.23 *We consider the chain H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5))) -> new_map(x3, x4, Main.Zero, Main.Succ(x5)), new_map(x6, x7, Main.Zero, Main.Succ(x8)) -> new_map0(x6, Main.Succ(new_primPlusNat(x7))) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map(x3, x4, Main.Zero, Main.Succ(x5))=new_map(x6, x7, Main.Zero, Main.Succ(x8)) ==> H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) the following chains were created: 33.69/16.23 *We consider the chain new_map(x36, x37, Main.Zero, Main.Succ(x38)) -> new_map0(x36, Main.Succ(new_primPlusNat(x37))), new_map0(x39, x40) -> H(x39, x40, new_new_map(x40, x39)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map0(x36, Main.Succ(new_primPlusNat(x37)))=new_map0(x39, x40) ==> new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) the following chains were created: 33.69/16.23 *We consider the chain H(x47, x48, cons_new_map(Main.Zero, Main.Zero)) -> new_map(x47, x48, Main.Zero, Main.Zero), new_map(x49, x50, Main.Zero, Main.Zero) -> new_map1(x49, x50) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map(x47, x48, Main.Zero, Main.Zero)=new_map(x49, x50, Main.Zero, Main.Zero) ==> H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) the following chains were created: 33.69/16.23 *We consider the chain new_map(x63, x64, Main.Zero, Main.Zero) -> new_map1(x63, x64), new_map1(x65, x66) -> new_map0(x65, Main.Succ(new_primPlusNat(x66))) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map1(x63, x64)=new_map1(x65, x66) ==> new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) the following chains were created: 33.69/16.23 *We consider the chain new_map1(x79, x80) -> new_map0(x79, Main.Succ(new_primPlusNat(x80))), new_map0(x81, x82) -> H(x81, x82, new_new_map(x82, x81)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (new_map0(x79, Main.Succ(new_primPlusNat(x80)))=new_map0(x81, x82) ==> new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 For Pair new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) the following chains were created: 33.69/16.23 *We consider the chain new_map0(x83, x84) -> H(x83, x84, new_new_map(x84, x83)), H(x85, x86, cons_new_map(Main.Zero, Main.Succ(x87))) -> new_map(x85, x86, Main.Zero, Main.Succ(x87)) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (H(x83, x84, new_new_map(x84, x83))=H(x85, x86, cons_new_map(Main.Zero, Main.Succ(x87))) ==> new_map0(x83, x84)_>=_H(x83, x84, new_new_map(x84, x83))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_new_map(x84, x83)=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(x83, x84)_>=_H(x83, x84, new_new_map(x84, x83))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x84, x83)=cons_new_map(Main.Zero, Main.Succ(x87)) which results in the following new constraints: 33.69/16.23 33.69/16.23 (3) (new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x87)) & (\/x102:new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x102)) ==> new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100))) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 (4) (cons_new_map(Main.Zero, Main.Succ(x103))=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 (5) (cons_new_map(Main.Zero, Main.Zero)=cons_new_map(Main.Zero, Main.Succ(x87)) ==> new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x102:new_new_map(x101, x100)=cons_new_map(Main.Zero, Main.Succ(x102)) ==> new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100))) with sigma = [x102 / x87] which results in the following new constraint: 33.69/16.23 33.69/16.23 (6) (new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100)) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (4) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (7) (new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We solved constraint (5) using rules (I), (II). 33.69/16.23 *We consider the chain new_map0(x90, x91) -> H(x90, x91, new_new_map(x91, x90)), H(x92, x93, cons_new_map(Main.Zero, Main.Zero)) -> new_map(x92, x93, Main.Zero, Main.Zero) which results in the following constraint: 33.69/16.23 33.69/16.23 (1) (H(x90, x91, new_new_map(x91, x90))=H(x92, x93, cons_new_map(Main.Zero, Main.Zero)) ==> new_map0(x90, x91)_>=_H(x90, x91, new_new_map(x91, x90))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 33.69/16.23 33.69/16.23 (2) (new_new_map(x91, x90)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x90, x91)_>=_H(x90, x91, new_new_map(x91, x90))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x91, x90)=cons_new_map(Main.Zero, Main.Zero) which results in the following new constraints: 33.69/16.23 33.69/16.23 (3) (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) & (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104))) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 (4) (cons_new_map(Main.Zero, Main.Succ(x106))=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(Main.Succ(x106), Main.Zero)_>=_H(Main.Succ(x106), Main.Zero, new_new_map(Main.Zero, Main.Succ(x106)))) 33.69/16.23 33.69/16.23 (5) (cons_new_map(Main.Zero, Main.Zero)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (new_new_map(x105, x104)=cons_new_map(Main.Zero, Main.Zero) ==> new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104))) with sigma = [ ] which results in the following new constraint: 33.69/16.23 33.69/16.23 (6) (new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104)) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 We solved constraint (4) using rules (I), (II).We simplified constraint (5) using rules (I), (II) which results in the following new constraint: 33.69/16.23 33.69/16.23 (7) (new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 To summarize, we get the following constraints P__>=_ for the following pairs. 33.69/16.23 33.69/16.23 *H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 33.69/16.23 *(H(x3, x4, cons_new_map(Main.Zero, Main.Succ(x5)))_>=_new_map(x3, x4, Main.Zero, Main.Succ(x5))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 *(new_map(x36, x37, Main.Zero, Main.Succ(x38))_>=_new_map0(x36, Main.Succ(new_primPlusNat(x37)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 *(H(x47, x48, cons_new_map(Main.Zero, Main.Zero))_>=_new_map(x47, x48, Main.Zero, Main.Zero)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 33.69/16.23 *(new_map(x63, x64, Main.Zero, Main.Zero)_>=_new_map1(x63, x64)) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 *(new_map1(x79, x80)_>=_new_map0(x79, Main.Succ(new_primPlusNat(x80)))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 *new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 *(new_map0(x100, x101)_>=_H(x100, x101, new_new_map(x101, x100)) ==> new_map0(Main.Succ(x100), Main.Succ(x101))_>=_H(Main.Succ(x100), Main.Succ(x101), new_new_map(Main.Succ(x101), Main.Succ(x100)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(Main.Succ(x103), Main.Zero)_>=_H(Main.Succ(x103), Main.Zero, new_new_map(Main.Zero, Main.Succ(x103)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(x104, x105)_>=_H(x104, x105, new_new_map(x105, x104)) ==> new_map0(Main.Succ(x104), Main.Succ(x105))_>=_H(Main.Succ(x104), Main.Succ(x105), new_new_map(Main.Succ(x105), Main.Succ(x104)))) 33.69/16.23 33.69/16.23 33.69/16.23 *(new_map0(Main.Zero, Main.Zero)_>=_H(Main.Zero, Main.Zero, new_new_map(Main.Zero, Main.Zero))) 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 33.69/16.23 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 33.69/16.23 33.69/16.23 Using the following integer polynomial ordering the resulting constraints can be solved 33.69/16.23 33.69/16.23 Polynomial interpretation [NONINF]: 33.69/16.23 33.69/16.23 POL(H(x_1, x_2, x_3)) = -1 + x_1 - x_2 - x_3 33.69/16.23 POL(Main.Succ(x_1)) = 1 + x_1 33.69/16.23 POL(Main.Zero) = 0 33.69/16.23 POL(c) = -1 33.69/16.23 POL(cons_new_map(x_1, x_2)) = 0 33.69/16.23 POL(new_map(x_1, x_2, x_3, x_4)) = -1 + x_1 - x_2 + x_3 33.69/16.23 POL(new_map0(x_1, x_2)) = -1 + x_1 - x_2 33.69/16.23 POL(new_map1(x_1, x_2)) = -1 + x_1 - x_2 33.69/16.23 POL(new_new_map(x_1, x_2)) = 0 33.69/16.23 POL(new_primPlusNat(x_1)) = x_1 33.69/16.23 33.69/16.23 33.69/16.23 The following pairs are in P_>: 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 The following pairs are in P_bound: 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 The following rules are usable: 33.69/16.23 Main.Zero -> new_primPlusNat(Main.Zero) 33.69/16.23 Main.Succ(vz300) -> new_primPlusNat(Main.Succ(vz300)) 33.69/16.23 new_new_map(vz310, vz320) -> new_new_map(Main.Succ(vz310), Main.Succ(vz320)) 33.69/16.23 cons_new_map(Main.Zero, Main.Succ(vz320)) -> new_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 cons_new_map(Main.Zero, Main.Zero) -> new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (25) 33.69/16.23 Complex Obligation (AND) 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (26) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map0(vz5, vz6) -> H(vz5, vz6, new_new_map(vz6, vz5)) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (27) DependencyGraphProof (EQUIVALENT) 33.69/16.23 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (28) 33.69/16.23 TRUE 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (29) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Succ(vz320))) -> new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Succ(vz320)) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 H(vz29, vz30, cons_new_map(Main.Zero, Main.Zero)) -> new_map(vz29, vz30, Main.Zero, Main.Zero) 33.69/16.23 new_map(vz29, vz30, Main.Zero, Main.Zero) -> new_map1(vz29, vz30) 33.69/16.23 new_map1(vz29, vz30) -> new_map0(vz29, Main.Succ(new_primPlusNat(vz30))) 33.69/16.23 33.69/16.23 The TRS R consists of the following rules: 33.69/16.23 33.69/16.23 new_new_map(Main.Succ(vz310), Main.Succ(vz320)) -> new_new_map(vz310, vz320) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(vz320)) -> cons_new_map(Main.Zero, Main.Succ(vz320)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) -> cons_new_map(Main.Zero, Main.Zero) 33.69/16.23 new_primPlusNat(Main.Zero) -> Main.Zero 33.69/16.23 new_primPlusNat(Main.Succ(vz300)) -> Main.Succ(vz300) 33.69/16.23 33.69/16.23 The set Q consists of the following terms: 33.69/16.23 33.69/16.23 new_primPlusNat(Main.Succ(x0)) 33.69/16.23 new_primPlusNat(Main.Zero) 33.69/16.23 new_new_map(Main.Succ(x0), Main.Succ(x1)) 33.69/16.23 new_new_map(Main.Zero, Main.Succ(x0)) 33.69/16.23 new_new_map(Main.Zero, Main.Zero) 33.69/16.23 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (30) DependencyGraphProof (EQUIVALENT) 33.69/16.23 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (31) 33.69/16.23 TRUE 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (32) 33.69/16.23 Obligation: 33.69/16.23 Q DP problem: 33.69/16.23 The TRS P consists of the following rules: 33.69/16.23 33.69/16.23 new_map(vz29, vz30, Main.Succ(vz310), Main.Succ(vz320)) -> new_map(vz29, vz30, vz310, vz320) 33.69/16.23 33.69/16.23 R is empty. 33.69/16.23 Q is empty. 33.69/16.23 We have to consider all minimal (P,Q,R)-chains. 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (33) QDPSizeChangeProof (EQUIVALENT) 33.69/16.23 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. 33.69/16.23 33.69/16.23 From the DPs we obtained the following set of size-change graphs: 33.69/16.23 *new_map(vz29, vz30, Main.Succ(vz310), Main.Succ(vz320)) -> new_map(vz29, vz30, vz310, vz320) 33.69/16.23 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 > 4 33.69/16.23 33.69/16.23 33.69/16.23 ---------------------------------------- 33.69/16.23 33.69/16.23 (34) 33.69/16.23 YES 33.75/16.30 EOF