def scattered
stelliferous@0.0.2.0 · proofs/traversal_lanes_witness.bend:87
import stelliferous@0.0.2.0/proofs/traversal_lanes_witness.bend as TraversalLanesWitness
import Base
import stelliferous@0.0.2.0/traversal_lanes.bend as Lanes
import stelliferous@0.0.2.0/traversal_cells.bend as Cells
import stelliferous@0.0.2.0/kernel_tile.bend as Tile
import stelliferous@0.0.2.0/proofs/storage_witness.bend as Witness
87def scattered(~Context: Data,+depth: Nat,-values: Array<F32>,-scratch: Array<Tile.Tile8>,+position: U32,+slot: U32,+context: Context,
88 values_witness: Witness.Witness(F32,depth,values),scratch_witness: Witness.Witness(Tile.Tile8,6n,scratch),
89 read: Witness.Read<Tile.Tile8,scratch,Array.get(Tile.Tile8,scratch,slot)>) ->
90 Evidence<Context,depth,Cells.scattered(~Array<F32>,~Tile.Tile8,~Context,~Lanes.scatter,~8,position,slot,context,values,Array.get(Tile.Tile8,scratch,slot))>:
91 match read:
92 case Witness.Read{tile,equation}:
93 %Equal.sym(Array<Tile.Tile8> & Tile.Tile8,Array.get(Tile.Tile8,scratch,slot),(scratch,tile),equation) :
94 Evidence<Context,depth,Cells.scattered(~Array<F32>,~Tile.Tile8,~Context,~Lanes.scatter,~8,position,slot,context,values,_)>
95 Evidence{Lanes.scatter(values,position,tile),scratch,(position + 8 : U32),U32.and((slot + 1 : U32),63),context,{==},
96 scatter(depth,values,position,tile,values_witness),scratch_witness}