{-# OPTIONS -XNoMonomorphismRestriction #-} module SERIALIZE_BINTREE (inv_Fserialize_bintree,serialize_bintree) where import Control.Monad import InvUtil import Data.Tuple import MyData inv_Fserialize_bintree = runI . e_Fserialize_bintree data StatesOfFserialize_bintree e_1 e_4 e_5 e_7 e_8 = S_Fserialize_bintree_1 e_1 | S_Fserialize_bintree_4 e_4 | S_Fserialize_bintree_5 e_5 | S_Fserialize_bintree_7 e_7 | S_Fserialize_bintree_8 e_8 e_Fserialize_bintree x = case trav_Fserialize_bintree_0 x of S_Fserialize_bintree_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: Fserialize_bintree" trav_Fserialize_bintree_0 (L t1) = sem_Fserialize_bintree_0_L (L t1) (trav_Fserialize_bintree_1 t1) trav_Fserialize_bintree_0 t = sem_Fserialize_bintree_0___ t trav_Fserialize_bintree_1 (R t1) = sem_Fserialize_bintree_1_R (R t1) (trav_Fserialize_bintree_2 t1) trav_Fserialize_bintree_1 (L t1) = sem_Fserialize_bintree_1_L (L t1) (trav_Fserialize_bintree_1 t1) trav_Fserialize_bintree_1 t = sem_Fserialize_bintree_1___ t trav_Fserialize_bintree_2 t = sem_Fserialize_bintree_2___ t sem_Fserialize_bintree_0_L tree (S_Fserialize_bintree_7 t1) = S_Fserialize_bintree_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11, r_v12, r_v13) -> (\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 () <- (return r_x2 >>= e_E4) return (r_v11)) ((,) (BN r_v2 r_v3) r_v1) >>= (\(r_v1) -> return r_v1)) (r_v11, r_v12, r_v13)) tmp_r1)) t1) sem_Fserialize_bintree_0_L tree (S_Fserialize_bintree_5 t1) = S_Fserialize_bintree_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 () <- (return r_x2 >>= e_E4) return (r_v11)) ((,) BL r_v1) >>= (\(r_v1) -> return r_v1)) (r_v11)) tmp_r1)) t1) sem_Fserialize_bintree_0___ tree = S_Fserialize_bintree_4 undefined sem_Fserialize_bintree_1_L tree (S_Fserialize_bintree_7 t1) = S_Fserialize_bintree_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11, r_v12, r_v13) -> (\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E19) return (r_v21, r_v11, r_v22)) ((,) (BN r_v2 r_v3) r_v1)) (r_v11, r_v12, r_v13)) tmp_r1)) t1) sem_Fserialize_bintree_1_L tree (S_Fserialize_bintree_5 t1) = S_Fserialize_bintree_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E19) return (r_v21, r_v11, r_v22)) ((,) BL r_v1)) (r_v11)) tmp_r1)) t1) sem_Fserialize_bintree_1_R tree (S_Fserialize_bintree_8 t1) = S_Fserialize_bintree_5 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Fserialize_bintree_1___ tree = S_Fserialize_bintree_4 undefined sem_Fserialize_bintree_2___ tree = S_Fserialize_bintree_8 (return tree) data StatesOfE3 e_0 = S_E3_0 e_0 e_E3 x = case trav_E3_0 x of S_E3_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E3" trav_E3_0 t = sem_E3_0___ t sem_E3_0___ tree = S_E3_0 (return tree) data StatesOfE4 e_0 e_1 = S_E4_0 e_0 | S_E4_1 e_1 e_E4 x = case trav_E4_0 x of S_E4_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E4" trav_E4_0 (EOS) = sem_E4_0_EOS EOS trav_E4_0 t = sem_E4_0___ t sem_E4_0_EOS tree = S_E4_1 (return ()) sem_E4_0___ tree = S_E4_0 undefined data StatesOfE18 e_0 = S_E18_0 e_0 e_E18 x = case trav_E18_0 x of S_E18_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E18" trav_E18_0 t = sem_E18_0___ t sem_E18_0___ tree = S_E18_0 (return tree) data StatesOfE19 e_3 e_4 e_5 e_7 e_8 = S_E19_3 e_3 | S_E19_4 e_4 | S_E19_5 e_5 | S_E19_7 e_7 | S_E19_8 e_8 e_E19 x = case trav_E19_0 x of S_E19_3 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E19" trav_E19_0 (L t1) = sem_E19_0_L (L t1) (trav_E19_1 t1) trav_E19_0 t = sem_E19_0___ t trav_E19_1 (R t1) = sem_E19_1_R (R t1) (trav_E19_2 t1) trav_E19_1 (L t1) = sem_E19_1_L (L t1) (trav_E19_1 t1) trav_E19_1 t = sem_E19_1___ t trav_E19_2 t = sem_E19_2___ t sem_E19_0_L tree (S_E19_7 t1) = S_E19_3 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11, r_v12, r_v13) -> (\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- (return r_x2 >>= e_E21) return (r_v21, r_v11)) ((,) (BN r_v2 r_v3) r_v1)) (r_v11, r_v12, r_v13)) tmp_r1)) t1) sem_E19_0_L tree (S_E19_5 t1) = S_E19_3 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- (return r_x2 >>= e_E21) return (r_v21, r_v11)) ((,) BL r_v1)) (r_v11)) tmp_r1)) t1) sem_E19_0___ tree = S_E19_4 undefined sem_E19_1_L tree (S_E19_7 t1) = S_E19_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11, r_v12, r_v13) -> (\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E19) return (r_v21, r_v11, r_v22)) ((,) (BN r_v2 r_v3) r_v1)) (r_v11, r_v12, r_v13)) tmp_r1)) t1) sem_E19_1_L tree (S_E19_5 t1) = S_E19_7 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> (\(r_v1) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E19) return (r_v21, r_v11, r_v22)) ((,) BL r_v1)) (r_v11)) tmp_r1)) t1) sem_E19_1_R tree (S_E19_8 t1) = S_E19_5 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E19_1___ tree = S_E19_4 undefined sem_E19_2___ tree = S_E19_8 (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 StatesOfE21 e_0 e_1 e_3 = S_E21_0 e_0 | S_E21_1 e_1 | S_E21_3 e_3 e_E21 x = case trav_E21_0 x of S_E21_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E21" trav_E21_0 (R t1) = sem_E21_0_R (R t1) (trav_E21_1 t1) trav_E21_0 t = sem_E21_0___ t trav_E21_1 t = sem_E21_1___ t sem_E21_0_R tree (S_E21_3 t1) = S_E21_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E21_0___ tree = S_E21_0 undefined sem_E21_1___ tree = S_E21_3 (return tree) serialize_bintree x = sb x EOS sb (BL) r = L (R r) sb (BN x y) r = L (sb x (sb y (R r)))