def fill_frame_advance
import bendtorch-core@0.1.0.0/src/tensor/construction_PROOF.bend as ConstructionPROOFimport 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
259def fill_frame_advance(-shape: Shape.Shape, -original: Core.Tensor<shape>, -written: Core.Tensor<shape>, -tensor: Core.Tensor<shape>, +cursor: Nat,
260 before: FillFrame(shape, original, cursor, written), after: FillFrame(shape, written, 1n+cursor, tensor),
261 +index: U32, +earlier: Shape.LT(U32.to_nat(index), cursor), checked: Core.ObservationChecked(Core.Packed{shape, original}, index)) ->
262 Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
263 {Core.checked_observe(shape, tensor, index) == Core.checked_observe(shape, original, index) : Maybe<&2, F32>}:
264 {\{Tuple: middle_checked => middle_equal =>
265 {\{Tuple: after_checked => after_equal =>
266 (after_checked, Equal.trans(Maybe<&2, F32>, Core.checked_observe(shape, tensor, index), Core.checked_observe(shape, written, index),
267 Core.checked_observe(shape, original, index), after_equal, middle_equal))} :
268 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
269 {Core.checked_observe(shape, tensor, index) == Core.checked_observe(shape, written, index) : Maybe<&2, F32>}) ->
270 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
271 {Core.checked_observe(shape, tensor, index) == Core.checked_observe(shape, original, index) : Maybe<&2, F32>})}(after(index)(lt_extend(U32.to_nat(index), cursor, earlier))(middle_checked))
272 } :
273 (Core.ObservationChecked(Core.Packed{shape, written}, index) &
274 {Core.checked_observe(shape, written, index) == Core.checked_observe(shape, original, index) : Maybe<&2, F32>}) ->
275 (Core.ObservationChecked(Core.Packed{shape, tensor}, index) &
276 {Core.checked_observe(shape, tensor, index) == Core.checked_observe(shape, original, index) : Maybe<&2, F32>})}(before(index)(earlier)(checked))