def four_head
stelliferous@0.0.2.0 · proofs/kernel_tile_witness.bend:48
import stelliferous@0.0.2.0/proofs/kernel_tile_witness.bend as KernelTileWitness
import Base
import stelliferous@0.0.2.0/kernel_block.bend as Block
import stelliferous@0.0.2.0/kernel_tile.bend as Tile
import stelliferous@0.0.2.0/proofs/traversal_witness.bend as TraversalWitness
48def four_head(~State: Type,~Context: Data,~Evidence: @-state: State -> Data,
49 ~read: State -> Context -> Nat -> State & F32,
50 ~read_preserves: @-state: State -> @context: Context -> @index: Nat -> Evidence(state) -> TraversalWitness.Sample<State,F32,state,read(state,context,index)>,
51 -state: State,+context: Context,-head: F32,+index: Nat,+evidence: Evidence(state)) ->
52 TraversalWitness.Sample<State,Block.Twin<Block.Twin<F32>>,state,
53 Block.read_pair(~State,~Tile.HeadContext<Context>,~Block.Twin<F32>,
54 ~Block.read_pair(~State,~Tile.HeadContext<Context>,~F32,~Tile.read_with_head(~State,~Context,~read),~1n),~2n,state,Tile.HeadContext{head,context},index)>:
55 pair(~State,~Tile.HeadContext<Context>,~Block.Twin<F32>,
56 ~Block.read_pair(~State,~Tile.HeadContext<Context>,~F32,~Tile.read_with_head(~State,~Context,~read),~1n),~2n,state,Tile.HeadContext{head,context},index,
57 pair_head(~State,~Context,~Evidence,~read,~read_preserves,state,context,head,index,evidence),
58 pair_head(~State,~Context,~Evidence,~read,~read_preserves,state,context,head,Nat.add(index,2n),evidence))