Alphabeta Math
AlgorithmAlgorithm: AI-adaptedProof: Not applicablePipeline-generatedjudge pass (gpt-6-luna)
How statement and proof provenance work

The first chip identifies the source of the statement or construction; the second identifies the source of its local proof or verification.

  • Literature-sourced: the exact statement appears in a cited source; only wording and notation differ.
  • AI-adapted: a semantically identical restatement of literature-sourced material, modulo indexing, notation, and boundary cases adopted by the library.
  • AI-generated: a genuinely novel statement formulated by AI, with no source for the claim itself.

These labels describe origin, not correctness: citations and verification chips remain separate evidence.

Fixed-pattern ILU(0) factorization and application

Definition

Let F be a field, let n≥1, and let the input be a valid n×n CSR record as in Compressed sparse row matrices with stored-entry semantics, representing A∈Mn(F). Matrix positions in this definition use one-based notation: (i,j) refers to CSR row i−1 and column index j−1. This row/column order is fixed before the procedure begins; vector component label i refers to coordinate i−1. The procedure performs no pivoting or reordering. All field operations below are exact.

Let P={(i,j):aij≠0}. Scan each row once to check the canonical and increasing-index conditions and to record whether its diagonal position occurs. If the input fails either pattern condition, return invalid-pattern. If a row has no diagonal position, return missing-diagonal(i) for the least such i.

Copy the value in each input slot to a work array W, and regard the unit diagonal of L as implicit. Process rows i=1,…,n in increasing order. For each k<i with (i,k)∈P, in increasing k order, do the following:

  1. If Wkk=0, return zero-pivot(k).
  2. Set Wik←Wik/Wkk; this value is the stored factor Lik.
  3. Let R be the increasing list of one-based matrix column labels j>k represented by row i's CSR segment, and let C be the corresponding increasing list represented by row k's CSR segment. Set each pointer to the first entry of its list, or to that list's end marker when it is empty. While both pointers are within their lists, compare their current indices. If they are equal, call their common value j and update Wij←Wij−WikWkj and advance both pointers once. If the current index in R is smaller, advance only its pointer once; if the current index in C is smaller, advance only its pointer once, making no arithmetic update in either unequal-index branch. Stop when either pointer passes the end of its list. Do not skip a matching slot when a current work value is zero.

After all such k have been processed in row i, if Wii=0, return zero-pivot(i). Otherwise the upper row entries Uij are the current Wij for (i,j)∈P and j≥i. Continue to the next row.

If every row completes, return ok with the unit-lower factor L (stored strict-lower entries Lik=Wik for (i,k)∈P) and the upper factor U (stored entries Uij=Wij for (i,j)∈P, j≥i). Both factors use only positions in P; the diagonal of L is implicit, and all other unstored off-diagonal entries are zero. The numeric values remain stored at their structural slots if an update makes a value zero.

For a successful factor pair and r∈Fn, apply the preconditioner as follows. For i=1,…,n in order, initialize yi:=ri and, for each k<i with (i,k)∈P in increasing order, update yi:=yi−Likyk. Then for i=n,n−1,…,1, initialize xi:=yi; for each k>i with (i,k)∈P in decreasing order, update xi:=xi−Uikxk; finally set xi:=xi/Uii. Visit every such stored factor slot exactly once, including slots whose current factor value is zero. These are the forward and backward substitution recurrences, with their sums traversed only over stored strict-triangular slots. The pivot checks ensure every denominator in this application is nonzero. This procedure defines setup and application only; it asserts no factorization identity A=LU, Krylov convergence, conditioning improvement, or accuracy guarantee.

Depends on

Used by

Dependency tree · two levels

7 results within two dependency steps of this one, each drawn at its shortest distance from it. An arrow runs from a result to what uses it, so the chart reads left to right and ends at this result, which carries a heavier outline. Every node is a link to that result. Click elsewhere on the chart to enlarge it.

Sources