def loop_after_natural

bendtorch-core@0.1.0.0 · src/tensor/transform_PROOF.bend:942

import bendtorch-core@0.1.0.0/src/tensor/transform_PROOF.bend as TransformPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/layout.bend as Layout
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
import bendtorch-core@0.1.0.0/src/tensor/transforms.bend as Transforms

942def loop_after_natural(+fuel: Nat, +input: Shape.Shape, +axes: List<&2, U32>, +plan: Layout.Plan<input, axes>, +cursor: Nat,
943  -original: Core.Tensor<input>, -before_source: Core.Tensor<input>, -before_target: Core.Tensor<Layout.output(input, axes, plan)>,
944  -prefix: Transforms.Prefix<input, axes, plan, original, before_source, before_target, cursor>,
945  certificate: Transforms.NaturalCertificate<input, axes, plan, cursor, before_source, before_target>,
946  rec: @source: Core.Tensor<input> -> @target: Core.Tensor<Layout.output(input, axes, plan)> ->
947    @-prefix: Transforms.Prefix<input, axes, plan, original, source, target, 1n+cursor> ->
948      Transforms.LoopCertificate<input, axes, plan, original, fuel, 1n+cursor, source, target>) ->
949  Transforms.LoopCertificate<input, axes, plan, original, 1n+fuel, cursor, before_source, before_target>:
950  Transforms.NaturalCertificate{result, exact, meaning} = certificate
951  match result:
952    case Transforms.NaturalError{source}:
953      Transforms.LoopCertificate{(source, Fail{Transforms.LayoutError{Layout.MappingError{}}}),
954        Equal.cong(Transforms.NaturalCopy<input, axes, plan, cursor>,
955          Core.Tensor<input> & Result<&2, &1, Transforms.Error, Core.Tensor<Layout.output(input, axes, plan)>>,
956          step => Transforms.natural_next(input, axes, plan, cursor,
957            source => target => Transforms.copy_loop(fuel, input, axes, plan, source, target, 1n+cursor), step),
958          Transforms.NaturalError{source}, Transforms.natural_step(input, axes, plan, cursor, before_source, before_target), exact), Unit{}}
959    case Transforms.NaturalCopied{pair, index, converted, candidate}:
960      loop_after_pair(fuel, input, axes, plan, cursor, original, before_source, before_target, index, converted, candidate, prefix,
961        pair, exact, meaning, rec)

Uses (22)

Used by (1)