{-# OPTIONS -XNoMonomorphismRestriction #-} module ZIPI (inv_Fmyzip,myzip) where import Control.Monad import InvUtil import Data.Tuple import MyData inv_Fmyzip = runI . e_Fmyzip data StatesOfFmyzip e_1 e_6 e_7 e_8 e_11 e_12 = S_Fmyzip_1 e_1 | S_Fmyzip_6 e_6 | S_Fmyzip_7 e_7 | S_Fmyzip_8 e_8 | S_Fmyzip_11 e_11 | S_Fmyzip_12 e_12 e_Fmyzip x = case trav_Fmyzip_0 x of S_Fmyzip_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: Fmyzip" trav_Fmyzip_0 (Nil) = sem_Fmyzip_0_Nil Nil trav_Fmyzip_0 (Cons t1 t2) = sem_Fmyzip_0_Cons (Cons t1 t2) (trav_Fmyzip_2 t1) (trav_Fmyzip_1 t2) trav_Fmyzip_0 t = sem_Fmyzip_0___ t trav_Fmyzip_1 (Nil) = sem_Fmyzip_1_Nil Nil trav_Fmyzip_1 (Cons t1 t2) = sem_Fmyzip_1_Cons (Cons t1 t2) (trav_Fmyzip_2 t1) (trav_Fmyzip_1 t2) trav_Fmyzip_1 t = sem_Fmyzip_1___ t trav_Fmyzip_2 (Pair t1 t2) = sem_Fmyzip_2_Pair (Pair t1 t2) (trav_Fmyzip_4 t1) (trav_Fmyzip_3 t2) trav_Fmyzip_2 t = sem_Fmyzip_2___ t trav_Fmyzip_3 t = sem_Fmyzip_3___ t trav_Fmyzip_4 t = sem_Fmyzip_4___ t sem_Fmyzip_0_Cons tree (S_Fmyzip_8 t1) (S_Fmyzip_6 t2) = S_Fmyzip_1 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v12, r_v21, r_v22)) (\(r_v1, r_v2, r_v3, r_v4) -> return ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4))) tmp_r1 tmp_r2)) t1 t2) sem_Fmyzip_0_Nil tree = S_Fmyzip_1 (return () >>= (\() -> return ((,) Nil Nil))) sem_Fmyzip_0___ tree = S_Fmyzip_7 undefined sem_Fmyzip_1_Cons tree (S_Fmyzip_8 t1) (S_Fmyzip_6 t2) = S_Fmyzip_6 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v12, r_v21, r_v22)) (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4))) tmp_r1 tmp_r2)) t1 t2) sem_Fmyzip_1_Nil tree = S_Fmyzip_6 (return () >>= (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Nil Nil))) sem_Fmyzip_1___ tree = S_Fmyzip_7 undefined sem_Fmyzip_2_Pair tree (S_Fmyzip_12 t1) (S_Fmyzip_11 t2) = S_Fmyzip_8 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_Fmyzip_2___ tree = S_Fmyzip_7 undefined sem_Fmyzip_3___ tree = S_Fmyzip_11 (return tree) sem_Fmyzip_4___ tree = S_Fmyzip_12 (return tree) data StatesOfE16 e_0 = S_E16_0 e_0 e_E16 x = case trav_E16_0 x of S_E16_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E16" trav_E16_0 t = sem_E16_0___ t sem_E16_0___ tree = S_E16_0 (return tree) data StatesOfE17 e_0 = S_E17_0 e_0 e_E17 x = case trav_E17_0 x of S_E17_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E17" trav_E17_0 t = sem_E17_0___ t sem_E17_0___ tree = S_E17_0 (return tree) myzip (Nil) (Nil) = Nil myzip (Cons a x) (Cons b y) = Cons (Pair a b) (myzip x y)