Proof of `Computing the scatter type`

groundedproofs/Lax185574Proofs/ComputeScatterType.lean · lax-185574

What this proof establishes

Assuming the claims on the left, the claim on the right holds — checked by the archive's pipeline. Proof code is not displayed here.

Read the Lean proof on GitHub

In the paper

  • page 46 of this submission's paper

Description

The program runs the glue program StpRam.glueStpRam.glue and the program of the rank shift lemma in the loop driver loopsoundloop_sound, as in the proof of the lemma on computing scatter types. The first round reads the graph, kk and qq, skips the distance matrix DGD_G and reads the family of type trees. For q=0q = 0 it outputs the empty scatter type. Otherwise the rounds ask for the shifts of the entries of the list of the family trees followed by the answers, one by one, so that the answers are the trees treek+i,q−i(v)tree_{k+i,q−i}(v) for 1≤i≤q1 ≤ i ≤ q and all vertices vv, in this order. After a dummy call the final round reads the graph, DGD_G and the answers and computes the scatter type (StpRam.finalRoundrunStpRam.finalRound_run). Its greedy scans test whether a vertex is within distance rr of a chosen vertex by one entry of the row of DGD_G of the chosen vertex, in place of a breadth-first search. The script has q⋅n+1q · n + 1 calls. Every run inside the driver is right at an admissible word length: the runs of the glue program because their values are below a constant in k,qk, q times the cube of ∣x∣+maxx+1|x| + max x + 1, the runs of the rank shift because their queries are admissible at the word lengths of their regions. The time is that of the first round, Ok,q(n2+n⋅L)O_{k,q}(n² + n · L), and of the final round, Ok,q(n2⋅(L+1))O_{k,q}(n² · (L + 1)), plus q⋅nq · n middle rounds of time Ok,q(n⋅L)O_{k,q}(n · L) and q⋅n+1q · n + 1 calls of time Ok,q((L+1)a)O_{k,q}((L + 1)^a).

The proof is carried out for the notion Lax185574.Computing.ComputesLax185574.Computing.Computes, and transferred to Lax185574.Algorithms.Algorithm.ComputesLax185574.Algorithms.Algorithm.Computes through Lax185574Proofs.InterfaceLax185574Proofs.Interface.