def bs.none

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

import bend-osdev-algo@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-algo@0.1.0.0/bsearch.bend as S

1200def bs.none(xs: List<&2, U32>, +key: U32, i: Nat, +x: U32, s: {S.bsearch.sorted(xs) == True{} : Bool}, e: {S.bsearch.find(xs, key) == None{} : Maybe<&2, Nat>}, g: {List.get(&2, U32, xs, i) == Some{x} : Maybe<&2, U32>}) -> {U32.is_eq(x, key) == False{} : Bool}:
1201  match xs i:
1202    case Nil{} _:
1203      Empty.absurd({U32.is_eq(x, key) == False{} : Bool}, absurd.ns32(x, g))
1204    case Con{+x0, +t} 0n:
1205      %some_inj32(x0, x, g) : {U32.is_eq(_, key) == False{} : Bool}
1206      bs.none0(U32.is_lt(x0, key), x0, key, {==}, t, S.bsearch.lower_bound(t, key), e)
1207    case Con{+x0, +t} 1n+ +ip:
1208      +s2 = s
1209      +g2 = g
1210      bs.none1(U32.is_lt(x0, key), x0, x, key, {==}, t, S.bsearch.lower_bound(t, key), e, h => bs.none(t, key, ip, x, bs.sorted_tail(t, x0, s2), h, g2), bs.head_le(t, x0, s2, ip, x, g2))

Uses (18)

Used by (1)