+
+
+--================================================================================
+Typechecked:
+{- nonrec -}
+{- nonrec -}
+Succeeded{-r4G,x-}{i} =
+ _/\_ a{-r8v-} b{-r8w-} -> \ tpl_B1 ->
+ Succeeded{-r4G,x-}{i}
+ {_@_ a{-r8v-} _@_ b{-r8w-} tpl_B1}
+Failed{-r4F,x-}{i} =
+ _/\_ a{-r8v-} b{-r8w-} -> \ tpl_B1 ->
+ Failed{-r4F,x-}{i}
+ {_@_ a{-r8v-} _@_ b{-r8w-} tpl_B1}
+{- nonrec -}
+MkDigraph{-r8L,x-}{i} =
+ _/\_ vertex{-r8G-} -> \ tpl_B1 ->
+ MkDigraph{-r8L,x-}{i}
+ {_@_ vertex{-r8G-} tpl_B1}
+{- nonrec -}
+{- rec -}
+AbsBinds
+[a{-a1lz-}, b{-a1lA-}]
+[]
+[([a{-a1lz-}, b{-a1lA-}], $d1{-r1lE,x-}, d.Eval_a1kX)]
+ d.Eval_a1kX =
+ ({-dict-} [] [])
+{- rec -}
+AbsBinds
+[vertex{-a1lB-}]
+[]
+[([vertex{-a1lB-}], $d2{-r1lS,x-}, d.Eval_a1l3)]
+ d.Eval_a1l3 =
+ ({-dict-} [] [])
+{- nonrec -}
+d.Monad_a1l5 =
+ PrelBase.$d24{-rj0,p-}
+>>=_a1lQ =
+ PrelBase.>>={-811,p-}
+ PrelBase.[]{-3j,p-}
+ d.Monad_a1l5
+d.Monad_a1l8 =
+ d.Monad_a1l5
+return_a1lP =
+ PrelBase.return{-816,p-}
+ PrelBase.[]{-3j,p-}
+ d.Monad_a1l8
+d.MonadZero_a1la =
+ PrelBase.$d23{-riZ,p-}
+zero_a1lO =
+ PrelBase.zero{-810,p-}
+ PrelBase.[]{-3j,p-}
+ d.MonadZero_a1la
+d.Functor_a1ld =
+ PrelBase.$d25{-rj1,p-}
+map_a1lN =
+ PrelBase.map{-rkx,p-}
+ PrelBase.[]{-3j,p-}
+ d.Functor_a1ld
+d.MonadPlus_a1lg =
+ PrelBase.$d22{-riY,p-}
+++_a1lM =
+ PrelBase.++{-rnk,p-}
+ PrelBase.[]{-3j,p-}
+ d.MonadPlus_a1lg
+>>=_a1lL =
+ >>=_a1lQ
+return_a1lK =
+ return_a1lP
+>>=_a1lJ =
+ >>=_a1lQ
+return_a1lI =
+ return_a1lP
+>>=_a1lH =
+ >>=_a1lQ
+return_a1lG =
+ return_a1lP
+zero_a1lF =
+ zero_a1lO
+{- nonrec -}
+AbsBinds
+[vertex{-a1ba-}]
+[d.Eq_a1bl]
+[([vertex{-a1ba-}],
+ isRecursiveCycle{-r6x,x-},
+ isRecursiveCycle_a1b5)]
+ d.Eq_a1bp =
+ d.Eq_a1bl
+ d.Eq_a1bq =
+ d.Eq_a1bl
+ d.Eq_a1bn =
+ PrelTup.$d9{-rEY,p-}
+ [vertex{-a1ba-}, vertex{-a1ba-}]
+ [d.Eq_a1bp, d.Eq_a1bq]
+ elem_a1lT =
+ PrelList.elem{-rF6,p-}
+ (vertex{-a1ba-}, vertex{-a1ba-})
+ d.Eq_a1bn
+ isRecursiveCycle_a1b5
+ [vertex_r8n] edges_r8p
+ = (vertex_r8n, vertex_r8n) elem_a1lT edges_r8p
+ isRecursiveCycle_a1b5
+ cycle_r8r edges_r8t
+ = PrelBase.True{-5E,p-}{i}
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1bC-}, name{-a1bD-}, code{-a1bE-}]
+[d.Eq_a1cs, d.Ord_a1ct]
+[([name{-a1bD-}, vertex{-a1bC-}, code{-a1bE-}],
+ lookupVertex{-r6w,x-},
+ lookupVertex_a1bz)]
+ d.Eq_a1cv =
+ d.Eq_a1cs
+ ==_a1lU =
+ PrelBase.=={-8Y,p-}
+ vertex{-a1bC-}
+ d.Eq_a1cv
+ lookupVertex_a1bz
+ flat_info_r8e vertex_r8g
+ = PrelList.head{-rFm,p-}
+ code{-a1bE-} code_list_r8i
+ where
+ {- nonrec -}
+ AbsBinds [] [] [([], code_list_r8i, code_list_a1bI)]
+ code_list_a1bI
+ = [ code_r8l |
+ (vertex'_r8k, _, _, code_r8l) <- flat_info_r8e, vertex_r8g
+ ==_a1lU vertex'_r8k
+ ]
+ {- nonrec -}
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1cO-}, name{-a1cR-}, code{-a1cS-}]
+[d.Eq_a1ei, d.Ord_a1ej]
+[([name{-a1cR-}, code{-a1cS-}, vertex{-a1cO-}],
+ mkEdges{-r6v,x-},
+ mkEdges_a1cL)]
+ d.Ord_a1ek =
+ d.Ord_a1ej
+ d.MonadZero_a1el =
+ PrelBase.$d23{-riZ,p-}
+ mkEdges_a1cL
+ vertices_r7U flat_info_r7W
+ = [ (source_vertex_r87, target_vertex_r8c) |
+ (source_vertex_r87, _, used_names_r88, _) <- flat_info_r7W, target_name_r8a <- Set.setToList{-rhd,p-}
+ name{-a1cR-} used_names_r88, target_vertex_r8c <- vertices_defining_a1lV target_name_r8a
+ flat_info_r7W
+ ]
+ where
+ {- nonrec -}
+ AbsBinds
+ [t{-a1d5-}, t{-a1da-}, t{-a1dd-}, a{-a1dg-}, a{-a1di-}]
+ [d.Ord_a1du, d.MonadZero_a1dA]
+ [([t{-a1d5-}, t{-a1da-}, t{-a1dd-}, a{-a1dg-}, a{-a1di-}],
+ vertices_defining_r7Y,
+ vertices_defining_a1cU)]
+ d.Monad_a1dw =
+ PrelBase.scsel_MonadZeroPrelBaseMonad{-a1m0,p-}
+ a{-a1dg-}
+ d.MonadZero_a1dA
+ elementOf_a1lZ =
+ Set.elementOf{-rh5,p-}
+ a{-a1di-}
+ d.Ord_a1du
+ >>=_a1lY =
+ PrelBase.>>={-811,p-}
+ a{-a1dg-}
+ d.Monad_a1dw
+ d.Monad_a1dy =
+ d.Monad_a1dw
+ return_a1lX =
+ PrelBase.return{-816,p-}
+ a{-a1dg-}
+ d.Monad_a1dy
+ zero_a1lW =
+ PrelBase.zero{-810,p-}
+ a{-a1dg-}
+ d.MonadZero_a1dA
+ vertices_defining_a1cU
+ name_r80 flat_info_r82
+ = [ vertex_r84 |
+ (vertex_r84, names_defined_r85, _, _) <- flat_info_r82, name_r80
+ elementOf_a1lZ names_defined_r85
+ ]
+ {- nonrec -}
+ vertices_defining_a1lV =
+ vertices_defining_r7Y
+ [vertex{-a1cO-}, Set.Set{-rh2,p-} name{-a1cR-}, code{-a1cS-}, PrelBase.[]{-3j,p-}, name{-a1cR-}]
+ [d.Ord_a1ek, d.MonadZero_a1el]
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1eC-}, name{-a1eD-}, code{-a1eE-}]
+[]
+[([name{-a1eD-}, code{-a1eE-}, vertex{-a1eC-}],
+ mkVertices{-r6u,x-},
+ mkVertices_a1ez)]
+ mkVertices_a1ez
+ info_r7Q
+ = [ vertex_r7S |
+ (vertex_r7S, _, _, _) <- info_r7Q ]
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1ff-}]
+[d.Eq_a1fs]
+[([vertex{-a1ff-}], isCyclic{-r6s,x-}, isCyclic_a1fc)]
+ d.Eq_a1fw =
+ d.Eq_a1fs
+ d.Eq_a1fx =
+ d.Eq_a1fs
+ d.Eq_a1fu =
+ PrelTup.$d9{-rEY,p-}
+ [vertex{-a1ff-}, vertex{-a1ff-}]
+ [d.Eq_a1fw, d.Eq_a1fx]
+ elem_a1m1 =
+ PrelList.elem{-rF6,p-}
+ (vertex{-a1ff-}, vertex{-a1ff-})
+ d.Eq_a1fu
+ isCyclic_a1fc
+ edges_r7w [v_r7y]
+ = (v_r7y, v_r7y) elem_a1m1 edges_r7w
+ isCyclic_a1fc
+ edges_r7A vs_r7C
+ = PrelBase.True{-5E,p-}{i}
+{- nonrec -}
+{- rec -}
+AbsBinds
+[t{-a1gi-}]
+[d.Eq_a1gA]
+[([t{-a1gi-}], dfs{-r6y,x-}, dfs_a1fz)]
+ elem_a1m2 =
+ PrelList.elem{-rF6,p-}
+ t{-a1gi-}
+ d.Eq_a1gA
+ dfs_a1fz
+ r_r7f (vs_r7h, ns_r7i) PrelBase.[]{-5i,p-}{i}
+ = (vs_r7h, ns_r7i)
+ dfs_a1fz
+ r_r7l (vs_r7n, ns_r7o) (x_r7q PrelBase.:{-55,p-}{i} xs_r7r)
+ | [x_r7q elem_a1m2 vs_r7n] =
+ dfs_a1fz r_r7l (vs_r7n, ns_r7o) xs_r7r
+ | [PrelBase.otherwise{-818,p-}] =
+ dfs_a1fz r_r7l
+ (vs'_r7t,
+ ++_a1lM
+ t{-a1gi-}
+ (PrelBase.:{-55,p-}{i}
+ t{-a1gi-}
+ x_r7q ns'_r7u)
+ ns_r7o)
+ xs_r7r
+ where
+ {- nonrec -}
+ AbsBinds [] [] [([], vs'_r7t, vs'_a1g4), ([], ns'_r7u, ns'_a1g5)]
+ (vs'_a1g4, ns'_a1g5)
+ = dfs_a1fz r_r7l
+ (PrelBase.:{-55,p-}{i}
+ t{-a1gi-}
+ x_r7q vs_r7n,
+ PrelBase.[]{-5i,p-}{i}
+ t{-a1gi-})
+ r_r7l x_r7q
+ {- nonrec -}
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1gK-}]
+[d.Eq_a1ju]
+[([vertex{-a1gK-}],
+ stronglyConnComp{-r6r,x-},
+ stronglyConnComp_a1gH)]
+ d.Eq_a1jv =
+ d.Eq_a1ju
+ d.Eq_a1jq =
+ d.Eq_a1ju
+ d.Eq_a1jx =
+ d.Eq_a1ju
+ dfs_a1m3 =
+ dfs{-r6y,x-}
+ vertex{-a1gK-}
+ d.Eq_a1jx
+ d.Eq_a1jr =
+ d.Eq_a1ju
+ stronglyConnComp_a1gH
+ es_r6B vs_r6D
+ = PrelTup.snd{-rF4,p-}
+ [[vertex{-a1gK-}], [[vertex{-a1gK-}]]] span_tree_a1m4 new_range_a1m6 reversed_edges_r6F
+ (PrelBase.[]{-5i,p-}{i}
+ vertex{-a1gK-},
+ PrelBase.[]{-5i,p-}{i}
+ [vertex{-a1gK-}])
+ PrelTup.snd{-rF4,p-}
+ [[vertex{-a1gK-}], [vertex{-a1gK-}]] dfs_a1m3 new_range_a1m5 es_r6B
+ (PrelBase.[]{-5i,p-}{i}
+ vertex{-a1gK-},
+ PrelBase.[]{-5i,p-}{i}
+ vertex{-a1gK-})
+ vs_r6D
+ where
+ {- rec -}
+ AbsBinds
+ [t{-a1h2-}]
+ [d.Eq_a1hJ]
+ [([t{-a1h2-}], span_tree_r6I, span_tree_a1gO)]
+ elem_a1m8 =
+ PrelList.elem{-rF6,p-}
+ t{-a1h2-}
+ d.Eq_a1hJ
+ d.Eq_a1hL =
+ d.Eq_a1hJ
+ dfs_a1m7 =
+ dfs{-r6y,x-}
+ t{-a1h2-}
+ d.Eq_a1hL
+ span_tree_a1gO
+ r_r6Y (vs_r70, ns_r71) PrelBase.[]{-5i,p-}{i}
+ = (vs_r70, ns_r71)
+ span_tree_a1gO
+ r_r74 (vs_r76, ns_r77) (x_r79 PrelBase.:{-55,p-}{i} xs_r7a)
+ | [x_r79 elem_a1m8 vs_r76] =
+ span_tree_a1gO r_r74 (vs_r76, ns_r77) xs_r7a
+ | [PrelBase.otherwise{-818,p-}] =
+ span_tree_a1gO r_r74
+ (vs'_r7c,
+ PrelBase.:{-55,p-}{i}
+ [t{-a1h2-}]
+ (PrelBase.:{-55,p-}{i}
+ t{-a1h2-}
+ x_r79 ns'_r7d)
+ ns_r77)
+ xs_r7a
+ where
+ {- nonrec -}
+ AbsBinds
+ []
+ []
+ [([], vs'_r7c, vs'_a1hj), ([], ns'_r7d, ns'_a1hk)]
+ (vs'_a1hj, ns'_a1hk)
+ = dfs_a1m7 r_r74
+ (PrelBase.:{-55,p-}{i}
+ t{-a1h2-}
+ x_r79 vs_r76,
+ PrelBase.[]{-5i,p-}{i}
+ t{-a1h2-})
+ r_r74 x_r79
+ {- nonrec -}
+ {- nonrec -}
+ span_tree_a1m4 =
+ span_tree_r6I
+ vertex{-a1gK-}
+ d.Eq_a1jv
+ {- rec -}
+ AbsBinds
+ [t{-a1hV-}, t{-a1i0-}]
+ [d.Eq_a1ig]
+ [([t{-a1hV-}, t{-a1i0-}], new_range_r6H, new_range_a1hN)]
+ ==_a1m9 =
+ PrelBase.=={-8Y,p-}
+ t{-a1i0-}
+ d.Eq_a1ig
+ new_range_a1hN
+ PrelBase.[]{-5i,p-}{i} w_r6Q
+ = PrelBase.[]{-5i,p-}{i}
+ t{-a1hV-}
+ new_range_a1hN
+ ((x_r6S, y_r6T) PrelBase.:{-55,p-}{i} xys_r6U) w_r6W
+ = if x_r6S ==_a1m9 w_r6W then
+ PrelBase.:{-55,p-}{i}
+ t{-a1hV-}
+ y_r6T (new_range_a1hN xys_r6U w_r6W)
+ else
+ new_range_a1hN xys_r6U w_r6W
+ {- nonrec -}
+ new_range_a1m6 =
+ new_range_r6H
+ [vertex{-a1gK-}, vertex{-a1gK-}]
+ d.Eq_a1jq
+ new_range_a1m5 =
+ new_range_r6H
+ [vertex{-a1gK-}, vertex{-a1gK-}]
+ d.Eq_a1jr
+ {- nonrec -}
+ AbsBinds [v{-a1iv-}] [] [([v{-a1iv-}], swap_r6G, swap_a1im)]
+ swap_a1im
+ (x_r6M, y_r6N)
+ = (y_r6N, x_r6M)
+ {- nonrec -}
+ {- nonrec -}
+ AbsBinds [] [] [([], reversed_edges_r6F, reversed_edges_a1iy)]
+ reversed_edges_a1iy
+ = map_a1lN
+ [Edge{-r8K,x-} vertex{-a1gK-}, Edge{-r8K,x-} vertex{-a1gK-}] swap_r6G
+ vertex{-a1gK-}
+ es_r6B
+ {- nonrec -}
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1jI-}]
+[d.Eq_a1kA]
+[([vertex{-a1jI-}], topSort{-r6t,x-}, topSort_a1jF)]
+ d.Eq_a1kI =
+ d.Eq_a1kA
+ isCyclic_a1mb =
+ isCyclic{-r6s,x-}
+ vertex{-a1jI-}
+ d.Eq_a1kI
+ d.Eq_a1kK =
+ d.Eq_a1kA
+ stronglyConnComp_a1ma =
+ stronglyConnComp{-r6r,x-}
+ vertex{-a1jI-}
+ d.Eq_a1kK
+ topSort_a1jF
+ edges_r7E vertices_r7G
+ = case cycles_r7J of
+ PrelBase.[]{-5i,p-}{i}
+ -> Succeeded{-r4G,x-}{i}
+ [[vertex{-a1jI-}], [[vertex{-a1jI-}]]] [ v_r7N |
+ [v_r7N] <- singletons_r7K
+ ]
+ _ -> Failed{-r4F,x-}{i}
+ [[vertex{-a1jI-}], [[vertex{-a1jI-}]]] cycles_r7J
+ where
+ {- nonrec -}
+ AbsBinds [] [] [([], sccs_r7I, sccs_a1jM)]
+ sccs_a1jM
+ = stronglyConnComp_a1ma edges_r7E vertices_r7G
+ {- nonrec -}
+ {- nonrec -}
+ AbsBinds
+ []
+ []
+ [([], cycles_r7J, cycles_a1jT), ([],
+ singletons_r7K,
+ singletons_a1jU)]
+ (cycles_a1jT, singletons_a1jU)
+ = List.partition{-rhM,p-}
+ [vertex{-a1jI-}] isCyclic_a1mb edges_r7E sccs_r7I
+ {- nonrec -}
+{- nonrec -}
+{- nonrec -}
+AbsBinds
+[vertex{-a1kQ-}]
+[]
+[([vertex{-a1kQ-}], mkDigraph{-r6z,x-}, mkDigraph_a1kM)]
+ mkDigraph_a1kM
+ = MkDigraph{-r8L,x-}{i}
+ vertex{-a1kQ-}
+{- nonrec -}
+ghc: module version changed to 1; reason: no old .hi file
+_interface_ Digraphs 1
+_instance_modules_
+ArrBase Foreign IO PrelNum
+_usages_
+List 1 :: partition 1;
+PrelBase 1 :: $d14 1 $d15 1 $d22 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d32 1 $d34 1 $d37 1 $d39 1 $d41 1 $d44 1 $d45 1 $d46 1 $d49 1 $d51 1 $d6 1 $d7 1 otherwise 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadPlus 1 MonadZero 1 Ord 1 Ordering 1;
+PrelList 1 :: elem 1 head 1;
+PrelNum 1 :: $d17 1 $d18 1;
+PrelTup 1 :: $d11 1 $d13 1 $d15 1 $d49 1 $d51 1 $d9 1 snd 1;
+Set 2 :: $d1 2 elementOf 2 setToList 2 Set 1;
+_exports_
+Digraphs dfs isCyclic isRecursiveCycle lookupVertex mkDigraph mkEdges mkVertices stronglyConnComp topSort Cycle Digraph(MkDigraph) Edge FlattenedDependencyInfo MaybeErr(Succeeded Failed);
+_instances_
+instance _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} = $d1;
+instance _forall_ [a] => {PrelBase.Eval (Digraph a)} = $d2;
+_declarations_
+1 $d1 _:_ _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} ;;
+1 $d2 _:_ _forall_ [a] => {PrelBase.Eval (Digraph a)} ;;
+1 type Cycle r8C = [r8C] ;
+1 data Digraph r8G = MkDigraph [r8G] ;
+1 type Edge r8E = (r8E, r8E) ;
+1 type FlattenedDependencyInfo r8y r8z r8A = [(r8y, Set.Set r8z, Set.Set r8z, r8A)] ;
+1 data MaybeErr r8v r8w = Succeeded r8v | Failed r8w ;
+1 dfs _:_ _forall_ [a] {PrelBase.Eq a} => (a -> [a]) -> ([a], [a]) -> [a] -> ([a], [a]) ;;
+1 isCyclic _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> PrelBase.Bool ;;
+1 isRecursiveCycle _:_ _forall_ [a] {PrelBase.Eq a} => Cycle a -> [Edge a] -> PrelBase.Bool ;;
+1 lookupVertex _:_ _forall_ [a b c] {PrelBase.Eq b, PrelBase.Ord a} => FlattenedDependencyInfo b a c -> b -> c ;;
+1 mkDigraph _:_ _forall_ [a] => [a] -> Digraph a ;;
+1 mkEdges _:_ _forall_ [a b c] {PrelBase.Eq c, PrelBase.Ord a} => [c] -> FlattenedDependencyInfo c a b -> [Edge c] ;;
+1 mkVertices _:_ _forall_ [a b c] => FlattenedDependencyInfo c a b -> [c] ;;
+1 stronglyConnComp _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> [[a]] ;;
+1 topSort _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> MaybeErr [a] [[a]] ;;