def internal_shl_out
bend-mathlib@0.8.1.0 · u32.bend:791
import bend-mathlib@0.8.1.0/u32.bend as U32
import Base
791def internal_shl_out(n: Nat, c: Bool, w: Word(n)) -> {internal_shl_val(n, Nat.pow(2n, n), Word.shl.out(n, c, w)) == Nat.add(internal_bv(c), Nat.double(Word.to_nat(n, w))) : Nat}:
792 match n:
793 case 0n:
794 match c:
795 case False{}:
796 match w:
797 case WNil{}:
798 {==}
799 case True{}:
800 match w:
801 case WNil{}:
802 {==}
803 case 1n++p:
804 match w:
805 case WCon{+b, +t}:
806 %internal_to_nat_con(p, b, t) : {internal_shl_val(1n+p, Nat.pow(2n, 1n+p), Word.shl.out(1n+p, c, WCon{b, t})) == Nat.add(internal_bv(c), Nat.double(_)) : Nat}
807 internal_shl_con(p, c, Word.shl.out(p, b, t), Nat.add(internal_bv(b), Nat.double(Word.to_nat(p, t))), internal_shl_out(p, b, t))