def agreed_mapping
bendtorch-core@0.1.0.0 · src/autograd/gradient_PROOF.bend:566
import bendtorch-core@0.1.0.0/src/autograd/gradient_PROOF.bend as GradientPROOF
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/elementwise_totality.bend as Totality
import bendtorch-core@0.1.0.0/src/autograd/gradient.bend as Gradient
import bendtorch-core@0.1.0.0/src/autograd/gradient_LAWS.bend as Laws
566def agreed_mapping(+shape: Shape.Shape, slot: Gradient.Slot, contribution: Core.Dynamic,
567 -agrees: {Totality.dimensions(contribution) == Shape.dimensions(shape) : List<&2, U32>}) ->
568 Holds<Laws.Mapping(slot, contribution, shape, Gradient.agreed(shape, slot, contribution))>:
569 match slot:
570 case Gradient.Unset{}:
571 Holds{(
572 %agrees : {Some{Totality.dimensions(contribution)} == Some{_} : Maybe<&2, List<&2, U32>>}
573 {==},
574 index => inside => {==})}
575 case Gradient.Held{gradient}:
576 held_mapping(shape, contribution, gradient)