Algorithm Search⌘K

Proofs: Block Wiedemann algorithm

These are the human proofs of Block Wiedemann algorithm, at full length.

Block Wiedemann returns kernel vectors, and its generators are generators full

This proof shows: correctness, termination.

Let AA be an n×nn \times n matrix over Fp\mathbb{F}_p, s≥1s \ge 1 the block width, X,Z∈Fpn×sX, Z \in \mathbb{F}_p^{n \times s}, Y=AZY = AZ, L=2⌈n/s⌉+4L = 2\lceil n/s \rceil + 4 and Si=XTAiYS_i = X^T A^i Y for 0≤i<L0 \le i < L. Write S(x)=∑i<LSixiS(x) = \sum_{i < L} S_i x^i, an s×ss \times s matrix of polynomials.

Claim. (1) The algorithm stops. (2) Every vector it returns is a nonzero uu with Au=0Au = 0; in particular, for a nonsingular AA it returns FAIL. (3) Every pair (d,f)(d, f) produced by line L5 satisfies ∑j=0dSi+jfj=0\sum_{j=0}^{d} S_{i+j} f_j = 0 for 0≤i<L−d0 \le i < L - d. (4) If a pair satisfies the stronger condition ∑jAjYfj=0\sum_j A^j Y f_j = 0 and u=∑j≥eAj−eZfj≠0u = \sum_{j \ge e} A^{j-e} Z f_j \ne 0, where ee is the least index with fe≠0f_e \ne 0, then lines L8 to L10 return a kernel vector.

(1) Termination. The loops of lines L3 and L5 have LL steps, M-Basis has LL rounds over 2s2s rows, there are at most 2s2s pairs in line L6, and the loop of line L8 has e+2e + 2 steps.

(2) Returned vectors. Line L9 returns uu only after line L8 checked u≠0u \ne 0 and line L9 checked Au=0Au = 0. A nonsingular matrix has no such uu.

(3) The M-Basis invariant. Let G(x)G(x) be the 2s×s2s \times s matrix with S(x)TS(x)^T on top of −Is-I_s, and let PP be the 2s×2s2s \times 2s polynomial matrix of the method, with rows Pi=(ai∣bi)P_i = (a_i \mid b_i), ai,bi∈Fp[x]1×sa_i, b_i \in \mathbb{F}_p[x]^{1 \times s}, and counters δi\delta_i. We show that before round kk (for 0≤k≤L0 \le k \le L):

  • (I1) PG≡0(modxk)P G \equiv 0 \pmod{x^k};
  • (I2) deg⁡ai≤δi\deg a_i \le \delta_i and deg⁡bi≤δi−1\deg b_i \le \delta_i - 1 for each ii.

At k=0k = 0, P=IP = I and δ=(0,…,0,1,…,1)\delta = (0, \dots, 0, 1, \dots, 1): (I1) is empty, and row ii is a unit vector of degree 00 in the part where its counter allows it. Assume (I1) and (I2) before round kk, and let Δ\Delta be the coefficient of xkx^k in PGPG. The rows are treated in increasing order of δ\delta. When row ii is reduced by a pivot row jj, row jj came earlier, so δj≤δi\delta_j \le \delta_i, and Pi−cPjP_i - c P_j still satisfies (I2) with the counter δi\delta_i. The same operation applied to Δ\Delta keeps Δ\Delta equal to the coefficient of xkx^k in the new PGPG, and it keeps (I1), since both rows satisfy it. After all rows are treated, the rows that are not pivots have zero rows in Δ\Delta, so they satisfy PiG≡0(modxk+1)P_i G \equiv 0 \pmod{x^{k+1}}. Each pivot row is multiplied by xx and its counter is increased by 11, which keeps (I2). Its product with GG was ≡0(modxk)\equiv 0 \pmod{x^k} by (I1), so after the multiplication it is ≡0(modxk+1)\equiv 0 \pmod{x^{k+1}}. So (I1) and (I2) hold before round k+1k + 1.

At the end, (I1) with k=Lk = L says aiS(x)T−bi≡0(modxL)a_i S(x)^T - b_i \equiv 0 \pmod{x^L} for each row. Fix a row with ai≠0a_i \ne 0, write d=δid = \delta_i and ai=∑t≤dαtxta_i = \sum_{t \le d} \alpha_t x^t, and set fj=αd−jTf_j = \alpha_{d - j}^T for 0≤j≤d0 \le j \le d, as line L5 does. For d≤t<Ld \le t < L, the coefficient of xtx^t in bib_i is 00 by (I2), so the coefficient of xtx^t in aiSTa_i S^T is 00:

0=∑k=0dαkSt−kT=(∑j=0dSt−d+j fj)T,0 = \sum_{k = 0}^{d} \alpha_k S_{t - k}^T = \Big( \sum_{j=0}^{d} S_{t - d + j}\, f_j \Big)^T,

with k=d−jk = d - j. All indices t−kt - k lie in [t−d,t]⊆[0,L−1][t - d, t] \subseteq [0, L - 1]. Putting i=t−di = t - d, which runs over 0≤i<L−d0 \le i < L - d, gives (3).

(4) Extraction. Suppose ∑jAjYfj=0\sum_j A^j Y f_j = 0. Since Y=AZY = AZ and fj=0f_j = 0 for j<ej < e,

0=∑j≥eAj+1Zfj=Ae+1∑j≥eAj−eZfj=Ae+1u.0 = \sum_{j \ge e} A^{j+1} Z f_j = A^{e+1} \sum_{j \ge e} A^{j - e} Z f_j = A^{e+1} u.

Line L7 computes this uu, by accumulating Zfj,AZfj+1,…Z f_j, A Z f_{j+1}, \dots with the block Aj−eZA^{j-e} Z updated by one product per step. If u≠0u \ne 0, let t≤et \le e be the largest index with Atu≠0A^t u \ne 0; it exists because A0u=u≠0A^0 u = u \ne 0 and Ae+1u=0A^{e+1} u = 0. Then At+1u=0A^{t+1} u = 0. The loop of line L8 visits u,Au,…u, Au, \dots in turn and returns the first AtuA^t u that is nonzero with At+1u=0A^{t+1} u = 0, which happens for some t≤et \le e, within the e+2e + 2 steps. ■\blacksquare

What is not proved here. Statement (3) is a condition on the projected sequence XTAiYX^T A^i Y only. That a generator of small degree also satisfies the stronger condition of (4), and that u≠0u \ne 0, holds with high probability over random XX and ZZ; this is the probabilistic analysis of Kaltofen (1995) for large fields and of Villard (1997) for small ones. The implementation does not rely on it, since it checks every candidate, and it repeats with new random blocks when all candidates fail.

Back to Block Wiedemann algorithm