def dot_left_status

bendtorch-core@0.1.0.0 · src/tensor/matmul_PROOF.bend:739

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/math_totality.bend as Totality
import bendtorch-core@0.1.0.0/src/tensor/transform_totality.bend as TransformTotality
import bendtorch-core@0.1.0.0/src/shape/coordinate_proofs.bend as Coordinates
import bendtorch-core@0.1.0.0/src/storage/arith.bend as Arith

739def dot_left_status(+fuel: Nat, +left: Shape.Shape, +right: Shape.Shape, +row: U32, +column: U32, +cursor: Nat, +accumulator: F32,
740  pair: Core.Tensor<left> & Result<&2, &2, Core.Error, F32>, b: Core.Tensor<right>,
741  -successful: {TransformTotality.read_succeeded(left, pair) == True{} : Bool},
742  -right_fits: Coordinates.Fits(Shape.extents(right), [U32.to_nat(U32.from_nat(cursor)), U32.to_nat(column)]),
743  -rec: @a: Core.Tensor<left> -> @b: Core.Tensor<right> -> @+value: F32 -> Totality.Status<Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32,
744    Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, value)>) ->
745  Totality.Status<Matrix.Error, Core.Tensor<left> & Core.Tensor<right> & F32, Matrix.left_read(left, right,
746    a => b => value => Matrix.natural_dot(fuel, left, right, a, b, row, column, 1n+cursor, value), b, [U32.from_nat(cursor), column], accumulator, pair)>:
747  (a, result) = pair
748  match result:
749    case Fail{error}:
750      Totality.Status{Empty.absurd({False{} == True{} : Bool}, Arith.clash(successful))}
751    case Done{+value}:
752      dot_right_status(fuel, left, right, row, column, cursor, value, accumulator,
753        Core.read_coordinate(right, b, [U32.from_nat(cursor), column]), a,
754        {\{Totality.ReadStatus: successful => successful} : Totality.ReadStatus<right, Core.read_coordinate(right, b, [U32.from_nat(cursor), column])> ->
755          {TransformTotality.read_succeeded(right, Core.read_coordinate(right, b, [U32.from_nat(cursor), column])) == True{} : Bool}}(
756            coordinate_read_status(right, b, [U32.from_nat(cursor), column], right_fits)), rec)

Uses (26)

Used by (1)