PROOF.bits.bound_va: def of bend-osdev-caps@0.1.0.0 Import: import bend-osdev-caps@0.1.0.0/PROOF.bend as PROOF Lines 360-429 of bend-osdev-caps@0.1.0.0/PROOF.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-caps@0.1.0.0/PROOF.bend&start_line=360&end_line=429 import Base import bend-osdev-caps@0.1.0.0/caps.bend as C def bits.bound_va(+n: Nat, +i: Word(n), +fi: Word(n), +fp: Word(n), +b: Word(n), +a: Word(n)) -> {C.CapBits.subset(n, a, i) == True{} : Bool} -> {C.CapBits.subset(n, Word.or(n, Word.or(n, Word.and(n, i, fi), Word.and(n, fp, b)), a), Word.or(n, b, i)) == True{} : Bool}: match n: case 0n: h0 => {==} case 1n+n1: match i fi fp b a: case WCon{True{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{True{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{True{}, fit}), Word.and(1n+n1, WCon{True{}, fpt}, WCon{True{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{True{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{True{}, fit}), Word.and(1n+n1, WCon{True{}, fpt}, WCon{False{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{False{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{True{}, fit}), Word.and(1n+n1, WCon{False{}, fpt}, WCon{True{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{True{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{True{}, fit}), Word.and(1n+n1, WCon{False{}, fpt}, WCon{False{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{False{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{True{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{False{}, fit}), Word.and(1n+n1, WCon{True{}, fpt}, WCon{True{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{True{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{False{}, fit}), Word.and(1n+n1, WCon{True{}, fpt}, WCon{False{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{False{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{True{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{False{}, fit}), Word.and(1n+n1, WCon{False{}, fpt}, WCon{True{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{True{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{True{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{True{}, +at}: h0 => bits.absurd(C.CapBits.subset(1n+n1, Word.or(1n+n1, Word.or(1n+n1, Word.and(1n+n1, WCon{False{}, it}, WCon{False{}, fit}), Word.and(1n+n1, WCon{False{}, fpt}, WCon{False{}, bt})), WCon{True{}, at}), Word.or(1n+n1, WCon{False{}, bt}, WCon{False{}, it})), h0) case WCon{False{}, +it} WCon{False{}, +fit} WCon{False{}, +fpt} WCon{False{}, +bt} WCon{False{}, +at}: h0 => bits.bound_va(n1, it, fit, fpt, bt, at)(h0) Uses (8): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.Con https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.or https://jend.leeeet.dev/definition.txt?path=bend-osdev-caps@0.1.0.0/PROOF.bend&name=bits.absurd https://jend.leeeet.dev/definition.txt?path=bend-osdev-caps@0.1.0.0/caps.bend&name=CapBits.subset