| MULT#(spmx, r, x; ; y) {y := mkvector(r); while spmx ≠ ∅ do {/* _:invariant y + spmx.toMatrix(r, # x) * x = (spmx`).toMatrix(r, # x) * x ∧ spmx ⊆ spmx` ∧ # y = r wfbound # spmx; */; choose np with np ∈ spmx in {y[np.r] := y[np.r] + spmx[np] * x[np.c]; spmx := spmx -- np}} } |