Original question and givens
Use unique vertices=[v0, v1, v2, v3, v4, v5] and loop-free duplicate-free directed edges=[[v0, v1], [v1, v2], [v2, v0], [v0, v2], [v0, v5]]. Every edge u→v needs position(u)<position(v) in a complete vertex permutation; labels use source lexical order. Give (source_removal_trace, remaining_vertices, directed_cycle, cycle_detected, no_order_certificate, uniqueness_or_extra_claim, boundary).
G001 — Use unique vertices=[v0, v1, v2, v3, v4, v5] and loop-free duplicate-free directed edges=[[v0, v1], [v1, v2], [v2, v0], [v0, v2], [v0, v5]]. Every edge u→v needs position(u)<position(v) in a complete vertex permutation; labels use source lexical order. Give (source_removal_trace, remaining_vertices, directed_cycle, cycle_detected, no_order_certificate, uniqueness_or_extra_claim, boundary).
Step-by-step derivation
S001 · implies
Before
V=[v0, v1, v2, v3, v4, v5]
After
all directed edges=[[v0, v1], [v0, v2], [v0, v5], [v1, v2], [v2, v0]]
Conditions: none
This is a fully specified finite digraph, not necessarily a complete digraph.
Step identifiers and dependencies
Rule: full_directed_graph · Uses: G001
S002 · implies
Before
remaining=[v0, v1, v2, v3, v4, v5]; active edges=[[v0, v1], [v0, v2], [v0, v5], [v1, v2], [v2, v0]]
After
indegrees=[[v0, 1], [v1, 1], [v2, 2], [v3, 0], [v4, 0], [v5, 1]]; sources=[v3, v4]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S001
S003 · implies
Before
zero-indegree choices=[v3, v4]
After
choose=v3; new prefix=[v3]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S002
S004 · implies
Before
remaining=[v0, v1, v2, v4, v5]; active edges=[[v0, v1], [v0, v2], [v0, v5], [v1, v2], [v2, v0]]
After
indegrees=[[v0, 1], [v1, 1], [v2, 2], [v4, 0], [v5, 1]]; sources=[v4]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S003
S005 · implies
Before
zero-indegree choices=[v4]
After
choose=v4; new prefix=[v3, v4]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S004
S006 · implies
Before
remaining=[v0, v1, v2, v5]; active edges=[[v0, v1], [v0, v2], [v0, v5], [v1, v2], [v2, v0]]
After
indegrees=[[v0, 1], [v1, 1], [v2, 2], [v5, 1]]; sources=[]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S005
S007 · implies
Before
cycle candidate edge v0→v2
After
edge present: Yes
Conditions: none
Check every edge of the directed closed path returning to its start, not merely an impression that Kahn became stuck.
Step identifiers and dependencies
Rule: cycle_edge_witness · Uses: G001, S006
S008 · implies
Before
cycle candidate edge v2→v0
After
edge present: Yes
Conditions: none
Check every edge of the directed closed path returning to its start, not merely an impression that Kahn became stuck.
Step identifiers and dependencies
Rule: cycle_edge_witness · Uses: G001, S007
S009 · implies
Before
[v0, v2, v0]
After
pos(v0) < pos(v2) < pos(v0) is impossible
Conditions: none
A topological order would give a chain of strict position inequalities around the complete directed cycle, forcing the start before itself, a contradiction.
Step identifiers and dependencies
Rule: strict_order_cycle_contradiction · Uses: G001, S008
Result
([[[v0, v1, v2, v3, v4, v5], [v3, v4], v3], [[v0, v1, v2, v4, v5], [v4], v4]], [v0, v1, v2, v5], [v0, v2, v0], Yes, Yes, No, directed_cycle_blocks_every_topological_order_while_multiple_orders_and_empty_edges_are_allowed)
The full substitutions and premise audits recover the original answer, retaining its field order and verdict meanings.