def horner_below
bendtorch-core@0.1.0.0 · src/shape/boundary_proofs.bend:135
import bendtorch-core@0.1.0.0/src/shape/boundary_proofs.bend as BoundaryProofs
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/shape/nat_proofs.bend as Nats
import bendtorch-core@0.1.0.0/src/shape/coordinate_proofs.bend as Coordinates
135def horner_below(+shape: Shape.Shape, +values: List<&2, U32>, +fits: Coordinates.Fits(Shape.extents(shape), Shape.naturals(values))) -> {True{} == Nat.is_lt(Shape.horner(Shape.dimensions(shape), values, 0n), Shape.elements(shape)) : Bool}:
136 +coordinate = Coordinates.coordinate_of(Shape.extents(shape), Shape.naturals(values), fits)
137 %Equal.sym(Nat, Shape.elements(shape), Shape.numel(Shape.extents(shape)), Shape.elements_exact(shape)) : {True{} == Nat.is_lt(Shape.horner(Shape.dimensions(shape), values, 0n), _) : Bool}
138 %Equal.sym(Nat, Shape.horner(Shape.dimensions(shape), values, 0n), Shape.row_major(Shape.extents(shape), coordinate), horner_fits(shape, values, fits)) : {True{} == Nat.is_lt(_, Shape.numel(Shape.extents(shape))) : Bool}
139 Nats.lt_true(Shape.row_major(Shape.extents(shape), coordinate), Shape.numel(Shape.extents(shape)), Coordinates.row_major_lt(Shape.extents(shape), coordinate))