Skip to content

Commit 02dbec9

Browse files
committed
add non-determenism
1 parent 7b88541 commit 02dbec9

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

CaseStudies/Velvet/VelvetExamples/Demo/InsertionSort.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,24 @@ prove_correct sqrt by
3333

3434
-- #eval sqrt 10 |>.extract
3535

36+
set_option loom.solver "grind"
37+
38+
variable [FinEnum α]
39+
40+
method Set.toArray (mut s: α -> Bool) return (res: Array α)
41+
ensures forall x, s x <-> x ∈ res
42+
do
43+
let mut res := #[]
44+
while_some x :| s x
45+
invariant forall x, sOld x <-> (x ∈ res ∨ s x)
46+
done_with ∀ x, s x = false
47+
do
48+
res := res.push x
49+
return res
50+
51+
prove_correct Set.toArray by
52+
loom_solve
53+
3654
end squareRoot
3755

3856
-- (2) Insertion sort

0 commit comments

Comments
 (0)