ProofShift.ws.gshr_lo_lt: def of bend-osdev-word64@0.1.1.1 Import: import bend-osdev-word64@0.1.1.1/proof_shift.bend as ProofShift Lines 441-445 of bend-osdev-word64@0.1.1.1/proof_shift.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&start_line=441&end_line=445 import Base import bend-osdev-u32@0.1.0.0/u32.bend as U import bend-osdev-u32@0.1.0.0/LAWS.bend as UL import bend-osdev-word64@0.1.1.1/proof_value.bend as P def ws.gshr_lo_lt(+n: Nat, +k: Nat, +hw: Word(n), +lw: Word(n), +hk: {Nat.is_lt(k, n) == True{} : Bool}) -> {Nat.is_lt(P.wv.V(n, hw, lw), U.U32Nat.dbl(k, 1n+P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw))))) == True{} : Bool}: +hkle = P.wn.lt_le(k, n, hk) +s1 = Equal.trans(Bool, Nat.is_lt(Nat.add(Word.to_nat(n, lw), U.U32Nat.dbl(n, Word.to_nat(n, hw))), Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(n, Word.to_nat(n, hw)))), Nat.is_lt(Word.to_nat(n, lw), U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw)))), True{}, P.wn.lt_add_r(Word.to_nat(n, lw), U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(n, Word.to_nat(n, hw))), ws.shr_lt(n, k, lw)) +e = Equal.trans(Nat, Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(n, Word.to_nat(n, hw))), Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(k, U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), U.U32Nat.dbl(k, 1n+P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw)))), Equal.cong(Nat, Nat, v => Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), v), U.U32Nat.dbl(n, Word.to_nat(n, hw)), U.U32Nat.dbl(k, U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw))), Equal.sym(Nat, U.U32Nat.dbl(k, U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw))), U.U32Nat.dbl(n, Word.to_nat(n, hw)), ns.dkm(n, k, Word.to_nat(n, hw), hkle))), Equal.trans(Nat, Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(k, U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), U.U32Nat.dbl(k, Nat.add(1n+Word.to_nat(n, ws.shr(n, k, lw)), U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), U.U32Nat.dbl(k, 1n+P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw)))), Equal.sym(Nat, U.U32Nat.dbl(k, Nat.add(1n+Word.to_nat(n, ws.shr(n, k, lw)), U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(k, U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), UL.dbl_add(k, 1n+Word.to_nat(n, ws.shr(n, k, lw)), U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw)))), Equal.cong(Nat, Nat, v => U.U32Nat.dbl(k, 1n+v), Nat.add(Word.to_nat(n, ws.shr(n, k, lw)), U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw))), P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw))), Equal.sym(Nat, P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw))), Nat.add(Word.to_nat(n, ws.shr(n, k, lw)), U.U32Nat.dbl(Nat.sub(n, k), Word.to_nat(n, hw))), ws.gshr_v(n, k, hw, lw, hk))))) P.wn.lt_rw2(P.wv.V(n, hw, lw), Nat.add(U.U32Nat.dbl(k, 1n+Word.to_nat(n, ws.shr(n, k, lw))), U.U32Nat.dbl(n, Word.to_nat(n, hw))), U.U32Nat.dbl(k, 1n+P.wv.V(n, ws.shr(n, k, hw), Word.or(n, ws.shr(n, k, lw), ws.shl(n, Nat.sub(n, k), hw)))), e, s1) Uses (22): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.cong https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.sym https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.trans https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_lt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.or https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.to_nat https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=dbl_add https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/u32.bend&name=U32Nat.dbl https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&name=ns.dkm https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&name=ws.gshr_v https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&name=ws.shl https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&name=ws.shr https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_shift.bend&name=ws.shr_lt https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_value.bend&name=wn.lt_add_r https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_value.bend&name=wn.lt_le https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_value.bend&name=wn.lt_rw2 https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.1/proof_value.bend&name=wv.V