File tree Expand file tree Collapse file tree
Veil/Core/Tools/ModelChecker Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -188,27 +188,30 @@ partial def simulate {ρ σ κ : Type} {th₀ : ρ}
188188 let mut totalSteps := 0
189189 while i < cfg.maxTraces do
190190 let traceSeed := actualSeed + i
191- -- Fast scan: no trace allocation
192- let (violated, _, stepsUsed) := scanOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
193- totalSteps := totalSteps + stepsUsed
194- if violated then
195- -- Replay with same seed to build counterexample trace
196- let (maybeResult, _, _) := simulateOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
197- match maybeResult with
198- | some result =>
199- let elapsedMs := (← IO.monoMsNow) - startMs
200- return {
201- result := result
202- tracesRun := i + 1
203- elapsedMs := elapsedMs
204- seed := actualSeed
205- depth := stepsUsed
206- totalSteps := totalSteps
207- }
208- | none =>
209- -- Scan flagged violation but replay didn't reproduce (should not happen)
191+ try
192+ -- Fast scan: no trace allocation
193+ let (violated, _, stepsUsed) := scanOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
194+ totalSteps := totalSteps + stepsUsed
195+ if violated then
196+ -- Replay with same seed to build counterexample trace
197+ let (maybeResult, _, _) := simulateOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
198+ match maybeResult with
199+ | some result =>
200+ let elapsedMs := (← IO.monoMsNow) - startMs
201+ return {
202+ result := result
203+ tracesRun := i + 1
204+ elapsedMs := elapsedMs
205+ seed := actualSeed
206+ depth := stepsUsed
207+ totalSteps := totalSteps
208+ }
209+ | none =>
210+ i := i + 1
211+ else
210212 i := i + 1
211- else
213+ catch e =>
214+ IO.eprintln s! "#simulate: error on trace { i} (seed := { traceSeed} ): { e.toString} "
212215 i := i + 1
213216 let elapsedMs := (← IO.monoMsNow) - startMs
214217 return {
You can’t perform that action at this time.
0 commit comments