src/Pure/General/graph.ML
changeset 25538 58e8ba3b792b
parent 23964 d2df2797519b
child 28183 7d5103454520
equal deleted inserted replaced
25537:55017c8b0a24 25538:58e8ba3b792b
   255 
   255 
   256 (* maintain transitive acyclic graphs *)
   256 (* maintain transitive acyclic graphs *)
   257 
   257 
   258 fun add_edge_trans_acyclic (x, y) G =
   258 fun add_edge_trans_acyclic (x, y) G =
   259   add_edge_acyclic (x, y) G
   259   add_edge_acyclic (x, y) G
   260   |> fold add_edge (Library.product (all_preds G [x]) (all_succs G [y]));
   260   |> fold_product (curry add_edge) (all_preds G [x]) (all_succs G [y]);
   261 
   261 
   262 fun merge_trans_acyclic eq (G1, G2) =
   262 fun merge_trans_acyclic eq (G1, G2) =
   263   merge_acyclic eq (G1, G2)
   263   merge_acyclic eq (G1, G2)
   264   |> fold add_edge_trans_acyclic (diff_edges G1 G2)
   264   |> fold add_edge_trans_acyclic (diff_edges G1 G2)
   265   |> fold add_edge_trans_acyclic (diff_edges G2 G1);
   265   |> fold add_edge_trans_acyclic (diff_edges G2 G1);