@@ -15,9 +15,10 @@ def setIfBetweenFun : Fun :=
1515 { name := "setIfBetween"
1616 args := ["slot" , "value" , "min" , "max" ]
1717 body :=
18- requireGt (v "value" ) (v "min" )
19- (requireLt (v "value" ) (v "max" )
20- (sstoreVar "slot" (v "value" )))
18+ requireAnd
19+ (Expr.gt (v "value" ) (v "min" ))
20+ (Expr.lt (v "value" ) (v "max" ))
21+ (sstoreVar "slot" (v "value" ))
2122 ret := none }
2223
2324def setIfBetweenSpecR (slot value min max : Nat) : SpecR Store :=
@@ -32,7 +33,7 @@ theorem setIfBetween_meets_specR_ok (s : Store) (slot value min max : Nat) :
3233 | _ => False) := by
3334 intro hreq
3435 rcases hreq with ⟨hgt, hlt⟩
35- simp [setIfBetweenSpecR, setIfBetweenFun, requireGt, requireLt , require, sstoreVar, v, execFun,
36+ simp [setIfBetweenSpecR, setIfBetweenFun, requireAnd , require, sstoreVar, v, execFun,
3637 execStmt, evalExpr, bindArgs, emptyEnv, updateEnv, updateStore, hgt, hlt]
3738
3839theorem setIfBetween_meets_specR_reverts (s : Store) (slot value min max : Nat) :
@@ -42,16 +43,16 @@ theorem setIfBetween_meets_specR_reverts (s : Store) (slot value min max : Nat)
4243 rcases hrev with hle | hge
4344 · have hnot : ¬ value > min := by
4445 exact Nat.not_lt.mpr hle
45- simp [setIfBetweenSpecR, setIfBetweenFun, requireGt, requireLt , require, sstoreVar, v, execFun,
46+ simp [setIfBetweenSpecR, setIfBetweenFun, requireAnd , require, sstoreVar, v, execFun,
4647 execStmt, evalExpr, bindArgs, emptyEnv, updateEnv, updateStore, hnot]
4748 · by_cases hgt : value > min
4849 · have hnotlt : ¬ value < max := by
4950 exact Nat.not_lt.mpr hge
50- simp [setIfBetweenSpecR, setIfBetweenFun, requireGt, requireLt , require, sstoreVar, v,
51+ simp [setIfBetweenSpecR, setIfBetweenFun, requireAnd , require, sstoreVar, v,
5152 execFun, execStmt, evalExpr, bindArgs, emptyEnv, updateEnv, updateStore, hgt, hnotlt]
5253 · have hnot : ¬ value > min := by
5354 exact hgt
54- simp [setIfBetweenSpecR, setIfBetweenFun, requireGt, requireLt , require, sstoreVar, v,
55+ simp [setIfBetweenSpecR, setIfBetweenFun, requireAnd , require, sstoreVar, v,
5556 execFun, execStmt, evalExpr, bindArgs, emptyEnv, updateEnv, updateStore, hnot]
5657
5758end DumbContracts.Examples
0 commit comments