{-# OPTIONS -XNoMonomorphismRestriction #-} module FIB (inv_Ffib,fib) where import Control.Monad import InvUtil import Data.Tuple import MyData inv_Ffib = e_Ffib data StatesOfFfib e_0 e_4 e_5 e_8 e_10 e_DEAD = S_Ffib_0 e_0 | S_Ffib_4 e_4 | S_Ffib_5 e_5 | S_Ffib_8 e_8 | S_Ffib_10 e_10 | S_Ffib_DEAD e_DEAD e_Ffib x = case trav_Ffib_0 x of S_Ffib_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: Ffib" trav_Ffib_0 (S t1) = sem_Ffib_0_S (S t1) (trav_Ffib_1 t1) trav_Ffib_0 t = sem_Ffib_0___ t trav_Ffib_1 (Z) = sem_Ffib_1_Z Z trav_Ffib_1 (S t1) = sem_Ffib_1_S (S t1) (trav_Ffib_2 t1) trav_Ffib_1 t = sem_Ffib_1___ t trav_Ffib_2 (Z) = sem_Ffib_2_Z Z trav_Ffib_2 (S t1) = sem_Ffib_2_S (S t1) (trav_Ffib_3 t1) trav_Ffib_2 t = sem_Ffib_2___ t trav_Ffib_3 (S t1) = sem_Ffib_3_S (S t1) (trav_Ffib_3 t1) trav_Ffib_3 t = sem_Ffib_3___ t sem_Ffib_0_S tree (S_Ffib_5 t1) = S_Ffib_0 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z >>= (\(r_v1) -> return (S r_v1))) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_Ffib_0_S tree (S_Ffib_4 t1) = S_Ffib_0 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> return Z) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_Ffib_0_S tree (S_Ffib_10 t1) = S_Ffib_0 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1))))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1)))) (r_v11, r_v12)) tmp_r1))) t1) sem_Ffib_0_S _ _ = S_Ffib_DEAD mymzero sem_Ffib_0___ tree = S_Ffib_0 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> return (S r_v1))))) sem_Ffib_0___ _ = S_Ffib_DEAD mymzero sem_Ffib_1_S tree (S_Ffib_8 t1) = S_Ffib_5 ((\(x1_1, x1_2) -> (do tmp_r1 <- x1_1 (\() -> return ()) tmp_r1, mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_Ffib_1_S tree (S_Ffib_10 t1) = S_Ffib_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_Ffib_1_S _ _ = S_Ffib_DEAD mymzero sem_Ffib_1_Z tree = S_Ffib_4 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_Ffib_1_Z _ = S_Ffib_DEAD mymzero sem_Ffib_1___ tree = S_Ffib_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_Ffib_1___ _ = S_Ffib_DEAD mymzero sem_Ffib_2_S tree (S_Ffib_10 t1) = S_Ffib_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_Ffib_2_S _ _ = S_Ffib_DEAD mymzero sem_Ffib_2_Z tree = S_Ffib_8 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_Ffib_2_Z _ = S_Ffib_DEAD mymzero sem_Ffib_2___ tree = S_Ffib_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_Ffib_2___ _ = S_Ffib_DEAD mymzero sem_Ffib_3_S tree (S_Ffib_10 t1) = S_Ffib_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_Ffib_3_S _ _ = S_Ffib_DEAD mymzero sem_Ffib_3___ tree = S_Ffib_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_Ffib_3___ _ = S_Ffib_DEAD mymzero data StatesOfE8 e_0 e_DEAD = S_E8_0 e_0 | S_E8_DEAD e_DEAD e_E8 x = case trav_E8_0 x of S_E8_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E8" trav_E8_0 t = sem_E8_0___ t sem_E8_0___ tree = S_E8_0 (return tree) sem_E8_0___ _ = S_E8_DEAD mymzero data StatesOfE18 e_2 e_4 e_5 e_8 e_10 e_DEAD = S_E18_2 e_2 | S_E18_4 e_4 | S_E18_5 e_5 | S_E18_8 e_8 | S_E18_10 e_10 | S_E18_DEAD e_DEAD e_E18 x = case trav_E18_0 x of S_E18_2 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E18" trav_E18_0 (S t1) = sem_E18_0_S (S t1) (trav_E18_1 t1) trav_E18_0 t = sem_E18_0___ t trav_E18_1 (Z) = sem_E18_1_Z Z trav_E18_1 (S t1) = sem_E18_1_S (S t1) (trav_E18_2 t1) trav_E18_1 t = sem_E18_1___ t trav_E18_2 (Z) = sem_E18_2_Z Z trav_E18_2 (S t1) = sem_E18_2_S (S t1) (trav_E18_3 t1) trav_E18_2 t = sem_E18_2___ t trav_E18_3 (S t1) = sem_E18_3_S (S t1) (trav_E18_3 t1) trav_E18_3 t = sem_E18_3___ t sem_E18_0_S tree (S_E18_5 t1) = S_E18_2 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1))) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_E18_0_S tree (S_E18_4 t1) = S_E18_2 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) Z) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_E18_0_S tree (S_E18_10 t1) = S_E18_2 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1))))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1))) t1) sem_E18_0_S _ _ = S_E18_DEAD mymzero sem_E18_0___ tree = S_E18_2 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E19) return (r_v11)) (S r_v1))))) sem_E18_0___ _ = S_E18_DEAD mymzero sem_E18_1_S tree (S_E18_8 t1) = S_E18_5 ((\(x1_1, x1_2) -> (do tmp_r1 <- x1_1 (\() -> return ()) tmp_r1, mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E18_1_S tree (S_E18_10 t1) = S_E18_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E18_1_S _ _ = S_E18_DEAD mymzero sem_E18_1_Z tree = S_E18_4 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E18_1_Z _ = S_E18_DEAD mymzero sem_E18_1___ tree = S_E18_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E18_1___ _ = S_E18_DEAD mymzero sem_E18_2_S tree (S_E18_10 t1) = S_E18_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E18_2_S _ _ = S_E18_DEAD mymzero sem_E18_2_Z tree = S_E18_8 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E18_2_Z _ = S_E18_DEAD mymzero sem_E18_2___ tree = S_E18_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E18_2___ _ = S_E18_DEAD mymzero sem_E18_3_S tree (S_E18_10 t1) = S_E18_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E18_3_S _ _ = S_E18_DEAD mymzero sem_E18_3___ tree = S_E18_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E18_3___ _ = S_E18_DEAD mymzero data StatesOfE19 e_0 e_1 e_3 e_DEAD = S_E19_0 e_0 | S_E19_1 e_1 | S_E19_3 e_3 | S_E19_DEAD e_DEAD e_E19 x = case trav_E19_0 x of S_E19_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E19" trav_E19_0 (S t1) = sem_E19_0_S (S t1) (trav_E19_1 t1) trav_E19_0 t = sem_E19_0___ t trav_E19_1 t = sem_E19_1___ t sem_E19_0_S tree (S_E19_3 t1) = S_E19_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E19_0_S _ _ = S_E19_DEAD mymzero sem_E19_0___ tree = S_E19_0 undefined sem_E19_0___ _ = S_E19_DEAD mymzero sem_E19_1___ tree = S_E19_3 (return tree) sem_E19_1___ _ = S_E19_DEAD mymzero data StatesOfE21 e_2 e_4 e_5 e_8 e_10 e_DEAD = S_E21_2 e_2 | S_E21_4 e_4 | S_E21_5 e_5 | S_E21_8 e_8 | S_E21_10 e_10 | S_E21_DEAD e_DEAD e_E21 x = case trav_E21_0 x of S_E21_2 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E21" trav_E21_0 (S t1) = sem_E21_0_S (S t1) (trav_E21_1 t1) trav_E21_0 t = sem_E21_0___ t trav_E21_1 (Z) = sem_E21_1_Z Z trav_E21_1 (S t1) = sem_E21_1_S (S t1) (trav_E21_2 t1) trav_E21_1 t = sem_E21_1___ t trav_E21_2 (Z) = sem_E21_2_Z Z trav_E21_2 (S t1) = sem_E21_2_S (S t1) (trav_E21_3 t1) trav_E21_2 t = sem_E21_2___ t trav_E21_3 (S t1) = sem_E21_3_S (S t1) (trav_E21_3 t1) trav_E21_3 t = sem_E21_3___ t sem_E21_0_S tree (S_E21_5 t1) = S_E21_2 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_E21_0_S tree (S_E21_4 t1) = S_E21_2 ((\(x1_1, x1_2) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))))) (mymplus (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z) ()) tmp_r1) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1)))) t1) sem_E21_0_S tree (S_E21_10 t1) = S_E21_2 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) (S r_v1) r_v2) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)))) (r_v11, r_v12)) tmp_r1))) t1) sem_E21_0_S _ _ = S_E21_DEAD mymzero sem_E21_0___ tree = S_E21_2 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- (return r_x1 >>= e_E18) (r_v21) <- (return r_x2 >>= e_E21) do tv1 <- checkEqPrim r_v11 r_v21 return (tv1)) ((,) Z r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))))) sem_E21_0___ _ = S_E21_DEAD mymzero sem_E21_1_S tree (S_E21_8 t1) = S_E21_5 ((\(x1_1, x1_2) -> (do tmp_r1 <- x1_1 (\() -> return ()) tmp_r1, mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_2 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E21_1_S tree (S_E21_10 t1) = S_E21_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E21_1_S _ _ = S_E21_DEAD mymzero sem_E21_1_Z tree = S_E21_4 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E21_1_Z _ = S_E21_DEAD mymzero sem_E21_1___ tree = S_E21_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E21_1___ _ = S_E21_DEAD mymzero sem_E21_2_S tree (S_E21_10 t1) = S_E21_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E21_2_S _ _ = S_E21_DEAD mymzero sem_E21_2_Z tree = S_E21_8 (return (), return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E21_2_Z _ = S_E21_DEAD mymzero sem_E21_2___ tree = S_E21_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E21_2___ _ = S_E21_DEAD mymzero sem_E21_3_S tree (S_E21_10 t1) = S_E21_10 ((\(x1_1) -> (mymplus (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) (do tmp_r1 <- x1_1 (\(r_v11, r_v12) -> (\(r_v1, r_v2) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (S r_v1) r_v2)) (r_v11, r_v12)) tmp_r1))) t1) sem_E21_3_S _ _ = S_E21_DEAD mymzero sem_E21_3___ tree = S_E21_10 (return tree >>= (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Z r_v1))) sem_E21_3___ _ = S_E21_DEAD mymzero data StatesOfE22 e_0 e_DEAD = S_E22_0 e_0 | S_E22_DEAD e_DEAD e_E22 x = case trav_E22_0 x of S_E22_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E22" trav_E22_0 t = sem_E22_0___ t sem_E22_0___ tree = S_E22_0 (return tree) sem_E22_0___ _ = S_E22_DEAD mymzero data StatesOfE33 e_0 e_DEAD = S_E33_0 e_0 | S_E33_DEAD e_DEAD e_E33 x = case trav_E33_0 x of S_E33_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E33" trav_E33_0 t = sem_E33_0___ t sem_E33_0___ tree = S_E33_0 (return tree) sem_E33_0___ _ = S_E33_DEAD mymzero data StatesOfE34 e_0 e_DEAD = S_E34_0 e_0 | S_E34_DEAD e_DEAD e_E34 x = case trav_E34_0 x of S_E34_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E34" trav_E34_0 t = sem_E34_0___ t sem_E34_0___ tree = S_E34_0 (return tree) sem_E34_0___ _ = S_E34_DEAD mymzero fib (Z) = S Z fib (S n) = fib2 n fib2 (Z) = S (S Z) fib2 (S m) = add (fib (S m)) (fib m) add (Z) y = y add (S x) y = S (add x y)