AxisAlgebra.product_0: def of bendtorch-core@0.1.0.0 Import: import bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend as AxisAlgebra Lines 346-353 of bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend: https://jend.leeeet.dev/read.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&start_line=346&end_line=353 import Base import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape import bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend as Axis def product_0(+dims: List<&2, Nat>, length: {List.length(&2, Nat, dims) == 1n : Nat}) -> {Shape.numel(Axis.order(Nat, dims, [0n])) == Shape.numel(dims) : Nat}: match dims: case Nil{}: Empty.absurd({Shape.numel(Axis.order(Nat, Nil{}, [0n])) == Shape.numel(Nil{}) : Nat}, nat_clash(0n, 1n, length, {==})) case +x0 <> Nil{}: {==} case +x0 <> +x1 <> +tail: Empty.absurd({Shape.numel(Axis.order(Nat, x0 <> x1 <> tail, [0n])) == Shape.numel(x0 <> x1 <> tail) : Nat}, nat_clash(2n+List.length(&2, Nat, tail), 1n, length, {==})) Uses (7): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Empty.absurd https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List.length https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/core.bend&name=numel https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=nat_clash https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend&name=order