Commit Graph

10 Commits

Author SHA1 Message Date
2234f4d0f8 Conclude restricted LICM proof 2026-10-06 21:11:45 -05:00
141fe5dc9d Add intermediate proof that rhs of hoisted assignments are unchanged 2026-10-06 20:44:26 -05:00
13008121d5 Implement guarded LICM transformation 2026-10-06 20:22:35 -05:00
234d17394e Prove correctness of constant folding 2026-10-04 10:27:37 -05:00
7c05adadff Restore constant folding and expression correctness without trace experiments 2026-09-29 21:04:47 -05:00
269906871f Update LICM/Reaching to node use NodeId 2026-08-09 17:35:30 -05:00
319fa272ac Switch Reaching analysis to use Finset for more efficiency
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:46:54 -05:00
b6b30958aa Add proof of reaching definition analysis
This requires a few pieces:

* Make node tags use `Fin n` intead of natural numbers. This makes
  it possible to build a finite lattice over AST nodes, and also
  ensure automatic, total indexing from CFG nodes into the AST that
  created them. For this, use the elaborator to derive the ordering
  statements etc. where possible.
* Adjust the forward framework to enable proofs that don't just state
  correctness on the environment, but also on an arbitrary additional
  state accumulated from traversing the trace.
* State the reaching definition analysis's correctness in terms
  of this new framework.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 18:56:59 -05:00
6a6ed521ca Slightly tweak LICM implementation
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2026-06-26 12:16:04 -05:00
c38c10fe9e Add a sketch of loop invariant code motion
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 12:16:04 -05:00