{-# OPTIONS -XNoMonomorphismRestriction #-} module TWOPOWER (inv_Ftwopower,twopower) where import Control.Monad import InvUtil import Data.Tuple import MyData inv_Ftwopower = runI . e_Ftwopower data StatesOfFtwopower e_1 e_5 e_7 e_10 e_11 e_14 e_17 e_22 e_23 e_24 = S_Ftwopower_1 e_1 | S_Ftwopower_5 e_5 | S_Ftwopower_7 e_7 | S_Ftwopower_10 e_10 | S_Ftwopower_11 e_11 | S_Ftwopower_14 e_14 | S_Ftwopower_17 e_17 | S_Ftwopower_22 e_22 | S_Ftwopower_23 e_23 | S_Ftwopower_24 e_24 e_Ftwopower x = case trav_Ftwopower_0 x of S_Ftwopower_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: Ftwopower" trav_Ftwopower_0 (S t1) = sem_Ftwopower_0_S (S t1) (trav_Ftwopower_1 t1) trav_Ftwopower_0 t = sem_Ftwopower_0___ t trav_Ftwopower_1 (S t1) = sem_Ftwopower_1_S (S t1) (trav_Ftwopower_2 t1) trav_Ftwopower_1 t = sem_Ftwopower_1___ t trav_Ftwopower_2 (Z) = sem_Ftwopower_2_Z Z trav_Ftwopower_2 (S t1) = sem_Ftwopower_2_S (S t1) (trav_Ftwopower_3 t1) trav_Ftwopower_2 t = sem_Ftwopower_2___ t trav_Ftwopower_3 (S t1) = sem_Ftwopower_3_S (S t1) (trav_Ftwopower_4 t1) trav_Ftwopower_3 t = sem_Ftwopower_3___ t trav_Ftwopower_4 (Z) = sem_Ftwopower_4_Z Z trav_Ftwopower_4 (S t1) = sem_Ftwopower_4_S (S t1) (trav_Ftwopower_5 t1) trav_Ftwopower_4 t = sem_Ftwopower_4___ t trav_Ftwopower_5 (S t1) = sem_Ftwopower_5_S (S t1) (trav_Ftwopower_6 t1) trav_Ftwopower_5 t = sem_Ftwopower_5___ t trav_Ftwopower_6 (Z) = sem_Ftwopower_6_Z Z trav_Ftwopower_6 (S t1) = sem_Ftwopower_6_S (S t1) (trav_Ftwopower_5 t1) trav_Ftwopower_6 t = sem_Ftwopower_6___ t sem_Ftwopower_0_S tree (S_Ftwopower_7 t1) = S_Ftwopower_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E9) return (r_v11)) (S (S r_v1)) >>= (\(r_v1) -> return (S r_v1))) (r_v11)) tmp_r1)) t1) sem_Ftwopower_0_S tree (S_Ftwopower_5 t1) = S_Ftwopower_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> return Z) ()) tmp_r1)) t1) sem_Ftwopower_0___ tree = S_Ftwopower_22 undefined sem_Ftwopower_1_S tree (S_Ftwopower_11 t1) = S_Ftwopower_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Ftwopower_1_S tree (S_Ftwopower_10 t1) = S_Ftwopower_5 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> return ()) tmp_r1)) t1) sem_Ftwopower_1___ tree = S_Ftwopower_22 undefined sem_Ftwopower_2_S tree (S_Ftwopower_14 t1) = S_Ftwopower_11 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Ftwopower_2_Z tree = S_Ftwopower_10 (return ()) sem_Ftwopower_2___ tree = S_Ftwopower_22 undefined sem_Ftwopower_3_S tree (S_Ftwopower_17 t1) = S_Ftwopower_14 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Ftwopower_3___ tree = S_Ftwopower_22 undefined sem_Ftwopower_4_S tree (S_Ftwopower_23 t1) = S_Ftwopower_17 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)) (r_v11)) tmp_r1)) t1) sem_Ftwopower_4_Z tree = S_Ftwopower_17 (return () >>= (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z)) sem_Ftwopower_4___ tree = S_Ftwopower_22 undefined sem_Ftwopower_5_S tree (S_Ftwopower_24 t1) = S_Ftwopower_23 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Ftwopower_5___ tree = S_Ftwopower_22 undefined sem_Ftwopower_6_S tree (S_Ftwopower_23 t1) = S_Ftwopower_24 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)) (r_v11)) tmp_r1)) t1) sem_Ftwopower_6_Z tree = S_Ftwopower_24 (return () >>= (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z)) sem_Ftwopower_6___ tree = S_Ftwopower_22 undefined data StatesOfE9 e_2 e_5 e_7 e_10 e_11 e_14 e_17 e_22 e_23 e_24 = S_E9_2 e_2 | S_E9_5 e_5 | S_E9_7 e_7 | S_E9_10 e_10 | S_E9_11 e_11 | S_E9_14 e_14 | S_E9_17 e_17 | S_E9_22 e_22 | S_E9_23 e_23 | S_E9_24 e_24 e_E9 x = case trav_E9_0 x of S_E9_2 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E9" trav_E9_0 (S t1) = sem_E9_0_S (S t1) (trav_E9_1 t1) trav_E9_0 t = sem_E9_0___ t trav_E9_1 (S t1) = sem_E9_1_S (S t1) (trav_E9_2 t1) trav_E9_1 t = sem_E9_1___ t trav_E9_2 (Z) = sem_E9_2_Z Z trav_E9_2 (S t1) = sem_E9_2_S (S t1) (trav_E9_3 t1) trav_E9_2 t = sem_E9_2___ t trav_E9_3 (S t1) = sem_E9_3_S (S t1) (trav_E9_4 t1) trav_E9_3 t = sem_E9_3___ t trav_E9_4 (Z) = sem_E9_4_Z Z trav_E9_4 (S t1) = sem_E9_4_S (S t1) (trav_E9_5 t1) trav_E9_4 t = sem_E9_4___ t trav_E9_5 (S t1) = sem_E9_5_S (S t1) (trav_E9_6 t1) trav_E9_5 t = sem_E9_5___ t trav_E9_6 (Z) = sem_E9_6_Z Z trav_E9_6 (S t1) = sem_E9_6_S (S t1) (trav_E9_5 t1) trav_E9_6 t = sem_E9_6___ t sem_E9_0_S tree (S_E9_7 t1) = S_E9_2 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- (return r_x1 >>= e_E9) return (r_v11)) (S (S r_v1)) >>= (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1))) (r_v11)) tmp_r1)) t1) sem_E9_0_S tree (S_E9_5 t1) = S_E9_2 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z) ()) tmp_r1)) t1) sem_E9_0___ tree = S_E9_22 undefined sem_E9_1_S tree (S_E9_11 t1) = S_E9_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E9_1_S tree (S_E9_10 t1) = S_E9_5 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> return ()) tmp_r1)) t1) sem_E9_1___ tree = S_E9_22 undefined sem_E9_2_S tree (S_E9_14 t1) = S_E9_11 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E9_2_Z tree = S_E9_10 (return ()) sem_E9_2___ tree = S_E9_22 undefined sem_E9_3_S tree (S_E9_17 t1) = S_E9_14 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E9_3___ tree = S_E9_22 undefined sem_E9_4_S tree (S_E9_23 t1) = S_E9_17 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)) (r_v11)) tmp_r1)) t1) sem_E9_4_Z tree = S_E9_17 (return () >>= (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z)) sem_E9_4___ tree = S_E9_22 undefined sem_E9_5_S tree (S_E9_24 t1) = S_E9_23 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E9_5___ tree = S_E9_22 undefined sem_E9_6_S tree (S_E9_23 t1) = S_E9_24 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) (S r_v1)) (r_v11)) tmp_r1)) t1) sem_E9_6_Z tree = S_E9_24 (return () >>= (\() -> (\(r_x1) -> do (r_v11) <- return r_x1 return (r_v11)) Z)) sem_E9_6___ tree = S_E9_22 undefined data StatesOfE10 e_0 = S_E10_0 e_0 e_E10 x = case trav_E10_0 x of S_E10_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E10" trav_E10_0 t = sem_E10_0___ t sem_E10_0___ tree = S_E10_0 (return tree) data StatesOfE20 e_0 = S_E20_0 e_0 e_E20 x = case trav_E20_0 x of S_E20_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E20" trav_E20_0 t = sem_E20_0___ t sem_E20_0___ tree = S_E20_0 (return tree) data StatesOfE30 e_0 = S_E30_0 e_0 e_E30 x = case trav_E30_0 x of S_E30_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E30" trav_E30_0 t = sem_E30_0___ t sem_E30_0___ tree = S_E30_0 (return tree) twopower (Z) = S (S Z) twopower (S n) = double2 (twopower n) double2 (S (S n)) = S (S (S (S (double n)))) double (Z) = Z double (S n) = S (S (double n))