def bitseq.next_le

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

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

573def bitseq.next_le(size: Nat, start: Nat, want: Bool, bs: List<&2, Bool>) -> {Nat.is_le(M.bitseq.next(size, start, want, bs), size) == True{} : Bool}:
574  match size:
575    case 0n:
576      {==}
577    case 1n+ +s:
578      match start want bs:
579        case 1n+st w Nil{}:
580          bitseq.next_le(s, st, w, Nil{})
581        case 1n+st w Con{h, t}:
582          bitseq.next_le(s, st, w, t)
583        case 0n False{} Nil{}:
584          {==}
585        case 0n True{} Nil{}:
586          nat.le_refl(s)
587        case 0n True{} Con{True{}, t}:
588          {==}
589        case 0n False{} Con{False{}, t}:
590          {==}
591        case 0n True{} Con{False{}, t}:
592          bitseq.next_le(s, 0n, True{}, t)
593        case 0n False{} Con{True{}, t}:
594          bitseq.next_le(s, 0n, False{}, t)

Uses (6)

Used by (2)