def hit

bendtorch-core@0.1.0.0 · src/autograd/tensor_chain_PROOF.bend:83

import bendtorch-core@0.1.0.0/src/autograd/tensor_chain_PROOF.bend as TensorChainPROOF
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/autograd/gradient.bend as Gradient
import bendtorch-core@0.1.0.0/src/autograd/tensor_backward.bend as Backward
import bendtorch-core@0.1.0.0/src/autograd/tensor_chain_LAWS.bend as Laws

83def hit(outcome: Gradient.Outcome, rest: List<&1, Gradient.Slot>, +below: Nat, +target: Nat, +shape: Shape.Shape, -gradient: Core.Dynamic,
84  -slots: List<&1, Gradient.Slot>, -log: Laws.Log(), -w: Gradient.Slot, -older: List<&1, Gradient.Slot>, -left: Laws.Log(),
85  at: {slots == w <> older : List<&1, Gradient.Slot>}, tail: Pulls(rest, older, below, left),
86  took: {Laws.take(Backward.Contribution{target, shape, gradient} <> log, below, w) == (Laws.settled(outcome), left) : Laws.Taken()}) ->
87  Hit<outcome, rest, below, target, shape, gradient, slots, log>:
88  match outcome:
89    case Gradient.Accumulated{slot}:
90      Hit{Done{slot <> rest}, {==}, Cell{w, older, left, at, took, tail}}
91    case Gradient.Refused{slot, contribution, error}:
92      Hit{Fail{Backward.GradientError{error}}, {==}, Unit{}}

Uses (18)

Used by (1)