def cells_snoc

bendtorch-core@0.1.0.0 · src/autograd/tensor_vjp_PROOF.bend:44

import bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_PROOF.bend as TensorVjpPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/storage/LAWS.bend as StorageLaws
import bendtorch-core@0.1.0.0/src/tensor/elementwise.bend as Elementwise
import bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend as Laws

44def cells_snoc(+operation: Elementwise.Operation, +plan: Shape.BroadcastPlan,
45  +left: Shape.Shape, +left_fill: F32, +left_ops: List<&2, StorageLaws.Op>,
46  +right: Shape.Shape, +right_fill: F32, +right_ops: List<&2, StorageLaws.Op>, +previous: Nat,
47  +before: List<&2, F32>, +word: F32, +other: F32,
48  rest: {before == Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous) : List<&2, F32>},
49  last: {word == other : F32}) ->
50  {List.append(&2, F32, before, [word]) ==
51    List.append(&2, F32, Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous), [other]) : List<&2, F32>}:
52  Equal.trans(List<&2, F32>, List.append(&2, F32, before, [word]),
53    List.append(&2, F32, Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous), [word]),
54    List.append(&2, F32, Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous), [other]),
55    Equal.cong(List<&2, F32>, List<&2, F32>, values => List.append(&2, F32, values, [word]),
56      before, Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous), rest),
57    Equal.cong(F32, List<&2, F32>,
58      value => List.append(&2, F32, Laws.cells(operation, plan, left, left_fill, left_ops, right, right_fill, right_ops, previous), [value]),
59      word, other, last))

Uses (11)

Used by (1)