AND-OR graph data structures and algorithms.
The main data structure, [Graph], is a bipartite graph of AND nodes
(representing rules in a proof system) and OR nodes (representing
propositions in a proof system). [Graph]s have a designated goal OR
node that represents the goal to be proven.
A convenient way to construct and store these graphs is to use the
[From<jsongraph::Graph>] trait implementation in [Graph]. Otherwise,
AND-OR graphs can be created with [Graph::new].