def key_flip
bend-kit-scheduler@0.4.1.0 · queue_proof.bend:57
import bend-kit-scheduler@0.4.1.0/queue_proof.bend as QueueProof
import Base
import bend-mathlib@0.7.4.0/nat.bend as MNat
import bend-mathlib@0.7.4.0/bool.bend as MBool
import bend-kit-scheduler@0.4.1.0/queue.bend as Q
57def key_flip(+d: Nat, +e: Nat, +i: Nat, +j: Nat, p: {Q.le.same(Nat.is_eq(d, e), i, j, d, e) == False{} : Bool}) -> {Q.le.same(Nat.is_eq(e, d), j, i, e, d) == True{} : Bool}:
58 match d e:
59 case 0n 0n:
60 MNat.le_of_lt(j, i, MNat.lt_of_not_le(i, j, p))
61 case 0n 1n+q:
62 Empty.absurd({False{} == True{} : Bool}, MBool.true_ne_false()(p))
63 case 1n+r 0n:
64 {==}
65 case 1n+r 1n+q:
66 key_succ.conclusion(q, r, j, i, key_flip(r, q, i, j, key_succ.premise(r, q, i, j, False{}, p)))