~/bend-docscommunity

proofs/traversal_lanes_witness.bend checks

raw source on the hub · import stelliferous@0.0.2.0/proofs/traversal_lanes_witness.bend as Traversal_lanes_witness

Shape evidence for Lanes.map: every round reads the values array, writes a scratch tile, reads it back and stores eight values, so the array keeps its depth. Numerical loops call none of these functions.

7 imports
import Base
import ../traversal_lanes.bend as Lanes
import ../traversal_cells.bend as Cells
import ../traversal_array.bend as Traversal
import ../kernel_tile.bend as Tile
import ./storage_witness.bend as Witness
import ./traversal_witness.bend as TraversalWitness

Types

type Gathered source · line 12 · raw

@-values:Array<F32> -> @-result:Pair(Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8) -> Data

type Evidence source · line 82 · raw

@-Context:Data -> @-depth:Nat -> @-state:0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.State<Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context> -> Data

Definitions

def scatter source · line 57 · raw

@+depth:Nat -> @-values:Array<F32> -> @+position:U32 -> @-tile:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8 -> @witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.scatter(values, position, tile))

Templates

template gathered source · line 15 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @-values:Array<F32> -> @+position:U32 -> @+context:Context -> @r0:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, position)> -> @r1:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(position, 1))> -> @r2:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(position, 1), 1))> -> @r3:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(U32.add(position, 1), 1), 1))> -> @r4:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(U32.add(U32.add(position, 1), 1), 1), 1))> -> @r5:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(U32.add(U32.add(U32.add(position, 1), 1), 1), 1), 1))> -> @r6:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(U32.add(U32.add(U32.add(U32.add(position, 1), 1), 1), 1), 1), 1))> -> @r7:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<F32, values, Array.get(F32, values, U32.add(U32.add(U32.add(U32.add(U32.add(U32.add(U32.add(position, 1), 1), 1), 1), 1), 1), 1))> -> Gathered<values, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.gather(Context, map, values, position, context)>

template gather source · line 44 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @-values:Array<F32> -> @+position:U32 -> @+context:Context -> @+witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> Gathered<values, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.gather(Context, map, values, position, context)>

template scattered source · line 87 · raw

@-Context:Data -> @+depth:Nat -> @-values:Array<F32> -> @-scratch:Array<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @+position:U32 -> @+slot:U32 -> @+context:Context -> @values_witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> @scratch_witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, 6n, scratch) -> @read:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Read<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, scratch, Array.get(0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, scratch, slot)> -> Evidence<Context, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.scattered(Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.scatter, 8, position, slot, context, values, Array.get(0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, scratch, slot))>

template stored source · line 98 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @-values:Array<F32> -> @-scratch:Array<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @+position:U32 -> @+slot:U32 -> @+context:Context -> @values_witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> @scratch_witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, 6n, scratch) -> @gathered:Gathered<values, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.gather(Context, map, values, position, context)> -> Evidence<Context, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.stored(Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.scatter, 8, position, slot, context, scratch, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.gather(Context, map, values, position, context))>

template step source · line 110 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @-state:0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.State<Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context> -> @evidence:Evidence<Context, depth, state> -> Evidence<Context, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.step(Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.gather(Context, map), 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.scatter, 8, state)>

template finish source · line 119 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @count:Nat -> @-state:0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.State<Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context> -> @evidence:Evidence<Context, depth, state> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.finish(Context, map, count, state))

template rounds source · line 127 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @count:Nat -> @-state:0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_cells.State<Array<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8, Context> -> @evidence:Evidence<Context, depth, state> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.rounds(Context, map, count, state))

template map source · line 142 · raw

@-Context:Data -> @-map:(@_:Context -> @_:F32 -> F32) -> @+depth:Nat -> @count:Nat -> @+position:U32 -> @+context:Context -> @-values:Array<F32> -> @witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.map(Context, map, count, position, context, values))

template map_when source · line 147 · raw

@-Context:Data -> @-operation:(@_:Context -> @_:F32 -> F32) -> @covered:Bool -> @+depth:Nat -> @count:Nat -> @+position:U32 -> @+context:Context -> @-values:Array<F32> -> @witness:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, values) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_witness.Witness(F32, depth, 0x9be3b13bf249759bc81e1958bcd1a4c0/traversal_lanes.map_when(Context, operation, covered, count, position, context, values))