def select_selected_absent

bend-kit-scheduler@0.4.1.0 · queue_proof.bend:315

import bend-kit-scheduler@0.4.1.0/queue_proof.bend as QueueProof
import Base
import bend-kit-collections@0.1.4.1/heap.bend as H
import bend-kit-scheduler@0.4.1.0/queue.bend as Q
import bend-kit-scheduler@0.4.1.0/queue_laws.bend as L

315def select_selected_absent(~A: Data, now: Nat, +i: Nat, +s: Q.State<A>, eh: L.absent.heap(A, Q.pending(A, s), i)) -> selected_absent(A, i, L.selected(A, Q.select(~A, now, s))):
316  match s:
317    case Q.State{n, H.HLeaf{}, r}:
318      Unit{}
319    case Q.State{n, H.HNode{size, t, l, q}, r}:
320      L.Both{et, L.Both{el, eq}} = eh
321      split(c => selected_absent(A, i, L.selected(A, Q.select.due(~A, c, n, H.HNode{size, t, l, q}, r, t, l, q))), Nat.is_le(Q.deadline(A, t), now),
322        e => et,
323        e => Unit{})

Uses (14)

Used by (1)