# SHA-256 — notes (paper §7) Step inverse (given K_t, W_t and the new state (a', a, b, c, e', e, f, g)): T₂ = Σ₀(a) ⊞ Maj(a,b,c); T₁ = a' ⊟ T₂; d = e' ⊟ T₁; h = T₁ ⊟ Σ₁(e) ⊟ Ch(e,f,g) ⊟ K_t ⊟ W_t. (`src/wp34/sha256.py::step_inverse`, tested; Lean theorem in `formal/`.) Schedule inversion: W_{t−16} = W_t ⊟ σ₁(W_{t−2}) ⊟ W_{t−7} ⊟ σ₀(W_{t−15}). Consequence: for any target state S and any message block M, the IV H with Steps₆₄(H, M) = S is computable (pseudo-preimage of the compression function without feed-forward is free); the Davies–Meyer feed-forward H ⊞ Steps₆₄(H, M) is what blocks this. XOR-linearised local collision: replace ⊞ by ⊕ in the step and linearise Ch, Maj (Gilbert–Handschuh 2003); a difference δ in W_i propagates to a_{i+1} and e_{i+1} and is cancelled by corrections in W_{i+1..i+8}; the exact pattern and the probability with the real step function are measured in `experiments/reduced_round_sha256/` and the linear statement is machine-checked in `formal/`.