def fill_head
bendtorch-core@0.1.0.0 · src/tensor/construction_PROOF.bend:219
import bendtorch-core@0.1.0.0/src/tensor/construction_PROOF.bend as ConstructionPROOF
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
219def fill_head(-shape: Shape.Shape, -written: Core.Tensor<shape>, -tensor: Core.Tensor<shape>, +cursor: Nat, +value: F32,
220 point: @+index: U32 -> @at: {U32.to_nat(index) == cursor : Nat} ->
221 Core.ObservationChecked(Core.Packed{shape, written}, index) &
222 {Core.checked_observe(shape, written, index) == Some{value} : Maybe<&2, F32>},
223 frame: FillFrame(shape, written, 1n+cursor, tensor), +index: U32, +at: {U32.to_nat(index) == cursor : Nat}) ->
224 Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
225 {Core.checked_observe(shape, tensor, index) == Some{value} : Maybe<&2, F32>}:
226 {\{Tuple: checked => observed =>
227 {\{Tuple: after_checked => retained =>
228 (after_checked, Equal.trans(Maybe<&2, F32>, Core.checked_observe(shape, tensor, index), Core.checked_observe(shape, written, index),
229 Some{value}, retained, observed))} :
230 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
231 {Core.checked_observe(shape, tensor, index) == Core.checked_observe(shape, written, index) : Maybe<&2, F32>}) ->
232 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
233 {Core.checked_observe(shape, tensor, index) == Some{value} : Maybe<&2, F32>})}(frame(index)(
234 %Equal.sym(Nat, U32.to_nat(index), cursor, at) : Shape.LT(_, 1n+cursor)
235 lt_self_successor(cursor))(checked))
236 } :
237 (Core.ObservationChecked(Core.Packed{shape, written}, index) &
238 {Core.checked_observe(shape, written, index) == Some{value} : Maybe<&2, F32>}) ->
239 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
240 {Core.checked_observe(shape, tensor, index) == Some{value} : Maybe<&2, F32>})}(point(index)(at))