Explore related knowledge and questions →

Question 811: Remove the Lexically First Zero-Indegree Source at Each Kahn Step

On this page
  1. Original question and givens
  2. Definition and scope
  3. Step-by-step derivation
  4. Reverse checks
  5. Result
  6. This question review and source binding

Return to catalogue page 5

← Question derivation index · Original question batch

P1000-0811 · q-20261015-advance-20261116-r06-topological-ordering-dag-0061

Original question and givens

Use unique vertices=[v0, v1, v2, v3, v4, v5] and loop-free duplicate-free directed edges=[[v0, v1], [v0, v2], [v0, v4]]. Every edge u→v needs position(u)<position(v) in a complete vertex permutation; labels use source lexical order. Give (source_removal_trace, output_order, cycle_detected, valid_completed_order, certificate).

  • G001 — Use unique vertices=[v0, v1, v2, v3, v4, v5] and loop-free duplicate-free directed edges=[[v0, v1], [v0, v2], [v0, v4]]. Every edge u→v needs position(u)<position(v) in a complete vertex permutation; labels use source lexical order. Give (source_removal_trace, output_order, cycle_detected, valid_completed_order, certificate).

Definition and scope

Each round recomputes indegrees from the remaining edges and removes the lexicographically first zero-indegree vertex.

Step-by-step derivation

S001 · implies

Before

V=[v0, v1, v2, v3, v4, v5]

After

all directed edges=[[v0, v1], [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, v1], [v0, v2], [v0, v4]]

After

indegrees=[[v0, 0], [v1, 1], [v2, 1], [v3, 0], [v4, 1], [v5, 0]]; sources=[v0, 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, 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

Reverse checks

  • S014 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S013 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S012 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S011 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S010 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S009 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S008 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S007 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S006 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S005 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S004 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S003 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S002 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.
  • S001 · premise_and_result_audit — Audit all vertices and edges; one failed order is not a cycle proof, and no legal branch may be omitted.

Result

([[[v0, v1, v2, v3, v4, v5], [v0, 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.

This question review and source binding

Review date: 2026-10-26

Original questions, answers, step expressions, numeric ASTs and historical records are retained. Source candidate labels remain historical and are not overwritten as formal proof.

Source hashes and review receipts
  • input commit: 0f7be61e2c22317a4075561dc822c87d881a50db
  • original question SHA-256: 13936e8387bb86d793d7b913bb15353500be1a69ad61c90bade118d58f53ee39
  • candidate record SHA-256: abe70e785380a3d5fc791855f9e31fb8694457b296ed6a42d17e33f06371f25f
  • semantic review receipt SHA-256: 6c2c6d46aded7582a11ac41a8c0b3bdde2669a53bdb6e796eea2039994a02772
  • question-first witness SHA-256: 77e43898df9efdbf8094ad81fe4ab91cf4b4bd82f481eb9b4699b73cb4da612b
  • Lean: NOT_RUN · human review: NOT_PERFORMED
Same-source full JSON