An induction variable changes by a fixed step each loop iteration: i = i + c. Once the compiler recognizes the pattern, it can do arithmetic on the recurrence itself — the k-th value is the closed form i₀ + k·c — and use it to strength-reduce a multiply into an add, eliminate the counter, or bound the loop. Induction-variable analysis is what lets a compiler turn a[i] address arithmetic (a multiply per iteration) into a running pointer (one add per iteration).
An induction variable starts at i₀ and steps by c. The demo runs the recurrence k times and checks it against the closed form i₀+k·c: live demo
“A loop counter is just a counter.” — it is an arithmetic sequence, and its k-th term has a closed form. Seeing the counter as algebra, not as steps, is what lets the compiler replace a multiply with an add and delete the counter entirely. cited
The recurrence and the closed form are the same sequence seen two ways: step-by-step, or all at once. The optimizer keeps whichever is cheaper — usually the add, sometimes the formula. Allen-Cocke-Kennedy 1981
On the canonical compiler, the recurrence i₀=5, c=3 stepped k=7 times equals the closed form 5+7·3 = 26 — identical: