def balance
bendtorch-core@0.1.0.0 · src/shape/unique_proofs.bend:48
import bendtorch-core@0.1.0.0/src/shape/unique_proofs.bend as UniqueProofs
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/shape/broadcast_proofs.bend as Broadcast
48def balance(+left_padding: Nat, +right_padding: Nat, +left: List<&2, Nat>, +right: List<&2, Nat>, +output: List<&2, Nat>, +aligned: Shape.Aligned(Shape.pad(left_padding, left), Shape.pad(right_padding, right), output)) -> {Nat.add(left_padding, List.length(&2, Nat, left)) == Nat.add(right_padding, List.length(&2, Nat, right)) : Nat}:
49 Equal.trans(Nat, Nat.add(left_padding, List.length(&2, Nat, left)), List.length(&2, Nat, Shape.pad(left_padding, left)), Nat.add(right_padding, List.length(&2, Nat, right)), Broadcast.pad_length(left_padding, left), Equal.trans(Nat, List.length(&2, Nat, Shape.pad(left_padding, left)), List.length(&2, Nat, output), Nat.add(right_padding, List.length(&2, Nat, right)), Broadcast.aligned_length_left(Shape.pad(left_padding, left), Shape.pad(right_padding, right), output, aligned), Equal.trans(Nat, List.length(&2, Nat, output), List.length(&2, Nat, Shape.pad(right_padding, right)), Nat.add(right_padding, List.length(&2, Nat, right)), Equal.sym(Nat, List.length(&2, Nat, Shape.pad(right_padding, right)), List.length(&2, Nat, output), Broadcast.aligned_length_right(Shape.pad(left_padding, left), Shape.pad(right_padding, right), output, aligned)), Equal.sym(Nat, Nat.add(right_padding, List.length(&2, Nat, right)), List.length(&2, Nat, Shape.pad(right_padding, right)), Broadcast.pad_length(right_padding, right)))))