def indivisible_beyond

bendtorch-core@0.1.0.0 · src/tensor/signed_PROOF.bend:515

import bendtorch-core@0.1.0.0/src/tensor/signed_PROOF.bend as SignedPROOF
import Base
import bendtorch-core@0.1.0.0/src/tensor/signed.bend as Signed

515# divmod(0, p) is (0, 0): a remainder means a nonempty input.
516def indivisible_beyond(+count: Nat, +extents: List<&2, Signed.Extent>, +rest: Nat, +quotient: Nat, +remainder: Nat,
517  split: {Nat.divmod(count, 1n+rest) == (quotient, 1n+remainder) : Nat & Nat}) ->
518  {Signed.beyond(count, extents) == Fail{Signed.count_mismatch()} : Result<&2, &2, Signed.Error, List<&2, U32>>}:
519  match count:
520    case 0n:
521      Empty.absurd({Signed.beyond(0n, extents) == Fail{Signed.count_mismatch()} : Result<&2, &2, Signed.Error, List<&2, U32>>},
522        succ_not_zero(remainder, Equal.sym(Nat, 0n, 1n+remainder,
523          Equal.cong(Nat & Nat, Nat, pair => Pair.snd(Nat, Nat, pair), (0n, 0n), (quotient, 1n+remainder), split))))
524    case 1n+c:
525      {==}

Uses (16)

Used by (1)