Step-by-step derivation
S001 · implies
Before
full carrier Fin(7);raw undirected edges=[[0, 2], [0, 4], [1, 3], [2, 3], [2, 5], [3, 4], [3, 6]]
After
canonical simple edges=[[0, 2], [0, 4], [1, 3], [2, 3], [2, 5], [3, 4], [3, 6]];full adjacency rows=[[2, 4], [3], [0, 3, 5], [1, 2, 4, 6], [0, 3], [2], [3]]
Conditions: none
Build adjacency on the full carrier,rejecting loops and duplicate undirected edges.Vertices absent from edges retain empty rows;do not switch to directed connectivity.
Step identifiers and dependencies
Rule: component_full_undirected_graph_includes_isolates · Uses: G001
S002 · implies
Before
class representative0:start vertex=0;complete adjacency=[[2, 4], [3], [0, 3, 5], [1, 2, 4, 6], [0, 3], [2], [3]]
After
initial visited=[0];path to start=[0];edge length0
Conditions: none
The start reaches itself by a length-zero path.Even an isolated vertex must be included rather than omitted for having no edges.
Step identifiers and dependencies
Rule: component_zero_length_reflexive_path · Uses: G001, S001
S003 · implies
Before
class representative0:layer=0;frontier=[0];all frontier neighbors=[2, 4]
After
previously seen=[0];new vertices=[2, 4]
Conditions: none
At each layer inspect every neighbor of every frontier vertex,then add only unvisited distinct labels.Do not stop at a plausible-looking fragment.
Step identifiers and dependencies
Rule: component_complete_frontier_expansion · Uses: G001, S002
S004 · implies
Before
class representative0:new vertex=2;earliest frontier parent=0;parent path=[0]
After
append actual parent edge;reachable path=[0, 2]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S003
S005 · implies
Before
class representative0:new vertex=4;earliest frontier parent=0;parent path=[0]
After
append actual parent edge;reachable path=[0, 4]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S004
S006 · implies
Before
class representative0:layer=1;frontier=[2, 4];all frontier neighbors=[0, 3, 5]
After
previously seen=[0, 2, 4];new vertices=[3, 5]
Conditions: none
At each layer inspect every neighbor of every frontier vertex,then add only unvisited distinct labels.Do not stop at a plausible-looking fragment.
Step identifiers and dependencies
Rule: component_complete_frontier_expansion · Uses: G001, S005
S007 · implies
Before
class representative0:new vertex=3;earliest frontier parent=2;parent path=[0, 2]
After
append actual parent edge;reachable path=[0, 2, 3]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S006
S008 · implies
Before
class representative0:new vertex=5;earliest frontier parent=2;parent path=[0, 2]
After
append actual parent edge;reachable path=[0, 2, 5]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S007
S009 · implies
Before
class representative0:layer=2;frontier=[3, 5];all frontier neighbors=[1, 2, 4, 6]
After
previously seen=[0, 2, 3, 4, 5];new vertices=[1, 6]
Conditions: none
At each layer inspect every neighbor of every frontier vertex,then add only unvisited distinct labels.Do not stop at a plausible-looking fragment.
Step identifiers and dependencies
Rule: component_complete_frontier_expansion · Uses: G001, S008
S010 · implies
Before
class representative0:new vertex=1;earliest frontier parent=3;parent path=[0, 2, 3]
After
append actual parent edge;reachable path=[0, 2, 3, 1]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S009
S011 · implies
Before
class representative0:new vertex=6;earliest frontier parent=3;parent path=[0, 2, 3]
After
append actual parent edge;reachable path=[0, 2, 3, 6]
Conditions: none
Extend the established parent path by an original graph edge,so every added vertex really is reachable.
Step identifiers and dependencies
Rule: component_each_new_vertex_path_witness · Uses: G001, S010
S012 · implies
Before
class representative0:layer=3;frontier=[1, 6];all frontier neighbors=[3]
After
previously seen=[0, 1, 2, 3, 4, 5, 6];new vertices=[]
Conditions: none
At each layer inspect every neighbor of every frontier vertex,then add only unvisited distinct labels.Do not stop at a plausible-looking fragment.
Step identifiers and dependencies
Rule: component_complete_frontier_expansion · Uses: G001, S011
S013 · implies
Before
class representative0:final visited=[0, 1, 2, 3, 4, 5, 6];all [vertex,neighbors,outside neighbors] rows=[[0, [2, 4], []], [1, [3], []], [2, [0, 3, 5], []], [3, [1, 2, 4, 6], []], [4, [0, 3], []], [5, [2], []], [6, [3], []]]
After
no edge leaves visited;every visited vertex has a path;visited equals full reachable set
Conditions: none
Path witnesses give visited⊆reachable.At completion no edge leaves visited.If a path reached outside,it would have a first leaving edge,a contradiction,so reachable⊆visited.Both directions establish the whole component,not a traversal order.
Step identifiers and dependencies
Rule: component_reachable_and_closed_set_completeness · Uses: G001, S012
S014 · implies
Before
least unvisited representative=0;derived component=[0, 1, 2, 3, 4, 5, 6]
After
all visited labels=[0, 1, 2, 3, 4, 5, 6]
Conditions: none
Sort labels within each class and order classes by the least unvisited representative.BFS discovery order is not the canonical component order.
Step identifiers and dependencies
Rule: component_least_unvisited_class_order · Uses: G001, S013