UniqueProofs.cancel_right: def of bendtorch-core@0.1.0.0 Import: import bendtorch-core@0.1.0.0/src/shape/unique_proofs.bend as UniqueProofs Lines 23-28 of bendtorch-core@0.1.0.0/src/shape/unique_proofs.bend: https://jend.leeeet.dev/read.txt?path=bendtorch-core@0.1.0.0/src/shape/unique_proofs.bend&start_line=23&end_line=28 import Base import bendtorch-core@0.1.0.0/src/shape/broadcast_proofs.bend as Broadcast def cancel_right(+a: Nat, +b: Nat, +c: Nat, equal: {Nat.add(a, c) == Nat.add(b, c) : Nat}) -> {a == b : Nat}: match c: case 0n: Equal.trans(Nat, a, Nat.add(a, 0n), b, Equal.sym(Nat, Nat.add(a, 0n), a, Broadcast.add_zero(a)), Equal.trans(Nat, Nat.add(a, 0n), Nat.add(b, 0n), b, equal, Broadcast.add_zero(b))) case 1n+p: cancel_right(a, b, p, succ_injective(Nat.add(a, p), Nat.add(b, p), Equal.trans(Nat, 1n+Nat.add(a, p), Nat.add(a, 1n+p), 1n+Nat.add(b, p), Broadcast.add_succ(a, p), Equal.trans(Nat, Nat.add(a, 1n+p), Nat.add(b, 1n+p), 1n+Nat.add(b, p), equal, Equal.sym(Nat, 1n+Nat.add(b, p), Nat.add(b, 1n+p), Broadcast.add_succ(b, p)))))) Uses (7): 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=bendtorch-core@0.1.0.0/src/shape/broadcast_proofs.bend&name=add_succ https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/broadcast_proofs.bend&name=add_zero https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/unique_proofs.bend&name=succ_injective