Skip to content

Commit c2e9888

Browse files
author
Brian Huffman
committed
Update saw-core submodule to fix addsimp crash.
This patch includes PR GaloisInc/saw-core#112, which implements error handling using the Maybe monad for the creation of rewrite rules from equational theorems. Fixes #319.
1 parent 68be869 commit c2e9888

File tree

3 files changed

+22
-16
lines changed

3 files changed

+22
-16
lines changed

src/SAWScript/Builtins.hs

+17-11
Original file line numberDiff line numberDiff line change
@@ -1021,17 +1021,23 @@ beta_reduce_term (TypedTerm schema t) = do
10211021
t' <- io $ betaNormalize sc t
10221022
return (TypedTerm schema t')
10231023

1024-
addsimp :: Theorem -> Simpset -> Simpset
1025-
addsimp (Theorem (Prop t) _stats) ss = addRule (ruleOfProp t) ss
1026-
1027-
addsimp' :: Term -> Simpset -> Simpset
1028-
addsimp' t ss = addRule (ruleOfProp t) ss
1029-
1030-
addsimps :: [Theorem] -> Simpset -> Simpset
1031-
addsimps thms ss = foldr addsimp ss thms
1032-
1033-
addsimps' :: [Term] -> Simpset -> Simpset
1034-
addsimps' ts ss = foldr (\t -> addRule (ruleOfProp t)) ss ts
1024+
addsimp :: Theorem -> Simpset -> TopLevel Simpset
1025+
addsimp (Theorem (Prop t) _stats) ss =
1026+
case ruleOfProp t of
1027+
Nothing -> fail "addsimp: theorem not an equation"
1028+
Just rule -> pure (addRule rule ss)
1029+
1030+
addsimp' :: Term -> Simpset -> TopLevel Simpset
1031+
addsimp' t ss =
1032+
case ruleOfProp t of
1033+
Nothing -> fail "addsimp': theorem not an equation"
1034+
Just rule -> pure (addRule rule ss)
1035+
1036+
addsimps :: [Theorem] -> Simpset -> TopLevel Simpset
1037+
addsimps thms ss = foldM (flip addsimp) ss thms
1038+
1039+
addsimps' :: [Term] -> Simpset -> TopLevel Simpset
1040+
addsimps' ts ss = foldM (flip addsimp') ss ts
10351041

10361042
print_type :: Term -> TopLevel ()
10371043
print_type t = do

src/SAWScript/Interpreter.hs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1427,22 +1427,22 @@ primitives = Map.fromList
14271427
]
14281428

14291429
, prim "addsimp" "Theorem -> Simpset -> Simpset"
1430-
(pureVal addsimp)
1430+
(funVal2 addsimp)
14311431
Current
14321432
[ "Add a proved equality theorem to a given simplification rule set." ]
14331433

14341434
, prim "addsimp'" "Term -> Simpset -> Simpset"
1435-
(pureVal addsimp')
1435+
(funVal2 addsimp')
14361436
Current
14371437
[ "Add an arbitrary equality term to a given simplification rule set." ]
14381438

14391439
, prim "addsimps" "[Theorem] -> Simpset -> Simpset"
1440-
(pureVal addsimps)
1440+
(funVal2 addsimps)
14411441
Current
14421442
[ "Add proved equality theorems to a given simplification rule set." ]
14431443

14441444
, prim "addsimps'" "[Term] -> Simpset -> Simpset"
1445-
(pureVal addsimps')
1445+
(funVal2 addsimps')
14461446
Current
14471447
[ "Add arbitrary equality terms to a given simplification rule set." ]
14481448

0 commit comments

Comments
 (0)