10.40/4.18 YES 12.89/4.80 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 12.89/4.80 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 12.89/4.80 12.89/4.80 12.89/4.80 H-Termination with start terms of the given HASKELL could be proven: 12.89/4.80 12.89/4.80 (0) HASKELL 12.89/4.80 (1) BR [EQUIVALENT, 0 ms] 12.89/4.80 (2) HASKELL 12.89/4.80 (3) COR [EQUIVALENT, 0 ms] 12.89/4.80 (4) HASKELL 12.89/4.80 (5) Narrow [SOUND, 0 ms] 12.89/4.80 (6) AND 12.89/4.80 (7) QDP 12.89/4.80 (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.89/4.80 (9) YES 12.89/4.80 (10) QDP 12.89/4.80 (11) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.89/4.80 (12) YES 12.89/4.80 (13) QDP 12.89/4.80 (14) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.89/4.80 (15) YES 12.89/4.80 (16) QDP 12.89/4.80 (17) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.89/4.80 (18) YES 12.89/4.80 (19) QDP 12.89/4.80 (20) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.89/4.80 (21) YES 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (0) 12.89/4.80 Obligation: 12.89/4.80 mainModule Main 12.89/4.80 module Main where { 12.89/4.80 import qualified Prelude; 12.89/4.80 data Main.Char = Char MyInt ; 12.89/4.80 12.89/4.80 data MyBool = MyTrue | MyFalse ; 12.89/4.80 12.89/4.80 data MyInt = Pos Main.Nat | Neg Main.Nat ; 12.89/4.80 12.89/4.80 data Main.Nat = Succ Main.Nat | Zero ; 12.89/4.80 12.89/4.80 data Ordering = LT | EQ | GT ; 12.89/4.80 12.89/4.80 asAs :: MyBool -> MyBool -> MyBool; 12.89/4.80 asAs MyFalse x = MyFalse; 12.89/4.80 asAs MyTrue x = x; 12.89/4.80 12.89/4.80 compareMyInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 compareMyInt = primCmpInt; 12.89/4.80 12.89/4.80 error :: a; 12.89/4.80 error = stop MyTrue; 12.89/4.80 12.89/4.80 esEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 esEsOrdering LT LT = MyTrue; 12.89/4.80 esEsOrdering LT EQ = MyFalse; 12.89/4.80 esEsOrdering LT GT = MyFalse; 12.89/4.80 esEsOrdering EQ LT = MyFalse; 12.89/4.80 esEsOrdering EQ EQ = MyTrue; 12.89/4.80 esEsOrdering EQ GT = MyFalse; 12.89/4.80 esEsOrdering GT LT = MyFalse; 12.89/4.80 esEsOrdering GT EQ = MyFalse; 12.89/4.80 esEsOrdering GT GT = MyTrue; 12.89/4.80 12.89/4.80 fromEnumChar :: Main.Char -> MyInt; 12.89/4.80 fromEnumChar = primCharToInt; 12.89/4.80 12.89/4.80 fsEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 fsEsOrdering x y = not (esEsOrdering x y); 12.89/4.80 12.89/4.80 gtEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 gtEsMyInt x y = fsEsOrdering (compareMyInt x y) LT; 12.89/4.80 12.89/4.80 intToDigit :: MyInt -> Main.Char; 12.89/4.80 intToDigit i = intToDigit3 i; 12.89/4.80 12.89/4.80 intToDigit0 i MyTrue = Main.error; 12.89/4.80 12.89/4.80 intToDigit1 i MyTrue = toEnumChar (msMyInt (psMyInt (fromEnumChar (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.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) i) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 intToDigit1 i MyFalse = intToDigit0 i otherwise; 12.89/4.80 12.89/4.80 intToDigit2 i MyTrue = toEnumChar (psMyInt (fromEnumChar (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.Zero))))))))))))))))))))))))))))))))))))))))))))))))))) i); 12.89/4.80 intToDigit2 i MyFalse = intToDigit1 i (asAs (gtEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))) (ltEsMyInt i (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.Zero)))))))))))))))))); 12.89/4.80 12.89/4.80 intToDigit3 i = intToDigit2 i (asAs (gtEsMyInt i (Main.Pos Main.Zero)) (ltEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 12.89/4.80 ltEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 12.89/4.80 12.89/4.80 msMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 msMyInt = primMinusInt; 12.89/4.80 12.89/4.80 not :: MyBool -> MyBool; 12.89/4.80 not MyTrue = MyFalse; 12.89/4.80 not MyFalse = MyTrue; 12.89/4.80 12.89/4.80 otherwise :: MyBool; 12.89/4.80 otherwise = MyTrue; 12.89/4.80 12.89/4.80 primCharToInt :: Main.Char -> MyInt; 12.89/4.80 primCharToInt (Main.Char x) = x; 12.89/4.80 12.89/4.80 primCmpInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 12.89/4.80 12.89/4.80 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 12.89/4.80 primCmpNat Main.Zero Main.Zero = EQ; 12.89/4.80 primCmpNat Main.Zero (Main.Succ y) = LT; 12.89/4.80 primCmpNat (Main.Succ x) Main.Zero = GT; 12.89/4.80 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 12.89/4.80 12.89/4.80 primIntToChar :: MyInt -> Main.Char; 12.89/4.80 primIntToChar x = Main.Char x; 12.89/4.80 12.89/4.80 primMinusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 12.89/4.80 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 12.89/4.80 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 12.89/4.80 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 12.89/4.80 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primPlusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 12.89/4.80 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 12.89/4.80 12.89/4.80 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 12.89/4.80 primPlusNat Main.Zero Main.Zero = Main.Zero; 12.89/4.80 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 12.89/4.80 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 12.89/4.80 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 12.89/4.80 12.89/4.80 psMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 psMyInt = primPlusInt; 12.89/4.80 12.89/4.80 stop :: MyBool -> a; 12.89/4.80 stop MyFalse = stop MyFalse; 12.89/4.80 12.89/4.80 toEnumChar :: MyInt -> Main.Char; 12.89/4.80 toEnumChar = primIntToChar; 12.89/4.80 12.89/4.80 } 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (1) BR (EQUIVALENT) 12.89/4.80 Replaced joker patterns by fresh variables and removed binding patterns. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (2) 12.89/4.80 Obligation: 12.89/4.80 mainModule Main 12.89/4.80 module Main where { 12.89/4.80 import qualified Prelude; 12.89/4.80 data Main.Char = Char MyInt ; 12.89/4.80 12.89/4.80 data MyBool = MyTrue | MyFalse ; 12.89/4.80 12.89/4.80 data MyInt = Pos Main.Nat | Neg Main.Nat ; 12.89/4.80 12.89/4.80 data Main.Nat = Succ Main.Nat | Zero ; 12.89/4.80 12.89/4.80 data Ordering = LT | EQ | GT ; 12.89/4.80 12.89/4.80 asAs :: MyBool -> MyBool -> MyBool; 12.89/4.80 asAs MyFalse x = MyFalse; 12.89/4.80 asAs MyTrue x = x; 12.89/4.80 12.89/4.80 compareMyInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 compareMyInt = primCmpInt; 12.89/4.80 12.89/4.80 error :: a; 12.89/4.80 error = stop MyTrue; 12.89/4.80 12.89/4.80 esEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 esEsOrdering LT LT = MyTrue; 12.89/4.80 esEsOrdering LT EQ = MyFalse; 12.89/4.80 esEsOrdering LT GT = MyFalse; 12.89/4.80 esEsOrdering EQ LT = MyFalse; 12.89/4.80 esEsOrdering EQ EQ = MyTrue; 12.89/4.80 esEsOrdering EQ GT = MyFalse; 12.89/4.80 esEsOrdering GT LT = MyFalse; 12.89/4.80 esEsOrdering GT EQ = MyFalse; 12.89/4.80 esEsOrdering GT GT = MyTrue; 12.89/4.80 12.89/4.80 fromEnumChar :: Main.Char -> MyInt; 12.89/4.80 fromEnumChar = primCharToInt; 12.89/4.80 12.89/4.80 fsEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 fsEsOrdering x y = not (esEsOrdering x y); 12.89/4.80 12.89/4.80 gtEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 gtEsMyInt x y = fsEsOrdering (compareMyInt x y) LT; 12.89/4.80 12.89/4.80 intToDigit :: MyInt -> Main.Char; 12.89/4.80 intToDigit i = intToDigit3 i; 12.89/4.80 12.89/4.80 intToDigit0 i MyTrue = Main.error; 12.89/4.80 12.89/4.80 intToDigit1 i MyTrue = toEnumChar (msMyInt (psMyInt (fromEnumChar (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.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) i) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 intToDigit1 i MyFalse = intToDigit0 i otherwise; 12.89/4.80 12.89/4.80 intToDigit2 i MyTrue = toEnumChar (psMyInt (fromEnumChar (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.Zero))))))))))))))))))))))))))))))))))))))))))))))))))) i); 12.89/4.80 intToDigit2 i MyFalse = intToDigit1 i (asAs (gtEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))) (ltEsMyInt i (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.Zero)))))))))))))))))); 12.89/4.80 12.89/4.80 intToDigit3 i = intToDigit2 i (asAs (gtEsMyInt i (Main.Pos Main.Zero)) (ltEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 12.89/4.80 ltEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 12.89/4.80 12.89/4.80 msMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 msMyInt = primMinusInt; 12.89/4.80 12.89/4.80 not :: MyBool -> MyBool; 12.89/4.80 not MyTrue = MyFalse; 12.89/4.80 not MyFalse = MyTrue; 12.89/4.80 12.89/4.80 otherwise :: MyBool; 12.89/4.80 otherwise = MyTrue; 12.89/4.80 12.89/4.80 primCharToInt :: Main.Char -> MyInt; 12.89/4.80 primCharToInt (Main.Char x) = x; 12.89/4.80 12.89/4.80 primCmpInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 12.89/4.80 12.89/4.80 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 12.89/4.80 primCmpNat Main.Zero Main.Zero = EQ; 12.89/4.80 primCmpNat Main.Zero (Main.Succ y) = LT; 12.89/4.80 primCmpNat (Main.Succ x) Main.Zero = GT; 12.89/4.80 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 12.89/4.80 12.89/4.80 primIntToChar :: MyInt -> Main.Char; 12.89/4.80 primIntToChar x = Main.Char x; 12.89/4.80 12.89/4.80 primMinusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 12.89/4.80 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 12.89/4.80 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 12.89/4.80 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 12.89/4.80 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primPlusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 12.89/4.80 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 12.89/4.80 12.89/4.80 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 12.89/4.80 primPlusNat Main.Zero Main.Zero = Main.Zero; 12.89/4.80 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 12.89/4.80 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 12.89/4.80 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 12.89/4.80 12.89/4.80 psMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 psMyInt = primPlusInt; 12.89/4.80 12.89/4.80 stop :: MyBool -> a; 12.89/4.80 stop MyFalse = stop MyFalse; 12.89/4.80 12.89/4.80 toEnumChar :: MyInt -> Main.Char; 12.89/4.80 toEnumChar = primIntToChar; 12.89/4.80 12.89/4.80 } 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (3) COR (EQUIVALENT) 12.89/4.80 Cond Reductions: 12.89/4.80 The following Function with conditions 12.89/4.80 "undefined |Falseundefined; 12.89/4.80 " 12.89/4.80 is transformed to 12.89/4.80 "undefined = undefined1; 12.89/4.80 " 12.89/4.80 "undefined0 True = undefined; 12.89/4.80 " 12.89/4.80 "undefined1 = undefined0 False; 12.89/4.80 " 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (4) 12.89/4.80 Obligation: 12.89/4.80 mainModule Main 12.89/4.80 module Main where { 12.89/4.80 import qualified Prelude; 12.89/4.80 data Main.Char = Char MyInt ; 12.89/4.80 12.89/4.80 data MyBool = MyTrue | MyFalse ; 12.89/4.80 12.89/4.80 data MyInt = Pos Main.Nat | Neg Main.Nat ; 12.89/4.80 12.89/4.80 data Main.Nat = Succ Main.Nat | Zero ; 12.89/4.80 12.89/4.80 data Ordering = LT | EQ | GT ; 12.89/4.80 12.89/4.80 asAs :: MyBool -> MyBool -> MyBool; 12.89/4.80 asAs MyFalse x = MyFalse; 12.89/4.80 asAs MyTrue x = x; 12.89/4.80 12.89/4.80 compareMyInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 compareMyInt = primCmpInt; 12.89/4.80 12.89/4.80 error :: a; 12.89/4.80 error = stop MyTrue; 12.89/4.80 12.89/4.80 esEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 esEsOrdering LT LT = MyTrue; 12.89/4.80 esEsOrdering LT EQ = MyFalse; 12.89/4.80 esEsOrdering LT GT = MyFalse; 12.89/4.80 esEsOrdering EQ LT = MyFalse; 12.89/4.80 esEsOrdering EQ EQ = MyTrue; 12.89/4.80 esEsOrdering EQ GT = MyFalse; 12.89/4.80 esEsOrdering GT LT = MyFalse; 12.89/4.80 esEsOrdering GT EQ = MyFalse; 12.89/4.80 esEsOrdering GT GT = MyTrue; 12.89/4.80 12.89/4.80 fromEnumChar :: Main.Char -> MyInt; 12.89/4.80 fromEnumChar = primCharToInt; 12.89/4.80 12.89/4.80 fsEsOrdering :: Ordering -> Ordering -> MyBool; 12.89/4.80 fsEsOrdering x y = not (esEsOrdering x y); 12.89/4.80 12.89/4.80 gtEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 gtEsMyInt x y = fsEsOrdering (compareMyInt x y) LT; 12.89/4.80 12.89/4.80 intToDigit :: MyInt -> Main.Char; 12.89/4.80 intToDigit i = intToDigit3 i; 12.89/4.80 12.89/4.80 intToDigit0 i MyTrue = Main.error; 12.89/4.80 12.89/4.80 intToDigit1 i MyTrue = toEnumChar (msMyInt (psMyInt (fromEnumChar (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.Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) i) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 intToDigit1 i MyFalse = intToDigit0 i otherwise; 12.89/4.80 12.89/4.80 intToDigit2 i MyTrue = toEnumChar (psMyInt (fromEnumChar (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.Zero))))))))))))))))))))))))))))))))))))))))))))))))))) i); 12.89/4.80 intToDigit2 i MyFalse = intToDigit1 i (asAs (gtEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))) (ltEsMyInt i (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.Zero)))))))))))))))))); 12.89/4.80 12.89/4.80 intToDigit3 i = intToDigit2 i (asAs (gtEsMyInt i (Main.Pos Main.Zero)) (ltEsMyInt i (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))); 12.89/4.80 12.89/4.80 ltEsMyInt :: MyInt -> MyInt -> MyBool; 12.89/4.80 ltEsMyInt x y = fsEsOrdering (compareMyInt x y) GT; 12.89/4.80 12.89/4.80 msMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 msMyInt = primMinusInt; 12.89/4.80 12.89/4.80 not :: MyBool -> MyBool; 12.89/4.80 not MyTrue = MyFalse; 12.89/4.80 not MyFalse = MyTrue; 12.89/4.80 12.89/4.80 otherwise :: MyBool; 12.89/4.80 otherwise = MyTrue; 12.89/4.80 12.89/4.80 primCharToInt :: Main.Char -> MyInt; 12.89/4.80 primCharToInt (Main.Char x) = x; 12.89/4.80 12.89/4.80 primCmpInt :: MyInt -> MyInt -> Ordering; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Pos Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Neg Main.Zero) (Main.Neg Main.Zero) = EQ; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Pos y) = primCmpNat x y; 12.89/4.80 primCmpInt (Main.Pos x) (Main.Neg y) = GT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Pos y) = LT; 12.89/4.80 primCmpInt (Main.Neg x) (Main.Neg y) = primCmpNat y x; 12.89/4.80 12.89/4.80 primCmpNat :: Main.Nat -> Main.Nat -> Ordering; 12.89/4.80 primCmpNat Main.Zero Main.Zero = EQ; 12.89/4.80 primCmpNat Main.Zero (Main.Succ y) = LT; 12.89/4.80 primCmpNat (Main.Succ x) Main.Zero = GT; 12.89/4.80 primCmpNat (Main.Succ x) (Main.Succ y) = primCmpNat x y; 12.89/4.80 12.89/4.80 primIntToChar :: MyInt -> Main.Char; 12.89/4.80 primIntToChar x = Main.Char x; 12.89/4.80 12.89/4.80 primMinusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 12.89/4.80 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 12.89/4.80 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 12.89/4.80 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 12.89/4.80 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 12.89/4.80 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 12.89/4.80 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 12.89/4.80 12.89/4.80 primPlusInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 primPlusInt (Main.Pos x) (Main.Neg y) = primMinusNat x y; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Pos y) = primMinusNat y x; 12.89/4.80 primPlusInt (Main.Neg x) (Main.Neg y) = Main.Neg (primPlusNat x y); 12.89/4.80 primPlusInt (Main.Pos x) (Main.Pos y) = Main.Pos (primPlusNat x y); 12.89/4.80 12.89/4.80 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 12.89/4.80 primPlusNat Main.Zero Main.Zero = Main.Zero; 12.89/4.80 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 12.89/4.80 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 12.89/4.80 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 12.89/4.80 12.89/4.80 psMyInt :: MyInt -> MyInt -> MyInt; 12.89/4.80 psMyInt = primPlusInt; 12.89/4.80 12.89/4.80 stop :: MyBool -> a; 12.89/4.80 stop MyFalse = stop MyFalse; 12.89/4.80 12.89/4.80 toEnumChar :: MyInt -> Main.Char; 12.89/4.80 toEnumChar = primIntToChar; 12.89/4.80 12.89/4.80 } 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (5) Narrow (SOUND) 12.89/4.80 Haskell To QDPs 12.89/4.80 12.89/4.80 digraph dp_graph { 12.89/4.80 node [outthreshold=100, inthreshold=100];1[label="intToDigit",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 12.89/4.80 3[label="intToDigit vx3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 12.89/4.80 4[label="intToDigit3 vx3",fontsize=16,color="black",shape="box"];4 -> 5[label="",style="solid", color="black", weight=3]; 12.89/4.80 5 -> 6[label="",style="dashed", color="red", weight=0]; 12.89/4.80 5[label="intToDigit2 vx3 (asAs (gtEsMyInt vx3 (Pos Zero)) (ltEsMyInt vx3 (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))",fontsize=16,color="magenta"];5 -> 7[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 5 -> 8[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 7[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))",fontsize=16,color="green",shape="box"];8[label="vx3",fontsize=16,color="green",shape="box"];6[label="intToDigit2 vx5 (asAs (gtEsMyInt vx5 (Pos Zero)) (ltEsMyInt vx5 (Pos (Succ vx6))))",fontsize=16,color="black",shape="triangle"];6 -> 9[label="",style="solid", color="black", weight=3]; 12.89/4.80 9[label="intToDigit2 vx5 (asAs (fsEsOrdering (compareMyInt vx5 (Pos Zero)) LT) (ltEsMyInt vx5 (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];9 -> 10[label="",style="solid", color="black", weight=3]; 12.89/4.80 10[label="intToDigit2 vx5 (asAs (not (esEsOrdering (compareMyInt vx5 (Pos Zero)) LT)) (ltEsMyInt vx5 (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];10 -> 11[label="",style="solid", color="black", weight=3]; 12.89/4.80 11[label="intToDigit2 vx5 (asAs (not (esEsOrdering (primCmpInt vx5 (Pos Zero)) LT)) (ltEsMyInt vx5 (Pos (Succ vx6))))",fontsize=16,color="burlywood",shape="box"];659[label="vx5/Pos vx50",fontsize=10,color="white",style="solid",shape="box"];11 -> 659[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 659 -> 12[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 660[label="vx5/Neg vx50",fontsize=10,color="white",style="solid",shape="box"];11 -> 660[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 660 -> 13[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 12[label="intToDigit2 (Pos vx50) (asAs (not (esEsOrdering (primCmpInt (Pos vx50) (Pos Zero)) LT)) (ltEsMyInt (Pos vx50) (Pos (Succ vx6))))",fontsize=16,color="burlywood",shape="box"];661[label="vx50/Succ vx500",fontsize=10,color="white",style="solid",shape="box"];12 -> 661[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 661 -> 14[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 662[label="vx50/Zero",fontsize=10,color="white",style="solid",shape="box"];12 -> 662[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 662 -> 15[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 13[label="intToDigit2 (Neg vx50) (asAs (not (esEsOrdering (primCmpInt (Neg vx50) (Pos Zero)) LT)) (ltEsMyInt (Neg vx50) (Pos (Succ vx6))))",fontsize=16,color="burlywood",shape="box"];663[label="vx50/Succ vx500",fontsize=10,color="white",style="solid",shape="box"];13 -> 663[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 663 -> 16[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 664[label="vx50/Zero",fontsize=10,color="white",style="solid",shape="box"];13 -> 664[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 664 -> 17[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 14[label="intToDigit2 (Pos (Succ vx500)) (asAs (not (esEsOrdering (primCmpInt (Pos (Succ vx500)) (Pos Zero)) LT)) (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];14 -> 18[label="",style="solid", color="black", weight=3]; 12.89/4.80 15[label="intToDigit2 (Pos Zero) (asAs (not (esEsOrdering (primCmpInt (Pos Zero) (Pos Zero)) LT)) (ltEsMyInt (Pos Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];15 -> 19[label="",style="solid", color="black", weight=3]; 12.89/4.80 16[label="intToDigit2 (Neg (Succ vx500)) (asAs (not (esEsOrdering (primCmpInt (Neg (Succ vx500)) (Pos Zero)) LT)) (ltEsMyInt (Neg (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];16 -> 20[label="",style="solid", color="black", weight=3]; 12.89/4.80 17[label="intToDigit2 (Neg Zero) (asAs (not (esEsOrdering (primCmpInt (Neg Zero) (Pos Zero)) LT)) (ltEsMyInt (Neg Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];17 -> 21[label="",style="solid", color="black", weight=3]; 12.89/4.80 18[label="intToDigit2 (Pos (Succ vx500)) (asAs (not (esEsOrdering (primCmpNat (Succ vx500) Zero) LT)) (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];18 -> 22[label="",style="solid", color="black", weight=3]; 12.89/4.80 19[label="intToDigit2 (Pos Zero) (asAs (not (esEsOrdering EQ LT)) (ltEsMyInt (Pos Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];19 -> 23[label="",style="solid", color="black", weight=3]; 12.89/4.80 20[label="intToDigit2 (Neg (Succ vx500)) (asAs (not (esEsOrdering LT LT)) (ltEsMyInt (Neg (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];20 -> 24[label="",style="solid", color="black", weight=3]; 12.89/4.80 21[label="intToDigit2 (Neg Zero) (asAs (not (esEsOrdering EQ LT)) (ltEsMyInt (Neg Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];21 -> 25[label="",style="solid", color="black", weight=3]; 12.89/4.80 22[label="intToDigit2 (Pos (Succ vx500)) (asAs (not (esEsOrdering GT LT)) (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];22 -> 26[label="",style="solid", color="black", weight=3]; 12.89/4.80 23[label="intToDigit2 (Pos Zero) (asAs (not MyFalse) (ltEsMyInt (Pos Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];23 -> 27[label="",style="solid", color="black", weight=3]; 12.89/4.80 24[label="intToDigit2 (Neg (Succ vx500)) (asAs (not MyTrue) (ltEsMyInt (Neg (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];24 -> 28[label="",style="solid", color="black", weight=3]; 12.89/4.80 25[label="intToDigit2 (Neg Zero) (asAs (not MyFalse) (ltEsMyInt (Neg Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];25 -> 29[label="",style="solid", color="black", weight=3]; 12.89/4.80 26[label="intToDigit2 (Pos (Succ vx500)) (asAs (not MyFalse) (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];26 -> 30[label="",style="solid", color="black", weight=3]; 12.89/4.80 27[label="intToDigit2 (Pos Zero) (asAs MyTrue (ltEsMyInt (Pos Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];27 -> 31[label="",style="solid", color="black", weight=3]; 12.89/4.80 28[label="intToDigit2 (Neg (Succ vx500)) (asAs MyFalse (ltEsMyInt (Neg (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];28 -> 32[label="",style="solid", color="black", weight=3]; 12.89/4.80 29[label="intToDigit2 (Neg Zero) (asAs MyTrue (ltEsMyInt (Neg Zero) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];29 -> 33[label="",style="solid", color="black", weight=3]; 12.89/4.80 30[label="intToDigit2 (Pos (Succ vx500)) (asAs MyTrue (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6))))",fontsize=16,color="black",shape="box"];30 -> 34[label="",style="solid", color="black", weight=3]; 12.89/4.80 31[label="intToDigit2 (Pos Zero) (ltEsMyInt (Pos Zero) (Pos (Succ vx6)))",fontsize=16,color="black",shape="box"];31 -> 35[label="",style="solid", color="black", weight=3]; 12.89/4.80 32[label="intToDigit2 (Neg (Succ vx500)) MyFalse",fontsize=16,color="black",shape="box"];32 -> 36[label="",style="solid", color="black", weight=3]; 12.89/4.80 33[label="intToDigit2 (Neg Zero) (ltEsMyInt (Neg Zero) (Pos (Succ vx6)))",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 12.89/4.80 34[label="intToDigit2 (Pos (Succ vx500)) (ltEsMyInt (Pos (Succ vx500)) (Pos (Succ vx6)))",fontsize=16,color="black",shape="box"];34 -> 38[label="",style="solid", color="black", weight=3]; 12.89/4.80 35[label="intToDigit2 (Pos Zero) (fsEsOrdering (compareMyInt (Pos Zero) (Pos (Succ vx6))) GT)",fontsize=16,color="black",shape="box"];35 -> 39[label="",style="solid", color="black", weight=3]; 12.89/4.80 36 -> 46[label="",style="dashed", color="red", weight=0]; 12.89/4.80 36[label="intToDigit1 (Neg (Succ vx500)) (asAs (gtEsMyInt (Neg (Succ vx500)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) (ltEsMyInt (Neg (Succ vx500)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))",fontsize=16,color="magenta"];36 -> 47[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 36 -> 48[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 36 -> 49[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 37[label="intToDigit2 (Neg Zero) (fsEsOrdering (compareMyInt (Neg Zero) (Pos (Succ vx6))) GT)",fontsize=16,color="black",shape="box"];37 -> 43[label="",style="solid", color="black", weight=3]; 12.89/4.80 38[label="intToDigit2 (Pos (Succ vx500)) (fsEsOrdering (compareMyInt (Pos (Succ vx500)) (Pos (Succ vx6))) GT)",fontsize=16,color="black",shape="box"];38 -> 44[label="",style="solid", color="black", weight=3]; 12.89/4.80 39[label="intToDigit2 (Pos Zero) (not (esEsOrdering (compareMyInt (Pos Zero) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];39 -> 45[label="",style="solid", color="black", weight=3]; 12.89/4.80 47[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))",fontsize=16,color="green",shape="box"];48[label="vx500",fontsize=16,color="green",shape="box"];49[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];46[label="intToDigit1 (Neg (Succ vx11)) (asAs (gtEsMyInt (Neg (Succ vx11)) (Pos (Succ vx12))) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="triangle"];46 -> 53[label="",style="solid", color="black", weight=3]; 12.89/4.80 43[label="intToDigit2 (Neg Zero) (not (esEsOrdering (compareMyInt (Neg Zero) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];43 -> 54[label="",style="solid", color="black", weight=3]; 12.89/4.80 44[label="intToDigit2 (Pos (Succ vx500)) (not (esEsOrdering (compareMyInt (Pos (Succ vx500)) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];44 -> 55[label="",style="solid", color="black", weight=3]; 12.89/4.80 45[label="intToDigit2 (Pos Zero) (not (esEsOrdering (primCmpInt (Pos Zero) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];45 -> 56[label="",style="solid", color="black", weight=3]; 12.89/4.80 53[label="intToDigit1 (Neg (Succ vx11)) (asAs (fsEsOrdering (compareMyInt (Neg (Succ vx11)) (Pos (Succ vx12))) LT) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];53 -> 57[label="",style="solid", color="black", weight=3]; 12.89/4.80 54[label="intToDigit2 (Neg Zero) (not (esEsOrdering (primCmpInt (Neg Zero) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];54 -> 58[label="",style="solid", color="black", weight=3]; 12.89/4.80 55[label="intToDigit2 (Pos (Succ vx500)) (not (esEsOrdering (primCmpInt (Pos (Succ vx500)) (Pos (Succ vx6))) GT))",fontsize=16,color="black",shape="box"];55 -> 59[label="",style="solid", color="black", weight=3]; 12.89/4.80 56[label="intToDigit2 (Pos Zero) (not (esEsOrdering (primCmpNat Zero (Succ vx6)) GT))",fontsize=16,color="black",shape="box"];56 -> 60[label="",style="solid", color="black", weight=3]; 12.89/4.80 57[label="intToDigit1 (Neg (Succ vx11)) (asAs (not (esEsOrdering (compareMyInt (Neg (Succ vx11)) (Pos (Succ vx12))) LT)) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];57 -> 61[label="",style="solid", color="black", weight=3]; 12.89/4.80 58[label="intToDigit2 (Neg Zero) (not (esEsOrdering LT GT))",fontsize=16,color="black",shape="box"];58 -> 62[label="",style="solid", color="black", weight=3]; 12.89/4.80 59 -> 214[label="",style="dashed", color="red", weight=0]; 12.89/4.80 59[label="intToDigit2 (Pos (Succ vx500)) (not (esEsOrdering (primCmpNat (Succ vx500) (Succ vx6)) GT))",fontsize=16,color="magenta"];59 -> 215[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 59 -> 216[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 59 -> 217[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 60[label="intToDigit2 (Pos Zero) (not (esEsOrdering LT GT))",fontsize=16,color="black",shape="box"];60 -> 64[label="",style="solid", color="black", weight=3]; 12.89/4.80 61[label="intToDigit1 (Neg (Succ vx11)) (asAs (not (esEsOrdering (primCmpInt (Neg (Succ vx11)) (Pos (Succ vx12))) LT)) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];61 -> 65[label="",style="solid", color="black", weight=3]; 12.89/4.80 62[label="intToDigit2 (Neg Zero) (not MyFalse)",fontsize=16,color="black",shape="box"];62 -> 66[label="",style="solid", color="black", weight=3]; 12.89/4.80 215[label="Succ vx500",fontsize=16,color="green",shape="box"];216[label="vx500",fontsize=16,color="green",shape="box"];217[label="Succ vx6",fontsize=16,color="green",shape="box"];214[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat vx33 vx34) GT))",fontsize=16,color="burlywood",shape="triangle"];665[label="vx33/Succ vx330",fontsize=10,color="white",style="solid",shape="box"];214 -> 665[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 665 -> 236[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 666[label="vx33/Zero",fontsize=10,color="white",style="solid",shape="box"];214 -> 666[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 666 -> 237[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 64[label="intToDigit2 (Pos Zero) (not MyFalse)",fontsize=16,color="black",shape="box"];64 -> 69[label="",style="solid", color="black", weight=3]; 12.89/4.80 65[label="intToDigit1 (Neg (Succ vx11)) (asAs (not (esEsOrdering LT LT)) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];65 -> 70[label="",style="solid", color="black", weight=3]; 12.89/4.80 66[label="intToDigit2 (Neg Zero) MyTrue",fontsize=16,color="black",shape="box"];66 -> 71[label="",style="solid", color="black", weight=3]; 12.89/4.80 236[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat (Succ vx330) vx34) GT))",fontsize=16,color="burlywood",shape="box"];667[label="vx34/Succ vx340",fontsize=10,color="white",style="solid",shape="box"];236 -> 667[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 667 -> 238[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 668[label="vx34/Zero",fontsize=10,color="white",style="solid",shape="box"];236 -> 668[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 668 -> 239[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 237[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat Zero vx34) GT))",fontsize=16,color="burlywood",shape="box"];669[label="vx34/Succ vx340",fontsize=10,color="white",style="solid",shape="box"];237 -> 669[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 669 -> 240[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 670[label="vx34/Zero",fontsize=10,color="white",style="solid",shape="box"];237 -> 670[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 670 -> 241[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 69[label="intToDigit2 (Pos Zero) MyTrue",fontsize=16,color="black",shape="box"];69 -> 76[label="",style="solid", color="black", weight=3]; 12.89/4.80 70[label="intToDigit1 (Neg (Succ vx11)) (asAs (not MyTrue) (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];70 -> 77[label="",style="solid", color="black", weight=3]; 12.89/4.80 71 -> 78[label="",style="dashed", color="red", weight=0]; 12.89/4.80 71[label="toEnumChar (psMyInt (fromEnumChar (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 Zero))))))))))))))))))))))))))))))))))))))))))))))))))) (Neg Zero))",fontsize=16,color="magenta"];71 -> 79[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 238[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat (Succ vx330) (Succ vx340)) GT))",fontsize=16,color="black",shape="box"];238 -> 242[label="",style="solid", color="black", weight=3]; 12.89/4.80 239[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat (Succ vx330) Zero) GT))",fontsize=16,color="black",shape="box"];239 -> 243[label="",style="solid", color="black", weight=3]; 12.89/4.80 240[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat Zero (Succ vx340)) GT))",fontsize=16,color="black",shape="box"];240 -> 244[label="",style="solid", color="black", weight=3]; 12.89/4.80 241[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat Zero Zero) GT))",fontsize=16,color="black",shape="box"];241 -> 245[label="",style="solid", color="black", weight=3]; 12.89/4.80 76 -> 84[label="",style="dashed", color="red", weight=0]; 12.89/4.80 76[label="toEnumChar (psMyInt (fromEnumChar (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 Zero))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos Zero))",fontsize=16,color="magenta"];76 -> 85[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 77[label="intToDigit1 (Neg (Succ vx11)) (asAs MyFalse (ltEsMyInt (Neg (Succ vx11)) (Pos (Succ vx13))))",fontsize=16,color="black",shape="box"];77 -> 86[label="",style="solid", color="black", weight=3]; 12.89/4.80 79[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 Zero))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];78[label="toEnumChar (psMyInt (fromEnumChar (Char (Pos (Succ vx15)))) (Neg Zero))",fontsize=16,color="black",shape="triangle"];78 -> 87[label="",style="solid", color="black", weight=3]; 12.89/4.80 242 -> 214[label="",style="dashed", color="red", weight=0]; 12.89/4.80 242[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering (primCmpNat vx330 vx340) GT))",fontsize=16,color="magenta"];242 -> 246[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 242 -> 247[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 243[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering GT GT))",fontsize=16,color="black",shape="box"];243 -> 248[label="",style="solid", color="black", weight=3]; 12.89/4.80 244[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering LT GT))",fontsize=16,color="black",shape="box"];244 -> 249[label="",style="solid", color="black", weight=3]; 12.89/4.80 245[label="intToDigit2 (Pos (Succ vx32)) (not (esEsOrdering EQ GT))",fontsize=16,color="black",shape="box"];245 -> 250[label="",style="solid", color="black", weight=3]; 12.89/4.80 85[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 Zero))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];84[label="toEnumChar (psMyInt (fromEnumChar (Char (Pos (Succ vx17)))) (Pos Zero))",fontsize=16,color="black",shape="triangle"];84 -> 93[label="",style="solid", color="black", weight=3]; 12.89/4.80 86[label="intToDigit1 (Neg (Succ vx11)) MyFalse",fontsize=16,color="black",shape="box"];86 -> 94[label="",style="solid", color="black", weight=3]; 12.89/4.80 87[label="primIntToChar (psMyInt (fromEnumChar (Char (Pos (Succ vx15)))) (Neg Zero))",fontsize=16,color="black",shape="box"];87 -> 95[label="",style="solid", color="black", weight=3]; 12.89/4.80 246[label="vx330",fontsize=16,color="green",shape="box"];247[label="vx340",fontsize=16,color="green",shape="box"];248[label="intToDigit2 (Pos (Succ vx32)) (not MyTrue)",fontsize=16,color="black",shape="box"];248 -> 251[label="",style="solid", color="black", weight=3]; 12.89/4.80 249[label="intToDigit2 (Pos (Succ vx32)) (not MyFalse)",fontsize=16,color="black",shape="triangle"];249 -> 252[label="",style="solid", color="black", weight=3]; 12.89/4.80 250 -> 249[label="",style="dashed", color="red", weight=0]; 12.89/4.80 250[label="intToDigit2 (Pos (Succ vx32)) (not MyFalse)",fontsize=16,color="magenta"];93[label="primIntToChar (psMyInt (fromEnumChar (Char (Pos (Succ vx17)))) (Pos Zero))",fontsize=16,color="black",shape="box"];93 -> 102[label="",style="solid", color="black", weight=3]; 12.89/4.80 94[label="intToDigit0 (Neg (Succ vx11)) otherwise",fontsize=16,color="black",shape="box"];94 -> 103[label="",style="solid", color="black", weight=3]; 12.89/4.80 95[label="Char (psMyInt (fromEnumChar (Char (Pos (Succ vx15)))) (Neg Zero))",fontsize=16,color="green",shape="box"];95 -> 104[label="",style="dashed", color="green", weight=3]; 12.89/4.80 251[label="intToDigit2 (Pos (Succ vx32)) MyFalse",fontsize=16,color="black",shape="box"];251 -> 253[label="",style="solid", color="black", weight=3]; 12.89/4.80 252[label="intToDigit2 (Pos (Succ vx32)) MyTrue",fontsize=16,color="black",shape="box"];252 -> 254[label="",style="solid", color="black", weight=3]; 12.89/4.80 102[label="Char (psMyInt (fromEnumChar (Char (Pos (Succ vx17)))) (Pos Zero))",fontsize=16,color="green",shape="box"];102 -> 111[label="",style="dashed", color="green", weight=3]; 12.89/4.80 103[label="intToDigit0 (Neg (Succ vx11)) MyTrue",fontsize=16,color="black",shape="box"];103 -> 112[label="",style="solid", color="black", weight=3]; 12.89/4.80 104[label="psMyInt (fromEnumChar (Char (Pos (Succ vx15)))) (Neg Zero)",fontsize=16,color="black",shape="box"];104 -> 113[label="",style="solid", color="black", weight=3]; 12.89/4.80 253 -> 261[label="",style="dashed", color="red", weight=0]; 12.89/4.80 253[label="intToDigit1 (Pos (Succ vx32)) (asAs (gtEsMyInt (Pos (Succ vx32)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))) (ltEsMyInt (Pos (Succ vx32)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))",fontsize=16,color="magenta"];253 -> 262[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 253 -> 263[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 253 -> 264[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 254 -> 258[label="",style="dashed", color="red", weight=0]; 12.89/4.80 254[label="toEnumChar (psMyInt (fromEnumChar (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 Zero))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos (Succ vx32)))",fontsize=16,color="magenta"];254 -> 259[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 254 -> 260[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 111[label="psMyInt (fromEnumChar (Char (Pos (Succ vx17)))) (Pos Zero)",fontsize=16,color="black",shape="box"];111 -> 124[label="",style="solid", color="black", weight=3]; 12.89/4.80 112[label="error",fontsize=16,color="black",shape="triangle"];112 -> 125[label="",style="solid", color="black", weight=3]; 12.89/4.80 113[label="primPlusInt (fromEnumChar (Char (Pos (Succ vx15)))) (Neg Zero)",fontsize=16,color="black",shape="box"];113 -> 126[label="",style="solid", color="black", weight=3]; 12.89/4.80 262[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];263[label="vx32",fontsize=16,color="green",shape="box"];264[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))",fontsize=16,color="green",shape="box"];261[label="intToDigit1 (Pos (Succ vx42)) (asAs (gtEsMyInt (Pos (Succ vx42)) (Pos (Succ vx43))) (ltEsMyInt (Pos (Succ vx42)) (Pos (Succ vx44))))",fontsize=16,color="black",shape="triangle"];261 -> 268[label="",style="solid", color="black", weight=3]; 12.89/4.80 259[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 Zero))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];260[label="vx32",fontsize=16,color="green",shape="box"];258[label="toEnumChar (psMyInt (fromEnumChar (Char (Pos (Succ vx39)))) (Pos (Succ vx40)))",fontsize=16,color="black",shape="triangle"];258 -> 269[label="",style="solid", color="black", weight=3]; 12.89/4.80 124[label="primPlusInt (fromEnumChar (Char (Pos (Succ vx17)))) (Pos Zero)",fontsize=16,color="black",shape="box"];124 -> 141[label="",style="solid", color="black", weight=3]; 12.89/4.80 125[label="stop MyTrue",fontsize=16,color="black",shape="box"];125 -> 142[label="",style="solid", color="black", weight=3]; 12.89/4.80 126[label="primPlusInt (primCharToInt (Char (Pos (Succ vx15)))) (Neg Zero)",fontsize=16,color="black",shape="box"];126 -> 143[label="",style="solid", color="black", weight=3]; 12.89/4.80 268[label="intToDigit1 (Pos (Succ vx42)) (asAs (fsEsOrdering (compareMyInt (Pos (Succ vx42)) (Pos (Succ vx43))) LT) (ltEsMyInt (Pos (Succ vx42)) (Pos (Succ vx44))))",fontsize=16,color="black",shape="box"];268 -> 270[label="",style="solid", color="black", weight=3]; 12.89/4.80 269[label="primIntToChar (psMyInt (fromEnumChar (Char (Pos (Succ vx39)))) (Pos (Succ vx40)))",fontsize=16,color="black",shape="box"];269 -> 271[label="",style="solid", color="black", weight=3]; 12.89/4.80 141[label="primPlusInt (primCharToInt (Char (Pos (Succ vx17)))) (Pos Zero)",fontsize=16,color="black",shape="box"];141 -> 151[label="",style="solid", color="black", weight=3]; 12.89/4.80 142[label="error []",fontsize=16,color="red",shape="box"];143[label="primPlusInt (Pos (Succ vx15)) (Neg Zero)",fontsize=16,color="black",shape="box"];143 -> 152[label="",style="solid", color="black", weight=3]; 12.89/4.80 270[label="intToDigit1 (Pos (Succ vx42)) (asAs (not (esEsOrdering (compareMyInt (Pos (Succ vx42)) (Pos (Succ vx43))) LT)) (ltEsMyInt (Pos (Succ vx42)) (Pos (Succ vx44))))",fontsize=16,color="black",shape="box"];270 -> 272[label="",style="solid", color="black", weight=3]; 12.89/4.80 271[label="Char (psMyInt (fromEnumChar (Char (Pos (Succ vx39)))) (Pos (Succ vx40)))",fontsize=16,color="green",shape="box"];271 -> 273[label="",style="dashed", color="green", weight=3]; 12.89/4.80 151[label="primPlusInt (Pos (Succ vx17)) (Pos Zero)",fontsize=16,color="black",shape="box"];151 -> 162[label="",style="solid", color="black", weight=3]; 12.89/4.80 152[label="primMinusNat (Succ vx15) Zero",fontsize=16,color="black",shape="box"];152 -> 163[label="",style="solid", color="black", weight=3]; 12.89/4.80 272[label="intToDigit1 (Pos (Succ vx42)) (asAs (not (esEsOrdering (primCmpInt (Pos (Succ vx42)) (Pos (Succ vx43))) LT)) (ltEsMyInt (Pos (Succ vx42)) (Pos (Succ vx44))))",fontsize=16,color="black",shape="box"];272 -> 274[label="",style="solid", color="black", weight=3]; 12.89/4.80 273[label="psMyInt (fromEnumChar (Char (Pos (Succ vx39)))) (Pos (Succ vx40))",fontsize=16,color="black",shape="triangle"];273 -> 275[label="",style="solid", color="black", weight=3]; 12.89/4.80 162[label="Pos (primPlusNat (Succ vx17) Zero)",fontsize=16,color="green",shape="box"];162 -> 172[label="",style="dashed", color="green", weight=3]; 12.89/4.80 163[label="Pos (Succ vx15)",fontsize=16,color="green",shape="box"];274 -> 411[label="",style="dashed", color="red", weight=0]; 12.89/4.80 274[label="intToDigit1 (Pos (Succ vx42)) (asAs (not (esEsOrdering (primCmpNat (Succ vx42) (Succ vx43)) LT)) (ltEsMyInt (Pos (Succ vx42)) (Pos (Succ vx44))))",fontsize=16,color="magenta"];274 -> 412[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 274 -> 413[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 274 -> 414[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 274 -> 415[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 275[label="primPlusInt (fromEnumChar (Char (Pos (Succ vx39)))) (Pos (Succ vx40))",fontsize=16,color="black",shape="box"];275 -> 277[label="",style="solid", color="black", weight=3]; 12.89/4.80 172[label="primPlusNat (Succ vx17) Zero",fontsize=16,color="black",shape="box"];172 -> 181[label="",style="solid", color="black", weight=3]; 12.89/4.80 412[label="Succ vx43",fontsize=16,color="green",shape="box"];413[label="vx42",fontsize=16,color="green",shape="box"];414[label="vx44",fontsize=16,color="green",shape="box"];415[label="Succ vx42",fontsize=16,color="green",shape="box"];411[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat vx47 vx48) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="burlywood",shape="triangle"];671[label="vx47/Succ vx470",fontsize=10,color="white",style="solid",shape="box"];411 -> 671[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 671 -> 440[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 672[label="vx47/Zero",fontsize=10,color="white",style="solid",shape="box"];411 -> 672[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 672 -> 441[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 277[label="primPlusInt (primCharToInt (Char (Pos (Succ vx39)))) (Pos (Succ vx40))",fontsize=16,color="black",shape="box"];277 -> 280[label="",style="solid", color="black", weight=3]; 12.89/4.80 181[label="Succ vx17",fontsize=16,color="green",shape="box"];440[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat (Succ vx470) vx48) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="burlywood",shape="box"];673[label="vx48/Succ vx480",fontsize=10,color="white",style="solid",shape="box"];440 -> 673[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 673 -> 442[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 674[label="vx48/Zero",fontsize=10,color="white",style="solid",shape="box"];440 -> 674[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 674 -> 443[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 441[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat Zero vx48) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="burlywood",shape="box"];675[label="vx48/Succ vx480",fontsize=10,color="white",style="solid",shape="box"];441 -> 675[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 675 -> 444[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 676[label="vx48/Zero",fontsize=10,color="white",style="solid",shape="box"];441 -> 676[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 676 -> 445[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 280[label="primPlusInt (Pos (Succ vx39)) (Pos (Succ vx40))",fontsize=16,color="black",shape="box"];280 -> 285[label="",style="solid", color="black", weight=3]; 12.89/4.80 442[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat (Succ vx470) (Succ vx480)) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];442 -> 446[label="",style="solid", color="black", weight=3]; 12.89/4.80 443[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat (Succ vx470) Zero) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];443 -> 447[label="",style="solid", color="black", weight=3]; 12.89/4.80 444[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat Zero (Succ vx480)) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];444 -> 448[label="",style="solid", color="black", weight=3]; 12.89/4.80 445[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat Zero Zero) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];445 -> 449[label="",style="solid", color="black", weight=3]; 12.89/4.80 285[label="Pos (primPlusNat (Succ vx39) (Succ vx40))",fontsize=16,color="green",shape="box"];285 -> 290[label="",style="dashed", color="green", weight=3]; 12.89/4.80 446 -> 411[label="",style="dashed", color="red", weight=0]; 12.89/4.80 446[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering (primCmpNat vx470 vx480) LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="magenta"];446 -> 450[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 446 -> 451[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 447[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering GT LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];447 -> 452[label="",style="solid", color="black", weight=3]; 12.89/4.80 448[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering LT LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];448 -> 453[label="",style="solid", color="black", weight=3]; 12.89/4.80 449[label="intToDigit1 (Pos (Succ vx46)) (asAs (not (esEsOrdering EQ LT)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];449 -> 454[label="",style="solid", color="black", weight=3]; 12.89/4.80 290[label="primPlusNat (Succ vx39) (Succ vx40)",fontsize=16,color="black",shape="box"];290 -> 296[label="",style="solid", color="black", weight=3]; 12.89/4.80 450[label="vx480",fontsize=16,color="green",shape="box"];451[label="vx470",fontsize=16,color="green",shape="box"];452[label="intToDigit1 (Pos (Succ vx46)) (asAs (not MyFalse) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="triangle"];452 -> 455[label="",style="solid", color="black", weight=3]; 12.89/4.80 453[label="intToDigit1 (Pos (Succ vx46)) (asAs (not MyTrue) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];453 -> 456[label="",style="solid", color="black", weight=3]; 12.89/4.80 454 -> 452[label="",style="dashed", color="red", weight=0]; 12.89/4.80 454[label="intToDigit1 (Pos (Succ vx46)) (asAs (not MyFalse) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="magenta"];296[label="Succ (Succ (primPlusNat vx39 vx40))",fontsize=16,color="green",shape="box"];296 -> 304[label="",style="dashed", color="green", weight=3]; 12.89/4.80 455[label="intToDigit1 (Pos (Succ vx46)) (asAs MyTrue (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];455 -> 457[label="",style="solid", color="black", weight=3]; 12.89/4.80 456[label="intToDigit1 (Pos (Succ vx46)) (asAs MyFalse (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49))))",fontsize=16,color="black",shape="box"];456 -> 458[label="",style="solid", color="black", weight=3]; 12.89/4.80 304[label="primPlusNat vx39 vx40",fontsize=16,color="burlywood",shape="triangle"];677[label="vx39/Succ vx390",fontsize=10,color="white",style="solid",shape="box"];304 -> 677[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 677 -> 312[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 678[label="vx39/Zero",fontsize=10,color="white",style="solid",shape="box"];304 -> 678[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 678 -> 313[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 457[label="intToDigit1 (Pos (Succ vx46)) (ltEsMyInt (Pos (Succ vx46)) (Pos (Succ vx49)))",fontsize=16,color="black",shape="box"];457 -> 459[label="",style="solid", color="black", weight=3]; 12.89/4.80 458[label="intToDigit1 (Pos (Succ vx46)) MyFalse",fontsize=16,color="black",shape="triangle"];458 -> 460[label="",style="solid", color="black", weight=3]; 12.89/4.80 312[label="primPlusNat (Succ vx390) vx40",fontsize=16,color="burlywood",shape="box"];679[label="vx40/Succ vx400",fontsize=10,color="white",style="solid",shape="box"];312 -> 679[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 679 -> 322[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 680[label="vx40/Zero",fontsize=10,color="white",style="solid",shape="box"];312 -> 680[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 680 -> 323[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 313[label="primPlusNat Zero vx40",fontsize=16,color="burlywood",shape="box"];681[label="vx40/Succ vx400",fontsize=10,color="white",style="solid",shape="box"];313 -> 681[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 681 -> 324[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 682[label="vx40/Zero",fontsize=10,color="white",style="solid",shape="box"];313 -> 682[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 682 -> 325[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 459[label="intToDigit1 (Pos (Succ vx46)) (fsEsOrdering (compareMyInt (Pos (Succ vx46)) (Pos (Succ vx49))) GT)",fontsize=16,color="black",shape="box"];459 -> 461[label="",style="solid", color="black", weight=3]; 12.89/4.80 460[label="intToDigit0 (Pos (Succ vx46)) otherwise",fontsize=16,color="black",shape="box"];460 -> 462[label="",style="solid", color="black", weight=3]; 12.89/4.80 322[label="primPlusNat (Succ vx390) (Succ vx400)",fontsize=16,color="black",shape="box"];322 -> 335[label="",style="solid", color="black", weight=3]; 12.89/4.80 323[label="primPlusNat (Succ vx390) Zero",fontsize=16,color="black",shape="box"];323 -> 336[label="",style="solid", color="black", weight=3]; 12.89/4.80 324[label="primPlusNat Zero (Succ vx400)",fontsize=16,color="black",shape="box"];324 -> 337[label="",style="solid", color="black", weight=3]; 12.89/4.80 325[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];325 -> 338[label="",style="solid", color="black", weight=3]; 12.89/4.80 461[label="intToDigit1 (Pos (Succ vx46)) (not (esEsOrdering (compareMyInt (Pos (Succ vx46)) (Pos (Succ vx49))) GT))",fontsize=16,color="black",shape="box"];461 -> 463[label="",style="solid", color="black", weight=3]; 12.89/4.80 462[label="intToDigit0 (Pos (Succ vx46)) MyTrue",fontsize=16,color="black",shape="box"];462 -> 464[label="",style="solid", color="black", weight=3]; 12.89/4.80 335[label="Succ (Succ (primPlusNat vx390 vx400))",fontsize=16,color="green",shape="box"];335 -> 347[label="",style="dashed", color="green", weight=3]; 12.89/4.80 336[label="Succ vx390",fontsize=16,color="green",shape="box"];337[label="Succ vx400",fontsize=16,color="green",shape="box"];338[label="Zero",fontsize=16,color="green",shape="box"];463[label="intToDigit1 (Pos (Succ vx46)) (not (esEsOrdering (primCmpInt (Pos (Succ vx46)) (Pos (Succ vx49))) GT))",fontsize=16,color="black",shape="box"];463 -> 465[label="",style="solid", color="black", weight=3]; 12.89/4.80 464 -> 112[label="",style="dashed", color="red", weight=0]; 12.89/4.80 464[label="error",fontsize=16,color="magenta"];347 -> 304[label="",style="dashed", color="red", weight=0]; 12.89/4.80 347[label="primPlusNat vx390 vx400",fontsize=16,color="magenta"];347 -> 356[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 347 -> 357[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 465 -> 575[label="",style="dashed", color="red", weight=0]; 12.89/4.80 465[label="intToDigit1 (Pos (Succ vx46)) (not (esEsOrdering (primCmpNat (Succ vx46) (Succ vx49)) GT))",fontsize=16,color="magenta"];465 -> 576[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 465 -> 577[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 465 -> 578[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 356[label="vx390",fontsize=16,color="green",shape="box"];357[label="vx400",fontsize=16,color="green",shape="box"];576[label="vx46",fontsize=16,color="green",shape="box"];577[label="Succ vx46",fontsize=16,color="green",shape="box"];578[label="Succ vx49",fontsize=16,color="green",shape="box"];575[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat vx58 vx59) GT))",fontsize=16,color="burlywood",shape="triangle"];683[label="vx58/Succ vx580",fontsize=10,color="white",style="solid",shape="box"];575 -> 683[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 683 -> 597[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 684[label="vx58/Zero",fontsize=10,color="white",style="solid",shape="box"];575 -> 684[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 684 -> 598[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 597[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat (Succ vx580) vx59) GT))",fontsize=16,color="burlywood",shape="box"];685[label="vx59/Succ vx590",fontsize=10,color="white",style="solid",shape="box"];597 -> 685[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 685 -> 599[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 686[label="vx59/Zero",fontsize=10,color="white",style="solid",shape="box"];597 -> 686[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 686 -> 600[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 598[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat Zero vx59) GT))",fontsize=16,color="burlywood",shape="box"];687[label="vx59/Succ vx590",fontsize=10,color="white",style="solid",shape="box"];598 -> 687[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 687 -> 601[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 688[label="vx59/Zero",fontsize=10,color="white",style="solid",shape="box"];598 -> 688[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 688 -> 602[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 599[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat (Succ vx580) (Succ vx590)) GT))",fontsize=16,color="black",shape="box"];599 -> 603[label="",style="solid", color="black", weight=3]; 12.89/4.80 600[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat (Succ vx580) Zero) GT))",fontsize=16,color="black",shape="box"];600 -> 604[label="",style="solid", color="black", weight=3]; 12.89/4.80 601[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat Zero (Succ vx590)) GT))",fontsize=16,color="black",shape="box"];601 -> 605[label="",style="solid", color="black", weight=3]; 12.89/4.80 602[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat Zero Zero) GT))",fontsize=16,color="black",shape="box"];602 -> 606[label="",style="solid", color="black", weight=3]; 12.89/4.80 603 -> 575[label="",style="dashed", color="red", weight=0]; 12.89/4.80 603[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering (primCmpNat vx580 vx590) GT))",fontsize=16,color="magenta"];603 -> 607[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 603 -> 608[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 604[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering GT GT))",fontsize=16,color="black",shape="box"];604 -> 609[label="",style="solid", color="black", weight=3]; 12.89/4.80 605[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering LT GT))",fontsize=16,color="black",shape="box"];605 -> 610[label="",style="solid", color="black", weight=3]; 12.89/4.80 606[label="intToDigit1 (Pos (Succ vx57)) (not (esEsOrdering EQ GT))",fontsize=16,color="black",shape="box"];606 -> 611[label="",style="solid", color="black", weight=3]; 12.89/4.80 607[label="vx580",fontsize=16,color="green",shape="box"];608[label="vx590",fontsize=16,color="green",shape="box"];609[label="intToDigit1 (Pos (Succ vx57)) (not MyTrue)",fontsize=16,color="black",shape="box"];609 -> 612[label="",style="solid", color="black", weight=3]; 12.89/4.80 610[label="intToDigit1 (Pos (Succ vx57)) (not MyFalse)",fontsize=16,color="black",shape="triangle"];610 -> 613[label="",style="solid", color="black", weight=3]; 12.89/4.80 611 -> 610[label="",style="dashed", color="red", weight=0]; 12.89/4.80 611[label="intToDigit1 (Pos (Succ vx57)) (not MyFalse)",fontsize=16,color="magenta"];612 -> 458[label="",style="dashed", color="red", weight=0]; 12.89/4.80 612[label="intToDigit1 (Pos (Succ vx57)) MyFalse",fontsize=16,color="magenta"];612 -> 614[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 613[label="intToDigit1 (Pos (Succ vx57)) MyTrue",fontsize=16,color="black",shape="box"];613 -> 615[label="",style="solid", color="black", weight=3]; 12.89/4.80 614[label="vx57",fontsize=16,color="green",shape="box"];615 -> 626[label="",style="dashed", color="red", weight=0]; 12.89/4.80 615[label="toEnumChar (msMyInt (psMyInt (fromEnumChar (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 Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos (Succ vx57))) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))",fontsize=16,color="magenta"];615 -> 627[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 615 -> 628[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 627[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];628 -> 273[label="",style="dashed", color="red", weight=0]; 12.89/4.80 628[label="psMyInt (fromEnumChar (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 Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos (Succ vx57))",fontsize=16,color="magenta"];628 -> 630[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 628 -> 631[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 626[label="toEnumChar (msMyInt vx67 (Pos (Succ vx66)))",fontsize=16,color="black",shape="triangle"];626 -> 632[label="",style="solid", color="black", weight=3]; 12.89/4.80 630[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 Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];631[label="vx57",fontsize=16,color="green",shape="box"];632[label="primIntToChar (msMyInt vx67 (Pos (Succ vx66)))",fontsize=16,color="black",shape="box"];632 -> 633[label="",style="solid", color="black", weight=3]; 12.89/4.80 633[label="Char (msMyInt vx67 (Pos (Succ vx66)))",fontsize=16,color="green",shape="box"];633 -> 634[label="",style="dashed", color="green", weight=3]; 12.89/4.80 634[label="msMyInt vx67 (Pos (Succ vx66))",fontsize=16,color="black",shape="box"];634 -> 635[label="",style="solid", color="black", weight=3]; 12.89/4.80 635[label="primMinusInt vx67 (Pos (Succ vx66))",fontsize=16,color="burlywood",shape="box"];689[label="vx67/Pos vx670",fontsize=10,color="white",style="solid",shape="box"];635 -> 689[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 689 -> 636[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 690[label="vx67/Neg vx670",fontsize=10,color="white",style="solid",shape="box"];635 -> 690[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 690 -> 637[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 636[label="primMinusInt (Pos vx670) (Pos (Succ vx66))",fontsize=16,color="black",shape="box"];636 -> 638[label="",style="solid", color="black", weight=3]; 12.89/4.80 637[label="primMinusInt (Neg vx670) (Pos (Succ vx66))",fontsize=16,color="black",shape="box"];637 -> 639[label="",style="solid", color="black", weight=3]; 12.89/4.80 638[label="primMinusNat vx670 (Succ vx66)",fontsize=16,color="burlywood",shape="box"];691[label="vx670/Succ vx6700",fontsize=10,color="white",style="solid",shape="box"];638 -> 691[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 691 -> 640[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 692[label="vx670/Zero",fontsize=10,color="white",style="solid",shape="box"];638 -> 692[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 692 -> 641[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 639[label="Neg (primPlusNat vx670 (Succ vx66))",fontsize=16,color="green",shape="box"];639 -> 642[label="",style="dashed", color="green", weight=3]; 12.89/4.80 640[label="primMinusNat (Succ vx6700) (Succ vx66)",fontsize=16,color="black",shape="box"];640 -> 643[label="",style="solid", color="black", weight=3]; 12.89/4.80 641[label="primMinusNat Zero (Succ vx66)",fontsize=16,color="black",shape="box"];641 -> 644[label="",style="solid", color="black", weight=3]; 12.89/4.80 642 -> 304[label="",style="dashed", color="red", weight=0]; 12.89/4.80 642[label="primPlusNat vx670 (Succ vx66)",fontsize=16,color="magenta"];642 -> 645[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 642 -> 646[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 643[label="primMinusNat vx6700 vx66",fontsize=16,color="burlywood",shape="triangle"];693[label="vx6700/Succ vx67000",fontsize=10,color="white",style="solid",shape="box"];643 -> 693[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 693 -> 647[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 694[label="vx6700/Zero",fontsize=10,color="white",style="solid",shape="box"];643 -> 694[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 694 -> 648[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 644[label="Neg (Succ vx66)",fontsize=16,color="green",shape="box"];645[label="vx670",fontsize=16,color="green",shape="box"];646[label="Succ vx66",fontsize=16,color="green",shape="box"];647[label="primMinusNat (Succ vx67000) vx66",fontsize=16,color="burlywood",shape="box"];695[label="vx66/Succ vx660",fontsize=10,color="white",style="solid",shape="box"];647 -> 695[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 695 -> 649[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 696[label="vx66/Zero",fontsize=10,color="white",style="solid",shape="box"];647 -> 696[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 696 -> 650[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 648[label="primMinusNat Zero vx66",fontsize=16,color="burlywood",shape="box"];697[label="vx66/Succ vx660",fontsize=10,color="white",style="solid",shape="box"];648 -> 697[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 697 -> 651[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 698[label="vx66/Zero",fontsize=10,color="white",style="solid",shape="box"];648 -> 698[label="",style="solid", color="burlywood", weight=9]; 12.89/4.80 698 -> 652[label="",style="solid", color="burlywood", weight=3]; 12.89/4.80 649[label="primMinusNat (Succ vx67000) (Succ vx660)",fontsize=16,color="black",shape="box"];649 -> 653[label="",style="solid", color="black", weight=3]; 12.89/4.80 650[label="primMinusNat (Succ vx67000) Zero",fontsize=16,color="black",shape="box"];650 -> 654[label="",style="solid", color="black", weight=3]; 12.89/4.80 651[label="primMinusNat Zero (Succ vx660)",fontsize=16,color="black",shape="box"];651 -> 655[label="",style="solid", color="black", weight=3]; 12.89/4.80 652[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];652 -> 656[label="",style="solid", color="black", weight=3]; 12.89/4.80 653 -> 643[label="",style="dashed", color="red", weight=0]; 12.89/4.80 653[label="primMinusNat vx67000 vx660",fontsize=16,color="magenta"];653 -> 657[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 653 -> 658[label="",style="dashed", color="magenta", weight=3]; 12.89/4.80 654[label="Pos (Succ vx67000)",fontsize=16,color="green",shape="box"];655[label="Neg (Succ vx660)",fontsize=16,color="green",shape="box"];656[label="Pos Zero",fontsize=16,color="green",shape="box"];657[label="vx660",fontsize=16,color="green",shape="box"];658[label="vx67000",fontsize=16,color="green",shape="box"];} 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (6) 12.89/4.80 Complex Obligation (AND) 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (7) 12.89/4.80 Obligation: 12.89/4.80 Q DP problem: 12.89/4.80 The TRS P consists of the following rules: 12.89/4.80 12.89/4.80 new_intToDigit10(vx46, Main.Succ(vx470), Main.Succ(vx480), vx49) -> new_intToDigit10(vx46, vx470, vx480, vx49) 12.89/4.80 12.89/4.80 R is empty. 12.89/4.80 Q is empty. 12.89/4.80 We have to consider all minimal (P,Q,R)-chains. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (8) QDPSizeChangeProof (EQUIVALENT) 12.89/4.80 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. 12.89/4.80 12.89/4.80 From the DPs we obtained the following set of size-change graphs: 12.89/4.80 *new_intToDigit10(vx46, Main.Succ(vx470), Main.Succ(vx480), vx49) -> new_intToDigit10(vx46, vx470, vx480, vx49) 12.89/4.80 The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 4 >= 4 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (9) 12.89/4.80 YES 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (10) 12.89/4.80 Obligation: 12.89/4.80 Q DP problem: 12.89/4.80 The TRS P consists of the following rules: 12.89/4.80 12.89/4.80 new_intToDigit2(vx32, Main.Succ(vx330), Main.Succ(vx340)) -> new_intToDigit2(vx32, vx330, vx340) 12.89/4.80 12.89/4.80 R is empty. 12.89/4.80 Q is empty. 12.89/4.80 We have to consider all minimal (P,Q,R)-chains. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (11) QDPSizeChangeProof (EQUIVALENT) 12.89/4.80 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. 12.89/4.80 12.89/4.80 From the DPs we obtained the following set of size-change graphs: 12.89/4.80 *new_intToDigit2(vx32, Main.Succ(vx330), Main.Succ(vx340)) -> new_intToDigit2(vx32, vx330, vx340) 12.89/4.80 The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (12) 12.89/4.80 YES 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (13) 12.89/4.80 Obligation: 12.89/4.80 Q DP problem: 12.89/4.80 The TRS P consists of the following rules: 12.89/4.80 12.89/4.80 new_primPlusNat(Main.Succ(vx390), Main.Succ(vx400)) -> new_primPlusNat(vx390, vx400) 12.89/4.80 12.89/4.80 R is empty. 12.89/4.80 Q is empty. 12.89/4.80 We have to consider all minimal (P,Q,R)-chains. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (14) QDPSizeChangeProof (EQUIVALENT) 12.89/4.80 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. 12.89/4.80 12.89/4.80 From the DPs we obtained the following set of size-change graphs: 12.89/4.80 *new_primPlusNat(Main.Succ(vx390), Main.Succ(vx400)) -> new_primPlusNat(vx390, vx400) 12.89/4.80 The graph contains the following edges 1 > 1, 2 > 2 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (15) 12.89/4.80 YES 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (16) 12.89/4.80 Obligation: 12.89/4.80 Q DP problem: 12.89/4.80 The TRS P consists of the following rules: 12.89/4.80 12.89/4.80 new_primMinusNat(Main.Succ(vx67000), Main.Succ(vx660)) -> new_primMinusNat(vx67000, vx660) 12.89/4.80 12.89/4.80 R is empty. 12.89/4.80 Q is empty. 12.89/4.80 We have to consider all minimal (P,Q,R)-chains. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (17) QDPSizeChangeProof (EQUIVALENT) 12.89/4.80 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. 12.89/4.80 12.89/4.80 From the DPs we obtained the following set of size-change graphs: 12.89/4.80 *new_primMinusNat(Main.Succ(vx67000), Main.Succ(vx660)) -> new_primMinusNat(vx67000, vx660) 12.89/4.80 The graph contains the following edges 1 > 1, 2 > 2 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (18) 12.89/4.80 YES 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (19) 12.89/4.80 Obligation: 12.89/4.80 Q DP problem: 12.89/4.80 The TRS P consists of the following rules: 12.89/4.80 12.89/4.80 new_intToDigit1(vx57, Main.Succ(vx580), Main.Succ(vx590)) -> new_intToDigit1(vx57, vx580, vx590) 12.89/4.80 12.89/4.80 R is empty. 12.89/4.80 Q is empty. 12.89/4.80 We have to consider all minimal (P,Q,R)-chains. 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (20) QDPSizeChangeProof (EQUIVALENT) 12.89/4.80 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. 12.89/4.80 12.89/4.80 From the DPs we obtained the following set of size-change graphs: 12.89/4.80 *new_intToDigit1(vx57, Main.Succ(vx580), Main.Succ(vx590)) -> new_intToDigit1(vx57, vx580, vx590) 12.89/4.80 The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3 12.89/4.80 12.89/4.80 12.89/4.80 ---------------------------------------- 12.89/4.80 12.89/4.80 (21) 12.89/4.80 YES 12.98/8.52 EOF