def side_inside

bendtorch-core@0.1.0.0 · src/tensor/elementwise_parallel_proof.bend:438

import bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend as ElementwiseParallelProof
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/tensor/word_conversion.bend as WordConversion

438# A cell an index walk names lies inside the input it reads.
439def side_inside(-input: Core.Dynamic, +side: Shape.Shape, +walk: Nat,
440  fits: {Totality.dimensions(input) == Shape.dimensions(side) : List<&2, U32>},
441  +bound: {True{} == Nat.is_lt(walk, Shape.elements(side)) : Bool}) ->
442  {Nat.is_lt(U32.to_nat(U32.from_nat(walk)), Shape.logical_numel(Totality.dimensions(input))) == True{} : Bool}:
443  %Equal.sym(Nat, U32.to_nat(U32.from_nat(walk)), walk,
444    word_exact(side, walk, WordConversion.lt_le(walk, Shape.elements(side), Equal.sym(Bool, True{}, Nat.is_lt(walk, Shape.elements(side)), bound)))) :
445    {Nat.is_lt(_, Shape.logical_numel(Totality.dimensions(input))) == True{} : Bool}
446  %Equal.sym(List<&2, U32>, Totality.dimensions(input), Shape.dimensions(side), fits) :
447    {Nat.is_lt(walk, Shape.logical_numel(_)) == True{} : Bool}
448  %Shape.elements_exact(side) : {Nat.is_lt(walk, _) == True{} : Bool}
449  Equal.sym(Bool, True{}, Nat.is_lt(walk, Shape.elements(side)), bound)

Uses (17)

Used by (1)