Step-by-step derivation
S001 · implies
Before
V=[v0, v1, v2, v3, v4, v5]
After
all directed edges=[[v0, v2], [v0, v4]]
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, v2], [v0, v4]]
After
indegrees=[[v0, 0], [v1, 0], [v2, 1], [v3, 0], [v4, 1], [v5, 0]]; sources=[v0, v1, v3, v5]
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=[v0, v1, v3, v5]
After
choose=v0; new prefix=[v0]
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=[v1, v2, v3, v4, v5]; active edges=[]
After
indegrees=[[v1, 0], [v2, 0], [v3, 0], [v4, 0], [v5, 0]]; sources=[v1, v2, v3, v4, v5]
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=[v1, v2, v3, v4, v5]
After
choose=v1; new prefix=[v0, v1]
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=[v2, v3, v4, v5]; active edges=[]
After
indegrees=[[v2, 0], [v3, 0], [v4, 0], [v5, 0]]; sources=[v2, v3, v4, v5]
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
zero-indegree choices=[v2, v3, v4, v5]
After
choose=v2; new prefix=[v0, v1, v2]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S006
S008 · implies
Before
remaining=[v3, v4, v5]; active edges=[]
After
indegrees=[[v3, 0], [v4, 0], [v5, 0]]; sources=[v3, v4, v5]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S007
S009 · implies
Before
zero-indegree choices=[v3, v4, v5]
After
choose=v3; new prefix=[v0, v1, v2, v3]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S008
S010 · implies
Before
remaining=[v4, v5]; active edges=[]
After
indegrees=[[v4, 0], [v5, 0]]; sources=[v4, v5]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S009
S011 · implies
Before
zero-indegree choices=[v4, v5]
After
choose=v4; new prefix=[v0, v1, v2, v3, v4]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S010
S012 · implies
Before
remaining=[v5]; active edges=[]
After
indegrees=[[v5, 0]]; sources=[v5]
Conditions: none
Recompute indegrees from remaining edges at every stage, rather than reusing original indegrees.
Step identifiers and dependencies
Rule: remaining_indegree · Uses: G001, S011
S013 · implies
Before
zero-indegree choices=[v5]
After
choose=v5; new prefix=[v0, v1, v2, v3, v4, v5]
Conditions: none
Choose the lexicographically first source and remove its outgoing edges.
Step identifiers and dependencies
Rule: lexicographic_kahn_choice · Uses: G001, S012
S014 · implies
Before
output=[v0, v1, v2, v3, v4, v5]; remaining=[]
After
blocked=No; complete valid order=Yes
Conditions: none
Audit the final permutation edge by edge, retaining separate blocked and success flags.
Step identifiers and dependencies
Rule: kahn_final_audit · Uses: G001, S013
Result
([[[v0, v1, v2, v3, v4, v5], [v0, v1, v3, v5], v0], [[v1, v2, v3, v4, v5], [v1, v2, v3, v4, v5], v1], [[v2, v3, v4, v5], [v2, v3, v4, v5], v2], [[v3, v4, v5], [v3, v4, v5], v3], [[v4, v5], [v4, v5], v4], [[v5], [v5], v5]], [v0, v1, v2, v3, v4, v5], No, Yes, each_step_removes_lexicographically_first_zero_indegree_source)
The full substitutions and premise audits recover the original answer, retaining its field order and verdict meanings.