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)