Skip to content

Commit 4636c48

Browse files
committed
More fixes in contract simplification (Haskell version)
1 parent d7d37ee commit 4636c48

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

Haskell/Contract/Transform.hs

+10-9
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,11 @@ simplify0 env c =
5757
simplify0 env (both (scale ob c1) (scale ob c2))
5858
Scale r t -> scale (eval env r) (simplify0 env t)
5959
Transl i t' -> transl i (simplify0 (promote env i) t')
60-
TransfOne _ _ _ -> c
60+
TransfOne _ _ _ -> c
6161
If e c1 c2 -> let e' = eval env e
6262
c1' = simplify0 env c1
6363
c2' = simplify0 env c2
64-
in case e' of -- if e' known, iff constr. will shorten
65-
B True -> c1'
66-
B False -> c2'
67-
_ -> iff e' c1' c2'
64+
in iff e' c1' c2' -- just eval e, no branch elimination
6865
CheckWithin e i c1 c2
6966
-> let env' = emptyEnv -- (emp,#2 G)
7067
substE = eval env'
@@ -105,10 +102,14 @@ elimBrs env (Scale r t) = scale r (elimBrs env t)
105102
elimBrs env (Transl i t') = transl i (elimBrs (promote env i) t')
106103
elimBrs env c@(TransfOne _ _ _) = c
107104
-- the interesting ones:
108-
elimBrs env (If e c1 c2) = let e = eval env e
109-
c1 = elimBrs env c1
110-
c2 = elimBrs env c2
111-
in iff e c1 c2 -- if e known, iff will shorten
105+
elimBrs env (If e c1 c2) =
106+
let e' = eval env e
107+
c1' = elimBrs env c1
108+
c2' = elimBrs env c2
109+
in case e' of -- if e known, iff will shorten
110+
B True -> c1'
111+
B False -> c2'
112+
_ -> iff e' c1' c2'
112113
elimBrs env (CheckWithin e 0 c1 c2) = elimBrs env (If e c1 c2)
113114
-- elimBrs env (CheckWithin e i c1 c2)
114115
-- = let env' = emptyEnv -- (emp,#2 G)

0 commit comments

Comments
 (0)