def fold_refines_ordered_model

stelliferous@0.0.2.0 · proofs/traversal_array_refinement.bend:118

import stelliferous@0.0.2.0/proofs/traversal_array_refinement.bend as TraversalArrayRefinement
import Base
import stelliferous@0.0.2.0/traversal_array.bend as Traversal
import stelliferous@0.0.2.0/traversal_loop.bend as Loop
import stelliferous@0.0.2.0/proofs/loop_projection.bend as Projection

118def fold_refines_ordered_model(~Reader: Type,~Model: Data,~Element: Data,~Accumulator: Data,~Context: Data,
119  ~pack_reader: Model -> Reader,~read: Reader -> Context -> U32 -> Reader & Element,
120  ~sample: Model -> Context -> U32 -> Element,~combine: Accumulator -> Element -> Accumulator,
121  ~read_matches: @+reader: Model -> @+context: Context -> @+position: U32 ->
122    {read(pack_reader(reader),context,position) == (pack_reader(reader),sample(reader,context,position)) : Reader & Element},
123  +count: Nat,+state: Traversal.State<&2,&2,Model,Accumulator,Context>) ->
124  {Loop.run(~Traversal.State<&1,&2,Reader,Accumulator,Context>,~Traversal.fold_step(~Reader,~Element,~Accumulator,~Context,~read,~combine),
125      count,represent_fold(~Reader,~Model,~Accumulator,~Context,~pack_reader,state)) ==
126    represent_fold(~Reader,~Model,~Accumulator,~Context,~pack_reader,
127      Loop.run(~Traversal.State<&2,&2,Model,Accumulator,Context>,~model_fold_step(~Model,~Element,~Accumulator,~Context,~sample,~combine),count,state)) :
128    Traversal.State<&1,&2,Reader,Accumulator,Context>}:
129  Projection.iteration_refines_model(~Traversal.State<&1,&2,Reader,Accumulator,Context>,~Traversal.State<&2,&2,Model,Accumulator,Context>,
130    ~Traversal.fold_step(~Reader,~Element,~Accumulator,~Context,~read,~combine),~model_fold_step(~Model,~Element,~Accumulator,~Context,~sample,~combine),
131    ~represent_fold(~Reader,~Model,~Accumulator,~Context,~pack_reader),
132    ~fold_step_refines_model(~Reader,~Model,~Element,~Accumulator,~Context,~pack_reader,~read,~sample,~combine,~read_matches),count,state)

Uses (11)

Used by (0)

No other definition uses this definition.