def somes_contribute

bendtorch-core@0.1.0.0 · src/autograd/backward_PROOF.bend:196

import bendtorch-core@0.1.0.0/src/autograd/backward_PROOF.bend as BackwardPROOF
import Base
import bendtorch-core@0.1.0.0/src/autograd/backward.bend as Backward
import bendtorch-core@0.1.0.0/src/autograd/backward_LAWS.bend as Laws

196def somes_contribute(+node: Backward.Node, gradient: Maybe<&2, F32>, +count: Nat, +slots: List<&2, Maybe<&2, F32>>) ->
197  {Laws.somes(Backward.contribute(node, gradient, count, slots)) ==
198    Laws.spread(node, Maybe.is_some(&2, F32, gradient), count, Laws.somes(slots)) : List<&2, Bool>}:
199  match gradient:
200    case None{}:
201      {==}
202    case Some{+value}:
203      %vjp_targets(node, value) :
204        {Laws.somes(Backward.deliver(Backward.vjp(node, value), count, slots)) == Laws.mark_all(_, count, Laws.somes(slots)) : List<&2, Bool>}
205      somes_deliver(Backward.vjp(node, value), count, slots)

Uses (15)

Used by (1)