def elements_output

bendtorch-core@0.1.0.0 · src/tensor/reshape_contract.bend:32

import bendtorch-core@0.1.0.0/src/tensor/reshape_contract.bend as ReshapeContract
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape

32def elements_output(+input: Shape.Shape, +target: Shape.Shape, +output: Shape.Shape, same: {Shape.logical_numel(Shape.dimensions(input)) == Shape.logical_numel(Shape.dimensions(target)) : Nat},
33  preserved: {Shape.dimensions(output) == Shape.dimensions(target) : List<&2, U32>}) ->
34  {Shape.elements(input) == Shape.elements(output) : Nat}:
35  Equal.trans(Nat, Shape.elements(input), Shape.logical_numel(Shape.dimensions(input)), Shape.elements(output), Shape.elements_exact(input),
36    Equal.trans(Nat, Shape.logical_numel(Shape.dimensions(input)), Shape.logical_numel(Shape.dimensions(target)), Shape.elements(output), same,
37      Equal.trans(Nat, Shape.logical_numel(Shape.dimensions(target)), Shape.logical_numel(Shape.dimensions(output)), Shape.elements(output),
38        Equal.cong(List<&2, U32>, Nat, dims => Shape.logical_numel(dims), Shape.dimensions(target), Shape.dimensions(output),
39          Equal.sym(List<&2, U32>, Shape.dimensions(output), Shape.dimensions(target), preserved)),
40        Equal.sym(Nat, Shape.elements(output), Shape.logical_numel(Shape.dimensions(output)), Shape.elements_exact(output)))))

Uses (11)

Used by (2)