@@ -540,7 +540,7 @@ parseSMTModel s = if length s0Caps == 1
540540encodeUpdate :: Id -> StorageUpdate -> SMT2
541541encodeUpdate behvName (Update _ item expr) =
542542 let
543- postentry = withInterface behvName $ expToSMT2 (TEntry nowhere Post SStorage item)
543+ postentry = withInterface behvName $ expToSMT2 (TEntry nowhere SStorage item)
544544 expression = withInterface behvName $ expToSMT2 expr
545545 in " (assert (= " <> postentry <> " " <> expression <> " ))"
546546
@@ -551,7 +551,7 @@ encodeConstant loc = "(assert (= " <> nameFromLoc Pre loc <> " " <> nameFromLoc
551551declareStorage :: [When ] -> StorageLocation -> [SMT2 ]
552552declareStorage times (Loc _ item@ (Item _ _ ref)) = declareRef ref
553553 where
554- declareRef (SVar _ _ _) = (\ t -> constant (nameFromSItem t item) (itemType item) ) <$> times
554+ declareRef (SVar _ _ _ _ ) = (\ t -> constant (nameFromSItem t item) (itemType item) ) <$> times
555555 declareRef (SMapping _ _ ixs) = (\ t -> array (nameFromSItem t item) ixs (itemType item)) <$> times
556556 declareRef (SField _ ref' _ _) = declareRef ref'
557557
@@ -625,7 +625,7 @@ expToSMT2 expr = case expr of
625625 Eq _ _ a b -> binop " =" a b
626626 NEq p s a b -> unop " not" (Eq p s a b)
627627 ITE _ a b c -> triop " ite" a b c
628- TEntry _ w _ item -> entry item w
628+ TEntry _ _ item -> entry item
629629 where
630630 unop :: String -> Exp a -> Ctx SMT2
631631 unop op a = [" (" <> op <> " " <> a' <> " )" | a' <- expToSMT2 a]
@@ -638,11 +638,11 @@ expToSMT2 expr = case expr of
638638 triop op a b c = [" (" <> op <> " " <> a' <> " " <> b' <> " " <> c' <> " )"
639639 | a' <- expToSMT2 a, b' <- expToSMT2 b, c' <- expToSMT2 c]
640640
641- entry :: TItem k a -> When -> Ctx SMT2
642- entry item whn = case ixsFromItem item of
643- [] -> nameFromItem whn item
641+ entry :: TItem k a -> Ctx SMT2
642+ entry item = case ixsFromItem item of
643+ [] -> nameFromItem item
644644 (ix: ixs) -> do
645- name <- nameFromItem whn item
645+ name <- nameFromItem item
646646 select name (ix :| ixs)
647647
648648-- | SMT2 has no support for exponentiation, but we can do some preprocessing
@@ -689,23 +689,19 @@ sType' (TExp t _) = sType $ actType t
689689
690690-- Construct the smt2 variable name for a given storage item
691691nameFromSItem :: When -> TItem a Storage -> Id
692- nameFromSItem whn (Item _ _ ref) = nameFromSRef ref @@ show whn
692+ nameFromSItem whn (Item _ _ ref) = nameFromSRef whn ref @@ show whn
693693
694- nameFromSRef :: Ref Storage -> Id
695- nameFromSRef (SVar _ c name) = c @@ name
696- nameFromSRef (SMapping _ e _) = nameFromSRef e
697- nameFromSRef (SField _ ref c x) = nameFromSRef ref @@ c @@ x
694+ nameFromSRef :: When -> Ref Storage -> Id
695+ nameFromSRef whn (SVar _ c name _ ) = c @@ name @@ show whn
696+ nameFromSRef whn (SMapping _ e _) = nameFromSRef whn e
697+ nameFromSRef whn (SField _ ref c x) = nameFromSRef whn ref @@ c @@ x
698698
699- nameFromItem :: When -> TItem k a -> Ctx Id
700- nameFromItem whn (Item _ _ ref) = do
701- name <- nameFromRef ref
702- case ref of -- TODO: this feels rather adhoc, but I can't find a better way to handle timings
703- CVar _ _ _ -> pure name
704- _ -> pure $ name @@ show whn
699+ nameFromItem :: TItem k a -> Ctx Id
700+ nameFromItem (Item _ _ ref) = nameFromRef ref
705701
706702nameFromRef :: Ref k -> Ctx Id
707703nameFromRef (CVar _ _ name) = nameFromVarId name
708- nameFromRef (SVar _ c name) = pure $ c @@ name
704+ nameFromRef (SVar _ c name whn ) = pure $ c @@ name @@ show whn
709705nameFromRef (SMapping _ e _) = nameFromRef e
710706nameFromRef (SField _ ref c x) = do
711707 name <- nameFromRef ref
0 commit comments