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)))}

Uses (20)

Used by (1)