Fibonacci Heap: Shared Primitives, Initialization, Queries, and Insertion #
This file proves the exact-Word-RAM specifications for:
- shared primitives (
prioLTFlag,insertIntoNonEmptyList,addRootAndUpdateMin) reused acrossinsert,decreaseKey, andextractMin; allocSpan,initSetup, andincCur(O(1)fresh initialization on zeroed memory);isEmptyCode,getKeyCode, andinsertCode.
Main definitions #
- Shared code fragments are defined in
Complexity/Algorithms/WordRAM/PriorityQueue/FibonacciHeap/Program.leanand verified here againstFibInv.
Main results #
Cslib.Algorithms.WordRAM.PriorityQueue.FibonacciHeap.prioLTFlag_exec,insertIntoNonEmptyList_exec,addRootAndUpdateMin_exec: shared list and priority primitives.Cslib.Algorithms.WordRAM.PriorityQueue.FibonacciHeap.allocSpan_exec,initSetup_exec,incCur_eval: initialization specifications forSubroutineDS.Cslib.Algorithms.WordRAM.PriorityQueue.FibonacciHeap.isEmptyCode_exec,getKeyCode_exec,insertCode_exec:O(1)query and amortized insertion specifications.
References #
Shared primitives: prioLTFlag, insertIntoNonEmptyList, addRootAndUpdateMin #
prioLTFlag uReg kuReg vReg kvReg flagReg sets flagReg ← 1 iff (u, ku) strictly precedes
(v, kv) under IndexedMinPQ.PrioLT, and 0 otherwise, within 6 instructions.
insertIntoNonEmptyList hReg uReg splices u immediately after h in a circular list
h :: tail (u ∉ h :: tail) in 10 instructions, modifying only left[u], left[r], right[u], right[h] (r = right[h]) and scratch registers s0, s2.
In any Nodup forest ts, no strict descendant x ∈ forestNodes T.children (T ∈ ts) can
equal the root of any tree R ∈ ts.
addRootAndUpdateMin uReg appends a new valid root tree T_u (T_u.root = u) to the root
circular list ts, updating minRootReg under IndexedMinPQ.PrioLT and incrementing
numRootsReg in ≤ 28
instructions while preserving ValidRoot across T_u :: ts.