LAWS_div.bend
bend-osdev-u32@0.1.0.0 · 28 lines · 4 definitions
1
2
3
4
5
6import Base
7
8law nat_div_mod:
9 for +a: Nat
10 for +bp: Nat
11 {Nat.add(Nat.mul(Nat.div(a, 1n+bp), 1n+bp), Nat.mod(a, 1n+bp)) == a : Nat}
12
13law nat_mod_lt:
14 for +a: Nat
15 for +bp: Nat
16 {Nat.is_lt(Nat.mod(a, 1n+bp), 1n+bp) == True{} : Bool}
17
18law nat_divmod_exact:
19 for +g: Nat
20 for +i: Nat
21 for +bp: Nat
22 for h: {Nat.is_lt(i, 1n+bp) == True{} : Bool}
23 {Nat.divmod(Nat.add(Nat.mul(g, 1n+bp), i), 1n+bp) == (g, i) : Nat & Nat}
24
25law nat_round_up:
26 for +bp: Nat
27 for +a: Nat
28 {Nat.mul(Nat.div(Nat.add(a, Nat.sub(1n+bp, 1n)), 1n+bp), 1n+bp) == Nat.add(a, Nat.sub(Nat.sub(1n+bp, 1n), Nat.mod(Nat.add(a, Nat.sub(1n+bp, 1n)), 1n+bp))) : Nat}