tame/tamer/src/asg/graph/visit
Mike Gerwitz 9b53a5e176 tamer: asg::graph::visit::topo: Cut cycles
This commit includes plenty of documentation, so you should look there.

It's desirable to describe the sorting that TAME performs as a topological
sort, since that's the end result we want.  This uses the ontology to
determine what to do to the graph when a cycle is encountered.  So
technically we're sorting a graph with cycles, but you can equivalently view
this as first transforming the graph to cut all cycles and then sorting it.

For the sake of trivia, the term "cut" is used for two reasons: (1) it's an
intuitive visualization, and (2) the term "cut" has precedence in logic
programming (e.g. Prolog), where it (`!`) is used to prevent
backtracking.  We're also preventing backtracking, via a back edge, which
would produce a cycle.

DEV-13162
2023-04-28 14:33:48 -04:00
..
ontree tamer: asg::graph::visit{=>::ontree}: Move into submodule 2023-04-24 13:51:04 -04:00
topo tamer: asg::graph::visit::topo: Cut cycles 2023-04-28 14:33:48 -04:00
ontree.rs tamer: asg::graph::visit{=>::ontree}: Move into submodule 2023-04-24 13:51:04 -04:00
topo.rs tamer: asg::graph::visit::topo: Cut cycles 2023-04-28 14:33:48 -04:00