Prove that analysis results apply to all states, not just the final one
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -213,6 +213,13 @@ theorem analyze_correct {ρ : Env} (hrun : EvalStmt [] prog.rootStmt ρ) :
|
||||
⟦ variablesAt prog.finalState (result SignLattice prog) ⟧ ρ () :=
|
||||
Forward.analyze_correct SignLattice prog hrun
|
||||
|
||||
theorem analyze_correct_at {ρf : Env} (hrun : EvalStmt [] prog.rootStmt ρf)
|
||||
{s : prog.State} {ρin ρout : Env} {stin stout : PUnit}
|
||||
(hr : Reaches (L := SignLattice) (prog.trace hrun) PUnit.unit s ρin ρout stin stout) :
|
||||
⟦ joinForKey s (result SignLattice prog) ⟧ ρin stin
|
||||
∧ ⟦ variablesAt s (result SignLattice prog) ⟧ ρout stout :=
|
||||
Forward.analyze_correct_at SignLattice prog hrun hr
|
||||
|
||||
end SignAnalysis
|
||||
|
||||
end Spa
|
||||
|
||||
Reference in New Issue
Block a user