Step-by-step derivation
S001 · implies
Before
n=6;raw Init=[0];raw Halt=[5];raw Step=[[0, 1], [1, 2], [2, 5], [0, 3], [3, 4], [4, 5]]
After
Init=[0];Halt=[5];canonical raw Step=[[0, 1], [0, 3], [1, 2], [2, 5], [3, 4], [4, 5]]
Conditions: none
Type the complete finite data and deduplicate directed edges.Retain raw outgoing halt edges as data,but execution stops at halt.Stuck is not successful halt,and one prefix proves no general program termination.
Step identifiers and dependencies
Rule: finite_transition_normalization · Uses: G001
S002 · implies
Before
Init=[0]
After
zero-step reachable=[0]
Conditions: none
Every initial state is reachable in zero steps,including an initial halt.An empty Init has no reachable states.
Step identifiers and dependencies
Rule: zero_step_reachability · Uses: G001, S001
S003 · implies
Before
depth=0;state=0;halt=No;raw successors=[1, 3]
After
expanded successors=[1, 3];newly reached=[1, 3]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S002
S004 · implies
Before
completed frontier=[0];depth=0
After
next frontier=[1, 3];all reached=[0, 1, 3]
Conditions: none
The closure is complete only when the frontier empties.Finitely many states and adding only unseen states ensure enumeration terminates,without sampling a path-length cutoff.
Step identifiers and dependencies
Rule: complete_finite_reachability_layer · Uses: G001, S003
S005 · implies
Before
depth=1;state=1;halt=No;raw successors=[2]
After
expanded successors=[2];newly reached=[2]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S004
S006 · implies
Before
depth=1;state=3;halt=No;raw successors=[4]
After
expanded successors=[4];newly reached=[4]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S005
S007 · implies
Before
completed frontier=[1, 3];depth=1
After
next frontier=[2, 4];all reached=[0, 1, 2, 3, 4]
Conditions: none
The closure is complete only when the frontier empties.Finitely many states and adding only unseen states ensure enumeration terminates,without sampling a path-length cutoff.
Step identifiers and dependencies
Rule: complete_finite_reachability_layer · Uses: G001, S006
S008 · implies
Before
depth=2;state=2;halt=No;raw successors=[5]
After
expanded successors=[5];newly reached=[5]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S007
S009 · implies
Before
depth=2;state=4;halt=No;raw successors=[5]
After
expanded successors=[5];newly reached=[]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S008
S010 · implies
Before
completed frontier=[2, 4];depth=2
After
next frontier=[5];all reached=[0, 1, 2, 3, 4, 5]
Conditions: none
The closure is complete only when the frontier empties.Finitely many states and adding only unseen states ensure enumeration terminates,without sampling a path-length cutoff.
Step identifiers and dependencies
Rule: complete_finite_reachability_layer · Uses: G001, S009
S011 · implies
Before
depth=3;state=5;halt=Yes;raw successors=[]
After
expanded successors=[];newly reached=[]
Conditions: none
Expand every successor of a nonhalt state,not just one chosen path.Add unseen states only.A halt is not expanded even when raw outgoing edges exist.
Step identifiers and dependencies
Rule: reachability_halt_truncates_expansion · Uses: G001, S010
S012 · implies
Before
completed frontier=[5];depth=3
After
next frontier=[];all reached=[0, 1, 2, 3, 4, 5]
Conditions: none
The closure is complete only when the frontier empties.Finitely many states and adding only unseen states ensure enumeration terminates,without sampling a path-length cutoff.
Step identifiers and dependencies
Rule: complete_finite_reachability_layer · Uses: G001, S011
S013 · implies
Before
reached state=0;declared halt=No;raw successors=[1, 3]
After
status=active-nonhalt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S012
S014 · implies
Before
reached state=1;declared halt=No;raw successors=[2]
After
status=active-nonhalt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S013
S015 · implies
Before
reached state=2;declared halt=No;raw successors=[5]
After
status=active-nonhalt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S014
S016 · implies
Before
reached state=3;declared halt=No;raw successors=[4]
After
status=active-nonhalt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S015
S017 · implies
Before
reached state=4;declared halt=No;raw successors=[5]
After
status=active-nonhalt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S016
S018 · implies
Before
reached state=5;declared halt=Yes;raw successors=[]
After
status=halt
Conditions: none
The halt designation takes precedence.Only a nonhalt with no successor is stuck;one with successors is active.No outgoing edge does not automatically mean successful termination.
Step identifiers and dependencies
Rule: halt_stuck_active_are_distinct · Uses: G001, S017
S019 · implies
Before
natural rank vector=[13, 5, 4, 3, 2, 0];reachable=[0, 1, 2, 3, 4, 5];Halt=[5]
After
all active ranking edges=[[0, 1], [0, 3], [1, 2], [2, 5], [3, 4], [4, 5]]
Conditions: none
A natural ranking must strictly decrease on every reachable nonhalt outgoing edge,including edges into halt.Raw outgoing halt edges are not execution steps.
Step identifiers and dependencies
Rule: ranking_reachable_nonhalt_edge_scope · Uses: G001, S018
S020 · calculation
Before
rank decrease on edge0,1 := sub(13, 5)
After
rank decrease on edge0,1 = 8
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S019
S021 · implies
Before
edge=[0, 1];ranks=[13, 5];difference=8
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S020
S022 · calculation
Before
rank decrease on edge0,3 := sub(13, 3)
After
rank decrease on edge0,3 = 10
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S021
S023 · implies
Before
edge=[0, 3];ranks=[13, 3];difference=10
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S022
S024 · calculation
Before
rank decrease on edge1,2 := sub(5, 4)
After
rank decrease on edge1,2 = 1
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S023
S025 · implies
Before
edge=[1, 2];ranks=[5, 4];difference=1
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S024
S026 · calculation
Before
rank decrease on edge2,5 := sub(4, 0)
After
rank decrease on edge2,5 = 4
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S025
S027 · implies
Before
edge=[2, 5];ranks=[4, 0];difference=4
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S026
S028 · calculation
Before
rank decrease on edge3,4 := sub(3, 2)
After
rank decrease on edge3,4 = 1
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S027
S029 · implies
Before
edge=[3, 4];ranks=[3, 2];difference=1
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S028
S030 · calculation
Before
rank decrease on edge4,5 := sub(2, 0)
After
rank decrease on edge4,5 = 2
Conditions: none
Subtract successor rank from predecessor rank;strict decrease requires a value>0.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S029
S031 · implies
Before
edge=[4, 5];ranks=[2, 0];difference=2
After
strictly decreasing=Yes
Conditions: none
Equality is not decrease.Retain every nondecreasing original edge,not just the first.
Step identifiers and dependencies
Rule: ranking_each_strict_decrease · Uses: G001, S030
S032 · implies
Before
reachable=[0, 1, 2, 3, 4, 5];Halt=[5]
After
reachable nonhalt graph vertices=[0, 1, 2, 3, 4]
Conditions: none
Inspect cycles only in the reachable nonhalt subgraph.Unreachable cycles and outgoing halt edges do not affect this execution question.
Step identifiers and dependencies
Rule: reachable_nonhalt_cycle_scope · Uses: G001, S031
S033 · implies
Before
peeling layer=0;remaining=[0, 1, 2, 3, 4]
After
vertices with no remaining nonhalt successor=[2, 4]
Conditions: none
Repeatedly remove vertices with no remaining nonhalt successor.A directed cycle cannot be removed this way.Stuck vertices may be removed too,so keep the separate stuck check.
Step identifiers and dependencies
Rule: finite_cycle_sink_peeling · Uses: G001, S032
S034 · implies
Before
peeling layer=1;remaining=[0, 1, 3]
After
vertices with no remaining nonhalt successor=[1, 3]
Conditions: none
Repeatedly remove vertices with no remaining nonhalt successor.A directed cycle cannot be removed this way.Stuck vertices may be removed too,so keep the separate stuck check.
Step identifiers and dependencies
Rule: finite_cycle_sink_peeling · Uses: G001, S033
S035 · implies
Before
peeling layer=2;remaining=[0]
After
vertices with no remaining nonhalt successor=[0]
Conditions: none
Repeatedly remove vertices with no remaining nonhalt successor.A directed cycle cannot be removed this way.Stuck vertices may be removed too,so keep the separate stuck check.
Step identifiers and dependencies
Rule: finite_cycle_sink_peeling · Uses: G001, S034
S036 · implies
Before
all reachable nonhalt vertices peeled
After
reachable nonhalt graph is acyclic
Conditions: none
Removing all vertices certifies absence of a directed cycle,not merely failure to encounter one on a single run.
Step identifiers and dependencies
Rule: complete_acyclic_nonhalt_certificate · Uses: G001, S035
S037 · implies
Before
reachable stuck=[];reachable nonhalt cycle=No
After
all paths reach Halt=Yes
Conditions: none
In a finite model an infinite nonhalt path repeats a state and forms a cycle;a finite maximal nonhalting path ends stuck.Exclude both to ensure every path reaches Halt.Empty Init is vacuous;this does not establish termination of arbitrary infinite-state programs.
Step identifiers and dependencies
Rule: finite_all_paths_termination_joint_gate · Uses: G001, S036
S038 · implies
Before
ranking valid=Yes;reachable stuck=[]
After
ranking plus no stuck=Yes;actual all-path termination=Yes
Conditions: none
Strict natural descent excludes infinite execution,but stuck states must also be excluded to reach successful halt.A failed ranking candidate does not mean the model fails to terminate;actual termination is independently checked from the full finite graph.
Step identifiers and dependencies
Rule: ranking_candidate_not_actual_termination_identity · Uses: G001, S037