def div_mod

bendtorch-core@0.1.0.0 · src/tensor/elementwise_walk_proof.bend:61

import bendtorch-core@0.1.0.0/src/tensor/elementwise_walk_proof.bend as ElementwiseWalkProof
import Base
import bendtorch-core@0.1.0.0/src/shape/nat_proofs.bend as Nats

61# s * (i / s) + i % s = i, for every s; at s = 0, Nat.div gives 0 and
62# Nat.mod gives i.
63def div_mod(+i: Nat, +s: Nat) -> {Nat.add(Nat.mul(s, Nat.div(i, s)), Nat.mod(i, s)) == i : Nat}:
64  match s:
65    case 0n:
66      {==}
67    case 1n+bp:
68      %Nats.mul_comm(Nat.div(i, 1n+bp), 1n+bp) : {Nat.add(_, Nat.mod(i, 1n+bp)) == i : Nat}
69      go_total(i, bp, 0n, 0n, bp, Equal.sym(Nat, bp, Nat.add(bp, 0n), add_zero_left(bp)))

Uses (9)

Used by (2)