def created_product
bendtorch-core@0.1.0.0 · src/tensor/matmul_PROOF.bend:569
import bendtorch-core@0.1.0.0/src/tensor/matmul_PROOF.bend as MatmulPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matrix
import bendtorch-core@0.1.0.0/src/tensor/matmul_LAWS.bend as Laws
569def created_product(+left: Shape.Shape, +right: Shape.Shape, +output: Shape.Shape, +inner: U32, +columns: U32,
570 a: Core.Tensor<left>, b: Core.Tensor<right>, result: Result<&2, &1, Core.Error, Core.Tensor<output>>) ->
571 Laws.SourceProduct<inner, left, right, a, b, output, Shape.logical_numel(Shape.dimensions(output)), Matrix.created(left, right, output, inner, columns, a, b, result)>:
572 match result:
573 case Fail{error}:
574 Laws.SourceProduct{unit => Unit{}}
575 case Done{out}:
576 Laws.SourceProduct{unit =>
577 claim : @certificate: Laws.SourceProduct<inner, left, right, a, b, output,
578 Nat.add(Shape.logical_numel(Shape.dimensions(output)), 0n),
579 Matrix.natural_product_loop(Shape.logical_numel(Shape.dimensions(output)), left, right, output, inner, columns, a, b, out, 0n)> ->
580 Laws.ProductMeaning(inner, left, right, a, b, output, Nat.add(Shape.logical_numel(Shape.dimensions(output)), 0n),
581 Matrix.natural_product_loop(Shape.logical_numel(Shape.dimensions(output)), left, right, output, inner, columns, a, b, out, 0n)) =
582 \{Laws.SourceProduct: meaning => meaning(Unit{})}
583 %Equal.sym(Nat, Shape.elements(output), Shape.logical_numel(Shape.dimensions(output)), Shape.elements_exact(output)) :
584 Laws.ProductMeaning(inner, left, right, a, b, output, Shape.logical_numel(Shape.dimensions(output)),
585 Matrix.natural_product_loop(_, left, right, output, inner, columns, a, b, out, 0n))
586 %add_zero(Shape.logical_numel(Shape.dimensions(output))) : Laws.ProductMeaning(inner, left, right, a, b, output, _,
587 Matrix.natural_product_loop(Shape.logical_numel(Shape.dimensions(output)), left, right, output, inner, columns, a, b, out, 0n))
588 claim(Laws.successful_product_interpretation(Shape.logical_numel(Shape.dimensions(output)), left, right, output, inner, columns, a, b,
589 a, b, out, 0n, empty_prefix(inner, left, right, a, b, output, out)))}