Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions intTests/test2749/test.saw
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// test.saw
enable_experimental;

let
{{
inc : [1024][8] -> [64] -> [1024][8]
inc arr idx = update arr idx (arr @ idx + 10)
}};

prove_print
do {
print_goal;
goal_normalize [];
z3;
}
{{ \arr_val -> inc arr_val 0 == update arr_val 0 (arr_val @ 0 + 10) }};
2 changes: 2 additions & 0 deletions intTests/test2749/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/sh
$SAW test.saw
9 changes: 7 additions & 2 deletions saw-central/src/SAWCentral/Builtins.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import qualified Data.ByteString.Lazy as BS
import qualified Data.IntMap as IntMap
import Data.List (isPrefixOf, isInfixOf, sort, intersperse)
import qualified Data.Map as Map
import Data.Maybe (catMaybes)
import Data.Parameterized.Classes (KnownRepr(..))
import Data.Set (Set)
import qualified Data.Set as Set
Expand Down Expand Up @@ -63,9 +64,10 @@ import SAWCore.ExternalFormat
import SAWCore.FiniteValue
( FiniteType(..), readFiniteValue
)
import SAWCore.Name (ModuleName, VarName(..), mkModuleName)
import SAWCore.Name (ModuleName, VarName(..), mkModuleName, moduleIdentToURI)
import SAWCore.SATQuery
import SAWCore.SCTypeCheck
import SAWCore.Simulator.Concrete (constMap)
import SAWCore.Recognizer
import SAWCore.Prelude (scEq)
import SAWCore.SharedTerm
Expand Down Expand Up @@ -571,7 +573,10 @@ goal_normalize opaque =
execTactic $ tacticChange $ \goal ->
do sc <- getSharedContext
idxs <- mconcat <$> mapM (resolveName sc) opaque
let opaqueSet = Set.fromList idxs
-- Also exclude defined SAWCore constants that are implemented as primitives
let primURIs = map moduleIdentToURI (Map.keys constMap)
primIdxs <- io $ traverse (scResolveNameByURI sc) primURIs
let opaqueSet = Set.fromList (catMaybes primIdxs ++ idxs)
sqt' <- io $ traverseSequentWithFocus (normalizeProp sc opaqueSet) (goalSequent goal)
return (sqt', NormalizePropEvidence opaqueSet)

Expand Down
3 changes: 3 additions & 0 deletions saw-core/src/SAWCore/Simulator.hs
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,9 @@ evalTermF cfg lam recEval tf env =
VCtorMux _ps branches ->
do alts <- traverse (evalCtorMuxBranch vrec) (IntMap.elems branches)
combineAlts alts
VBVToNat{} ->
panic "evalTerF / evalRecursor"
["Unsupported symbolic recursor argument of type Nat"]
_ ->
panic "evalTermF / evalRecursor"
["Expected constructor for datatype: " <> toAbsoluteName (nameInfo d)]
Expand Down
1 change: 1 addition & 0 deletions saw-core/src/SAWCore/Simulator/Concrete.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ module SAWCore.Simulator.Concrete
, toBool
, toWord
, runIdentity
, constMap
) where

import Control.Monad.Identity
Expand Down
Loading