def bitseq.next_hit

bend-osdev-algo@0.1.0.0 · PROOF.bend:596

import bend-osdev-algo@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-algo@0.1.0.0/bitmap.bend as M

596def bitseq.next_hit(size: Nat, start: Nat, want: Bool, bs: List<&2, Bool>, l: {Nat.is_lt(M.bitseq.next(size, start, want, bs), size) == True{} : Bool}) -> {M.bitseq.at(bs, M.bitseq.next(size, start, want, bs)) == want : Bool}:
597  match size:
598    case 0n:
599      Empty.absurd({M.bitseq.at(bs, 0n) == want : Bool}, absurd.ft(l))
600    case 1n+ +s:
601      match start want bs:
602        case 1n+st w Nil{}:
603          bitseq.next_hit(s, st, w, Nil{}, l)
604        case 1n+st w Con{h, t}:
605          bitseq.next_hit(s, st, w, t, l)
606        case 0n False{} Nil{}:
607          {==}
608        case 0n True{} Nil{}:
609          Empty.absurd({False{} == True{} : Bool}, absurd.ft(Equal.trans(Bool, False{}, Nat.is_lt(s, s), True{}, Equal.sym(Bool, Nat.is_lt(s, s), False{}, nat.lt_irrefl(s)), l)))
610        case 0n True{} Con{True{}, t}:
611          {==}
612        case 0n False{} Con{False{}, t}:
613          {==}
614        case 0n True{} Con{False{}, t}:
615          bitseq.next_hit(s, 0n, True{}, t, l)
616        case 0n False{} Con{True{}, t}:
617          bitseq.next_hit(s, 0n, False{}, t, l)

Uses (11)

Used by (2)