{-# OPTIONS -XNoMonomorphismRestriction #-} module DIFF (inv_Fdiff,diff) where import Control.Monad import InvUtil import Data.Tuple import MyData inv_Fdiff = runI . e_Fdiff data StatesOfFdiff e_1 e_9 e_10 e_13 e_15 e_17 e_19 e_20 e_22 e_23 e_24 e_25 e_26 e_29 e_30 = S_Fdiff_1 e_1 | S_Fdiff_9 e_9 | S_Fdiff_10 e_10 | S_Fdiff_13 e_13 | S_Fdiff_15 e_15 | S_Fdiff_17 e_17 | S_Fdiff_19 e_19 | S_Fdiff_20 e_20 | S_Fdiff_22 e_22 | S_Fdiff_23 e_23 | S_Fdiff_24 e_24 | S_Fdiff_25 e_25 | S_Fdiff_26 e_26 | S_Fdiff_29 e_29 | S_Fdiff_30 e_30 e_Fdiff x = case trav_Fdiff_0 x of S_Fdiff_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: Fdiff" trav_Fdiff_0 (Pair t1 t2) = sem_Fdiff_0_Pair (Pair t1 t2) (trav_Fdiff_5 t1) (trav_Fdiff_1 t2) trav_Fdiff_0 t = sem_Fdiff_0___ t trav_Fdiff_1 (Nil) = sem_Fdiff_1_Nil Nil trav_Fdiff_1 (Cons t1 t2) = sem_Fdiff_1_Cons (Cons t1 t2) (trav_Fdiff_3 t1) (trav_Fdiff_2 t2) trav_Fdiff_1 t = sem_Fdiff_1___ t trav_Fdiff_2 t = sem_Fdiff_2___ t trav_Fdiff_3 (Keep) = sem_Fdiff_3_Keep Keep trav_Fdiff_3 (Ins t1) = sem_Fdiff_3_Ins (Ins t1) (trav_Fdiff_4 t1) trav_Fdiff_3 (Del) = sem_Fdiff_3_Del Del trav_Fdiff_3 t = sem_Fdiff_3___ t trav_Fdiff_4 t = sem_Fdiff_4___ t trav_Fdiff_5 (Nil) = sem_Fdiff_5_Nil Nil trav_Fdiff_5 (Cons t1 t2) = sem_Fdiff_5_Cons (Cons t1 t2) (trav_Fdiff_7 t1) (trav_Fdiff_6 t2) trav_Fdiff_5 t = sem_Fdiff_5___ t trav_Fdiff_6 t = sem_Fdiff_6___ t trav_Fdiff_7 t = sem_Fdiff_7___ t sem_Fdiff_0_Pair tree (S_Fdiff_26 t1) (S_Fdiff_10 t2) = S_Fdiff_1 ((\(x1_1, x1_2, x1_3) (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) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E20) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12, r_v13)) ((,) (Pair r_v3 r_v2) r_v1)) >=> (\(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_Fdiff_0_Pair tree (S_Fdiff_26 t1) (S_Fdiff_13 t2) = S_Fdiff_1 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_2 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v21, r_v22, r_v12)) ((\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E47) (r_v21) <- return r_x2 return (r_v11, r_v21, r_v12, r_v13)) ((,) (Pair (Cons r_v1 r_v4) r_v3) r_v2)) >=> (\(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_Fdiff_0_Pair tree (S_Fdiff_26 t1) (S_Fdiff_15 t2) = S_Fdiff_1 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_3 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E80) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12)) ((,) (Pair r_v3 r_v2) r_v1)) >=> ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2, r_x3, r_x4) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E72) (r_v21) <- return r_x2 (r_v31) <- return r_x3 (r_v41) <- return r_x4 do let tv4 = r_v41 let tv3 = r_v31 let tv2 = r_v12 tv1 <- checkEqPrim r_v11 r_v21 return (tv1, tv2, tv3, tv4)) ((,,,) (Right something) r_v1 r_v2 r_v3)) >=> (\(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_Fdiff_0_Pair tree (S_Fdiff_25 t1) (S_Fdiff_9 t2) = S_Fdiff_1 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\() () -> return ()) (\() -> return ((,) Nil Nil)) tmp_r1 tmp_r2)) t1 t2) sem_Fdiff_0___ tree = S_Fdiff_24 undefined sem_Fdiff_1_Cons tree (S_Fdiff_19 t1) (S_Fdiff_17 t2) = S_Fdiff_10 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_Fdiff_1_Cons tree (S_Fdiff_20 t1) (S_Fdiff_17 t2) = S_Fdiff_13 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_Fdiff_1_Cons tree (S_Fdiff_22 t1) (S_Fdiff_17 t2) = S_Fdiff_15 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_3 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_Fdiff_1_Nil tree = S_Fdiff_9 (return ()) sem_Fdiff_1___ tree = S_Fdiff_24 undefined sem_Fdiff_2___ tree = S_Fdiff_17 (return tree, return tree, return tree) sem_Fdiff_3_Del tree = S_Fdiff_19 (return ()) sem_Fdiff_3_Ins tree (S_Fdiff_23 t1) = S_Fdiff_20 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_Fdiff_3_Keep tree = S_Fdiff_22 (return ()) sem_Fdiff_3___ tree = S_Fdiff_24 undefined sem_Fdiff_4___ tree = S_Fdiff_23 (return tree) sem_Fdiff_5_Cons tree (S_Fdiff_30 t1) (S_Fdiff_29 t2) = S_Fdiff_26 ((\(x1_1, x1_2, x1_3) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_2 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_3 tmp_r2 <- x2_3 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_Fdiff_5_Nil tree = S_Fdiff_25 (return ()) sem_Fdiff_5___ tree = S_Fdiff_24 undefined sem_Fdiff_6___ tree = S_Fdiff_29 (return tree, return tree, return tree) sem_Fdiff_7___ tree = S_Fdiff_30 (return tree, return tree, return tree) data StatesOfE20 e_3 e_9 e_10 e_13 e_15 e_17 e_19 e_20 e_22 e_23 e_24 e_25 e_26 e_29 e_30 = S_E20_3 e_3 | S_E20_9 e_9 | S_E20_10 e_10 | S_E20_13 e_13 | S_E20_15 e_15 | S_E20_17 e_17 | S_E20_19 e_19 | S_E20_20 e_20 | S_E20_22 e_22 | S_E20_23 e_23 | S_E20_24 e_24 | S_E20_25 e_25 | S_E20_26 e_26 | S_E20_29 e_29 | S_E20_30 e_30 e_E20 x = case trav_E20_0 x of S_E20_3 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E20" trav_E20_0 (Pair t1 t2) = sem_E20_0_Pair (Pair t1 t2) (trav_E20_5 t1) (trav_E20_1 t2) trav_E20_0 t = sem_E20_0___ t trav_E20_1 (Nil) = sem_E20_1_Nil Nil trav_E20_1 (Cons t1 t2) = sem_E20_1_Cons (Cons t1 t2) (trav_E20_3 t1) (trav_E20_2 t2) trav_E20_1 t = sem_E20_1___ t trav_E20_2 t = sem_E20_2___ t trav_E20_3 (Keep) = sem_E20_3_Keep Keep trav_E20_3 (Ins t1) = sem_E20_3_Ins (Ins t1) (trav_E20_4 t1) trav_E20_3 (Del) = sem_E20_3_Del Del trav_E20_3 t = sem_E20_3___ t trav_E20_4 t = sem_E20_4___ t trav_E20_5 (Nil) = sem_E20_5_Nil Nil trav_E20_5 (Cons t1 t2) = sem_E20_5_Cons (Cons t1 t2) (trav_E20_7 t1) (trav_E20_6 t2) trav_E20_5 t = sem_E20_5___ t trav_E20_6 t = sem_E20_6___ t trav_E20_7 t = sem_E20_7___ t sem_E20_0_Pair tree (S_E20_26 t1) (S_E20_10 t2) = S_E20_3 ((\(x1_1, x1_2, x1_3) (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) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E20) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12, r_v13)) ((,) (Pair r_v3 r_v2) r_v1)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E22) return (r_v21, r_v11, r_v22)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4)))) tmp_r1 tmp_r2)) t1 t2) sem_E20_0_Pair tree (S_E20_26 t1) (S_E20_13 t2) = S_E20_3 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_2 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v21, r_v22, r_v12)) ((\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E47) (r_v21) <- return r_x2 return (r_v11, r_v21, r_v12, r_v13)) ((,) (Pair (Cons r_v1 r_v4) r_v3) r_v2)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E22) return (r_v21, r_v11, r_v22)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4)))) tmp_r1 tmp_r2)) t1 t2) sem_E20_0_Pair tree (S_E20_26 t1) (S_E20_15 t2) = S_E20_3 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_3 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E80) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12)) ((,) (Pair r_v3 r_v2) r_v1)) >=> ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2, r_x3, r_x4) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E72) (r_v21) <- return r_x2 (r_v31) <- return r_x3 (r_v41) <- return r_x4 do let tv4 = r_v41 let tv3 = r_v31 let tv2 = r_v12 tv1 <- checkEqPrim r_v11 r_v21 return (tv1, tv2, tv3, tv4)) ((,,,) (Right something) r_v1 r_v2 r_v3)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E22) return (r_v21, r_v11, r_v22)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4))))) tmp_r1 tmp_r2)) t1 t2) sem_E20_0_Pair tree (S_E20_25 t1) (S_E20_9 t2) = S_E20_3 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\() () -> return ()) (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21, r_v22) <- (return r_x2 >>= e_E22) return (r_v21, r_v11, r_v22)) ((,) Nil Nil)) tmp_r1 tmp_r2)) t1 t2) sem_E20_0___ tree = S_E20_24 undefined sem_E20_1_Cons tree (S_E20_19 t1) (S_E20_17 t2) = S_E20_10 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E20_1_Cons tree (S_E20_20 t1) (S_E20_17 t2) = S_E20_13 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E20_1_Cons tree (S_E20_22 t1) (S_E20_17 t2) = S_E20_15 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_3 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E20_1_Nil tree = S_E20_9 (return ()) sem_E20_1___ tree = S_E20_24 undefined sem_E20_2___ tree = S_E20_17 (return tree, return tree, return tree) sem_E20_3_Del tree = S_E20_19 (return ()) sem_E20_3_Ins tree (S_E20_23 t1) = S_E20_20 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E20_3_Keep tree = S_E20_22 (return ()) sem_E20_3___ tree = S_E20_24 undefined sem_E20_4___ tree = S_E20_23 (return tree) sem_E20_5_Cons tree (S_E20_30 t1) (S_E20_29 t2) = S_E20_26 ((\(x1_1, x1_2, x1_3) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_2 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_3 tmp_r2 <- x2_3 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E20_5_Nil tree = S_E20_25 (return ()) sem_E20_5___ tree = S_E20_24 undefined sem_E20_6___ tree = S_E20_29 (return tree, return tree, return tree) sem_E20_7___ tree = S_E20_30 (return tree, return tree, return tree) data StatesOfE21 e_0 = S_E21_0 e_0 e_E21 x = case trav_E21_0 x of S_E21_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E21" trav_E21_0 t = sem_E21_0___ t sem_E21_0___ tree = S_E21_0 (return tree) data StatesOfE22 e_0 e_1 e_4 e_5 = S_E22_0 e_0 | S_E22_1 e_1 | S_E22_4 e_4 | S_E22_5 e_5 e_E22 x = case trav_E22_0 x of S_E22_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E22" trav_E22_0 (Cons t1 t2) = sem_E22_0_Cons (Cons t1 t2) (trav_E22_2 t1) (trav_E22_1 t2) trav_E22_0 t = sem_E22_0___ t trav_E22_1 t = sem_E22_1___ t trav_E22_2 t = sem_E22_2___ t sem_E22_0_Cons tree (S_E22_5 t1) (S_E22_4 t2) = S_E22_1 ((\(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_E22_0___ tree = S_E22_0 undefined sem_E22_1___ tree = S_E22_4 (return tree) sem_E22_2___ tree = S_E22_5 (return tree) data StatesOfE32 e_0 = S_E32_0 e_0 e_E32 x = case trav_E32_0 x of S_E32_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E32" trav_E32_0 t = sem_E32_0___ t sem_E32_0___ tree = S_E32_0 (return tree) data StatesOfE47 e_5 e_9 e_10 e_13 e_15 e_17 e_19 e_20 e_22 e_23 e_24 e_25 e_26 e_29 e_30 = S_E47_5 e_5 | S_E47_9 e_9 | S_E47_10 e_10 | S_E47_13 e_13 | S_E47_15 e_15 | S_E47_17 e_17 | S_E47_19 e_19 | S_E47_20 e_20 | S_E47_22 e_22 | S_E47_23 e_23 | S_E47_24 e_24 | S_E47_25 e_25 | S_E47_26 e_26 | S_E47_29 e_29 | S_E47_30 e_30 e_E47 x = case trav_E47_0 x of S_E47_5 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E47" trav_E47_0 (Pair t1 t2) = sem_E47_0_Pair (Pair t1 t2) (trav_E47_5 t1) (trav_E47_1 t2) trav_E47_0 t = sem_E47_0___ t trav_E47_1 (Nil) = sem_E47_1_Nil Nil trav_E47_1 (Cons t1 t2) = sem_E47_1_Cons (Cons t1 t2) (trav_E47_3 t1) (trav_E47_2 t2) trav_E47_1 t = sem_E47_1___ t trav_E47_2 t = sem_E47_2___ t trav_E47_3 (Keep) = sem_E47_3_Keep Keep trav_E47_3 (Ins t1) = sem_E47_3_Ins (Ins t1) (trav_E47_4 t1) trav_E47_3 (Del) = sem_E47_3_Del Del trav_E47_3 t = sem_E47_3___ t trav_E47_4 t = sem_E47_4___ t trav_E47_5 (Nil) = sem_E47_5_Nil Nil trav_E47_5 (Cons t1 t2) = sem_E47_5_Cons (Cons t1 t2) (trav_E47_7 t1) (trav_E47_6 t2) trav_E47_5 t = sem_E47_5___ t trav_E47_6 t = sem_E47_6___ t trav_E47_7 t = sem_E47_7___ t sem_E47_0_Pair tree (S_E47_26 t1) (S_E47_10 t2) = S_E47_5 ((\(x1_1, x1_2, x1_3) (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) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E20) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12, r_v13)) ((,) (Pair r_v3 r_v2) r_v1)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E48) (r_v21) <- return r_x2 return (r_v11, r_v12, r_v21)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4)))) tmp_r1 tmp_r2)) t1 t2) sem_E47_0_Pair tree (S_E47_26 t1) (S_E47_13 t2) = S_E47_5 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_2 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v21, r_v22, r_v12)) ((\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E47) (r_v21) <- return r_x2 return (r_v11, r_v21, r_v12, r_v13)) ((,) (Pair (Cons r_v1 r_v4) r_v3) r_v2)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E48) (r_v21) <- return r_x2 return (r_v11, r_v12, r_v21)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4)))) tmp_r1 tmp_r2)) t1 t2) sem_E47_0_Pair tree (S_E47_26 t1) (S_E47_15 t2) = S_E47_5 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_3 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E80) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12)) ((,) (Pair r_v3 r_v2) r_v1)) >=> ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2, r_x3, r_x4) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E72) (r_v21) <- return r_x2 (r_v31) <- return r_x3 (r_v41) <- return r_x4 do let tv4 = r_v41 let tv3 = r_v31 let tv2 = r_v12 tv1 <- checkEqPrim r_v11 r_v21 return (tv1, tv2, tv3, tv4)) ((,,,) (Right something) r_v1 r_v2 r_v3)) >=> (\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E48) (r_v21) <- return r_x2 return (r_v11, r_v12, r_v21)) ((,) (Cons r_v1 r_v3) (Cons r_v2 r_v4))))) tmp_r1 tmp_r2)) t1 t2) sem_E47_0_Pair tree (S_E47_25 t1) (S_E47_9 t2) = S_E47_5 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\() () -> return ()) (\() -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E48) (r_v21) <- return r_x2 return (r_v11, r_v12, r_v21)) ((,) Nil Nil)) tmp_r1 tmp_r2)) t1 t2) sem_E47_0___ tree = S_E47_24 undefined sem_E47_1_Cons tree (S_E47_19 t1) (S_E47_17 t2) = S_E47_10 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E47_1_Cons tree (S_E47_20 t1) (S_E47_17 t2) = S_E47_13 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E47_1_Cons tree (S_E47_22 t1) (S_E47_17 t2) = S_E47_15 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_3 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E47_1_Nil tree = S_E47_9 (return ()) sem_E47_1___ tree = S_E47_24 undefined sem_E47_2___ tree = S_E47_17 (return tree, return tree, return tree) sem_E47_3_Del tree = S_E47_19 (return ()) sem_E47_3_Ins tree (S_E47_23 t1) = S_E47_20 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E47_3_Keep tree = S_E47_22 (return ()) sem_E47_3___ tree = S_E47_24 undefined sem_E47_4___ tree = S_E47_23 (return tree) sem_E47_5_Cons tree (S_E47_30 t1) (S_E47_29 t2) = S_E47_26 ((\(x1_1, x1_2, x1_3) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_2 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_3 tmp_r2 <- x2_3 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E47_5_Nil tree = S_E47_25 (return ()) sem_E47_5___ tree = S_E47_24 undefined sem_E47_6___ tree = S_E47_29 (return tree, return tree, return tree) sem_E47_7___ tree = S_E47_30 (return tree, return tree, return tree) data StatesOfE48 e_0 e_1 e_4 e_5 = S_E48_0 e_0 | S_E48_1 e_1 | S_E48_4 e_4 | S_E48_5 e_5 e_E48 x = case trav_E48_0 x of S_E48_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E48" trav_E48_0 (Cons t1 t2) = sem_E48_0_Cons (Cons t1 t2) (trav_E48_2 t1) (trav_E48_1 t2) trav_E48_0 t = sem_E48_0___ t trav_E48_1 t = sem_E48_1___ t trav_E48_2 t = sem_E48_2___ t sem_E48_0_Cons tree (S_E48_5 t1) (S_E48_4 t2) = S_E48_1 ((\(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_E48_0___ tree = S_E48_0 undefined sem_E48_1___ tree = S_E48_4 (return tree) sem_E48_2___ tree = S_E48_5 (return tree) data StatesOfE51 e_0 = S_E51_0 e_0 e_E51 x = case trav_E51_0 x of S_E51_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E51" trav_E51_0 t = sem_E51_0___ t sem_E51_0___ tree = S_E51_0 (return tree) data StatesOfE60 e_0 = S_E60_0 e_0 e_E60 x = case trav_E60_0 x of S_E60_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E60" trav_E60_0 t = sem_E60_0___ t sem_E60_0___ tree = S_E60_0 (return tree) data StatesOfE72 e_1 e_7 e_8 e_10 e_13 e_17 e_18 e_19 e_20 e_21 = S_E72_1 e_1 | S_E72_7 e_7 | S_E72_8 e_8 | S_E72_10 e_10 | S_E72_13 e_13 | S_E72_17 e_17 | S_E72_18 e_18 | S_E72_19 e_19 | S_E72_20 e_20 | S_E72_21 e_21 e_E72 x = case trav_E72_0 x of S_E72_1 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E72" trav_E72_0 (Right t1) = sem_E72_0_Right (Right t1) (trav_E72_1 t1) trav_E72_0 (Left t1) = sem_E72_0_Left (Left t1) (trav_E72_2 t1) trav_E72_0 t = sem_E72_0___ t trav_E72_1 (B1) = sem_E72_1_B1 B1 trav_E72_1 (B0) = sem_E72_1_B0 B0 trav_E72_1 t = sem_E72_1___ t trav_E72_2 (Pair t1 t2) = sem_E72_2_Pair (Pair t1 t2) (trav_E72_4 t1) (trav_E72_3 t2) trav_E72_2 t = sem_E72_2___ t trav_E72_3 (B1) = sem_E72_3_B1 B1 trav_E72_3 (B0) = sem_E72_3_B0 B0 trav_E72_3 t = sem_E72_3___ t trav_E72_4 (B1) = sem_E72_4_B1 B1 trav_E72_4 (B0) = sem_E72_4_B0 B0 trav_E72_4 t = sem_E72_4___ t sem_E72_0_Left tree (S_E72_10 t1) = S_E72_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) B0 B1)) ()) tmp_r1)) t1) sem_E72_0_Left tree (S_E72_13 t1) = S_E72_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) B1 B0)) ()) tmp_r1)) t1) sem_E72_0_Right tree (S_E72_7 t1) = S_E72_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) B0 B0)) ()) tmp_r1)) t1) sem_E72_0_Right tree (S_E72_8 t1) = S_E72_1 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\() -> (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) B1 B1)) ()) tmp_r1)) t1) sem_E72_0___ tree = S_E72_19 undefined sem_E72_1_B0 tree = S_E72_7 (return ()) sem_E72_1_B1 tree = S_E72_8 (return ()) sem_E72_1___ tree = S_E72_19 undefined sem_E72_2_Pair tree (S_E72_20 t1) (S_E72_17 t2) = S_E72_10 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() () -> return ()) tmp_r1 tmp_r2)) t1 t2) sem_E72_2_Pair tree (S_E72_21 t1) (S_E72_18 t2) = S_E72_13 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() () -> return ()) tmp_r1 tmp_r2)) t1 t2) sem_E72_2___ tree = S_E72_19 undefined sem_E72_3_B0 tree = S_E72_18 (return ()) sem_E72_3_B1 tree = S_E72_17 (return ()) sem_E72_3___ tree = S_E72_19 undefined sem_E72_4_B0 tree = S_E72_20 (return ()) sem_E72_4_B1 tree = S_E72_21 (return ()) sem_E72_4___ tree = S_E72_19 undefined data StatesOfE73 e_0 = S_E73_0 e_0 e_E73 x = case trav_E73_0 x of S_E73_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E73" trav_E73_0 t = sem_E73_0___ t sem_E73_0___ tree = S_E73_0 (return tree) data StatesOfE74 e_0 = S_E74_0 e_0 e_E74 x = case trav_E74_0 x of S_E74_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E74" trav_E74_0 t = sem_E74_0___ t sem_E74_0___ tree = S_E74_0 (return tree) data StatesOfE80 e_6 e_9 e_10 e_13 e_15 e_17 e_19 e_20 e_22 e_23 e_24 e_25 e_26 e_29 e_30 = S_E80_6 e_6 | S_E80_9 e_9 | S_E80_10 e_10 | S_E80_13 e_13 | S_E80_15 e_15 | S_E80_17 e_17 | S_E80_19 e_19 | S_E80_20 e_20 | S_E80_22 e_22 | S_E80_23 e_23 | S_E80_24 e_24 | S_E80_25 e_25 | S_E80_26 e_26 | S_E80_29 e_29 | S_E80_30 e_30 e_E80 x = case trav_E80_0 x of S_E80_6 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E80" trav_E80_0 (Pair t1 t2) = sem_E80_0_Pair (Pair t1 t2) (trav_E80_5 t1) (trav_E80_1 t2) trav_E80_0 t = sem_E80_0___ t trav_E80_1 (Nil) = sem_E80_1_Nil Nil trav_E80_1 (Cons t1 t2) = sem_E80_1_Cons (Cons t1 t2) (trav_E80_3 t1) (trav_E80_2 t2) trav_E80_1 t = sem_E80_1___ t trav_E80_2 t = sem_E80_2___ t trav_E80_3 (Keep) = sem_E80_3_Keep Keep trav_E80_3 (Ins t1) = sem_E80_3_Ins (Ins t1) (trav_E80_4 t1) trav_E80_3 (Del) = sem_E80_3_Del Del trav_E80_3 t = sem_E80_3___ t trav_E80_4 t = sem_E80_4___ t trav_E80_5 (Nil) = sem_E80_5_Nil Nil trav_E80_5 (Cons t1 t2) = sem_E80_5_Cons (Cons t1 t2) (trav_E80_7 t1) (trav_E80_6 t2) trav_E80_5 t = sem_E80_5___ t trav_E80_6 t = sem_E80_6___ t trav_E80_7 t = sem_E80_7___ t sem_E80_0_Pair tree (S_E80_26 t1) (S_E80_10 t2) = S_E80_6 ((\(x1_1, x1_2, x1_3) (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) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E20) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12, r_v13)) ((,) (Pair r_v3 r_v2) r_v1)) >=> (\(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_E80_0_Pair tree (S_E80_26 t1) (S_E80_13 t2) = S_E80_6 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_2 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21, r_v22) -> return (r_v11, r_v21, r_v22, r_v12)) ((\(r_v1, r_v2, r_v3, r_v4) -> (\(r_x1, r_x2) -> do (r_v11, r_v12, r_v13) <- (return r_x1 >>= e_E47) (r_v21) <- return r_x2 return (r_v11, r_v21, r_v12, r_v13)) ((,) (Pair (Cons r_v1 r_v4) r_v3) r_v2)) >=> (\(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_E80_0_Pair tree (S_E80_26 t1) (S_E80_15 t2) = S_E80_6 ((\(x1_1, x1_2, x1_3) (x2_1) -> (do tmp_r1 <- x1_3 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\(r_v11, r_v12) (r_v21) -> return (r_v11, r_v21, r_v12)) ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E80) (r_v21) <- return r_x2 return (r_v21, r_v11, r_v12)) ((,) (Pair r_v3 r_v2) r_v1)) >=> ((\(r_v1, r_v2, r_v3) -> (\(r_x1, r_x2, r_x3, r_x4) -> do (r_v11, r_v12) <- (return r_x1 >>= e_E72) (r_v21) <- return r_x2 (r_v31) <- return r_x3 (r_v41) <- return r_x4 do let tv4 = r_v41 let tv3 = r_v31 let tv2 = r_v12 tv1 <- checkEqPrim r_v11 r_v21 return (tv1, tv2, tv3, tv4)) ((,,,) (Right something) r_v1 r_v2 r_v3)) >=> (\(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_E80_0_Pair tree (S_E80_25 t1) (S_E80_9 t2) = S_E80_6 ((\(x1_1) (x2_1) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\f g m1 m2 -> f m1 m2 >>= g) (\() () -> return ()) (\() -> (\(r_x1, r_x2) -> do (r_v11) <- return r_x1 (r_v21) <- return r_x2 return (r_v11, r_v21)) ((,) Nil Nil)) tmp_r1 tmp_r2)) t1 t2) sem_E80_0___ tree = S_E80_24 undefined sem_E80_1_Cons tree (S_E80_19 t1) (S_E80_17 t2) = S_E80_10 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E80_1_Cons tree (S_E80_20 t1) (S_E80_17 t2) = S_E80_13 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E80_1_Cons tree (S_E80_22 t1) (S_E80_17 t2) = S_E80_15 ((\(x1_1) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_3 (\() (r_v21) -> return (r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E80_1_Nil tree = S_E80_9 (return ()) sem_E80_1___ tree = S_E80_24 undefined sem_E80_2___ tree = S_E80_17 (return tree, return tree, return tree) sem_E80_3_Del tree = S_E80_19 (return ()) sem_E80_3_Ins tree (S_E80_23 t1) = S_E80_20 ((\(x1_1) -> (do tmp_r1 <- x1_1 (\(r_v11) -> return (r_v11)) tmp_r1)) t1) sem_E80_3_Keep tree = S_E80_22 (return ()) sem_E80_3___ tree = S_E80_24 undefined sem_E80_4___ tree = S_E80_23 (return tree) sem_E80_5_Cons tree (S_E80_30 t1) (S_E80_29 t2) = S_E80_26 ((\(x1_1, x1_2, x1_3) (x2_1, x2_2, x2_3) -> (do tmp_r1 <- x1_1 tmp_r2 <- x2_1 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_2 tmp_r2 <- x2_2 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2, do tmp_r1 <- x1_3 tmp_r2 <- x2_3 (\(r_v11) (r_v21) -> return (r_v11, r_v21)) tmp_r1 tmp_r2)) t1 t2) sem_E80_5_Nil tree = S_E80_25 (return ()) sem_E80_5___ tree = S_E80_24 undefined sem_E80_6___ tree = S_E80_29 (return tree, return tree, return tree) sem_E80_7___ tree = S_E80_30 (return tree, return tree, return tree) data StatesOfE81 e_0 = S_E81_0 e_0 e_E81 x = case trav_E81_0 x of S_E81_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E81" trav_E81_0 t = sem_E81_0___ t sem_E81_0___ tree = S_E81_0 (return tree) data StatesOfE82 e_0 = S_E82_0 e_0 e_E82 x = case trav_E82_0 x of S_E82_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E82" trav_E82_0 t = sem_E82_0___ t sem_E82_0___ tree = S_E82_0 (return tree) data StatesOfE90 e_0 = S_E90_0 e_0 e_E90 x = case trav_E90_0 x of S_E90_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E90" trav_E90_0 t = sem_E90_0___ t sem_E90_0___ tree = S_E90_0 (return tree) data StatesOfE92 e_0 = S_E92_0 e_0 e_E92 x = case trav_E92_0 x of S_E92_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E92" trav_E92_0 t = sem_E92_0___ t sem_E92_0___ tree = S_E92_0 (return tree) data StatesOfE93 e_0 = S_E93_0 e_0 e_E93 x = case trav_E93_0 x of S_E93_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E93" trav_E93_0 t = sem_E93_0___ t sem_E93_0___ tree = S_E93_0 (return tree) data StatesOfE94 e_0 = S_E94_0 e_0 e_E94 x = case trav_E94_0 x of S_E94_0 y -> y _ -> fail "Input is not the range of the expression/function corresponding to the state: E94" trav_E94_0 t = sem_E94_0___ t sem_E94_0___ tree = S_E94_0 (return tree) diff (Nil) (Nil) = Pair Nil Nil diff (Cons a x) (Cons b y) = letAt15 (diff x (Cons b y)) a diff (Cons a x) (Cons b y) = letAt40 (diff (Cons a x) y) b diff (Cons a x) (Cons b y) = letAt68 (eqCheck a b) a x y letAt15 (Pair org ops) a = Pair (Cons a org) (Cons Del ops) letAt40 (Pair (Cons a1 org) ops) b = Pair (Cons a1 org) (Cons (Ins b) ops) letAt68 (Right c) a x y = letAt75 (diff x y) a letAt75 (Pair org ops) a = Pair (Cons a org) (Cons Keep ops) eqCheck (B0) (B1) = Left (Pair B0 B1) eqCheck (B1) (B0) = Left (Pair B1 B0) eqCheck (B0) (B0) = Right B0 eqCheck (B1) (B1) = Right B1