Skip to content

Commit b2ea0f8

Browse files
committed
Use substitution in Implies
1 parent bc72188 commit b2ea0f8

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

booster/library/Booster/Pattern/Implies.hs

+5-3
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ runImplies def mLlvmLibrary mSMTOptions antecedent consequent =
122122
, substitution = substitutionR
123123
}
124124

125-
SMT.isSat solver (Set.toList substPatL.constraints) >>= \case
125+
SMT.isSat solver (Set.toList substPatL.constraints) substPatL.substitution >>= \case
126126
SMT.IsUnsat ->
127127
let sort = externaliseSort $ sortOfPattern substPatL
128128
in implies' (Kore.Syntax.KJBottom sort) sort antecedent.term consequent.term mempty
@@ -159,8 +159,10 @@ runImplies def mLlvmLibrary mSMTOptions antecedent consequent =
159159
pure . Left . RpcError.backendError $ RpcError.Aborted (Text.pack . constructorName $ err)
160160
MatchSuccess subst -> do
161161
let filteredConsequentPreds =
162-
Set.map (Substitution.substituteInPredicate subst) substPatR.constraints
163-
`Set.difference` substPatL.constraints
162+
Set.map
163+
(Substitution.substituteInPredicate subst)
164+
(substPatR.constraints <> (Set.fromList $ Substitution.asEquations substPatR.substitution))
165+
`Set.difference` (substPatL.constraints <> (Set.fromList $ Substitution.asEquations substPatL.substitution))
164166

165167
if null filteredConsequentPreds
166168
then

booster/library/Booster/SMT/Interface.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,9 @@ isSat ::
280280
Log.LoggerMIO io =>
281281
SMT.SMTContext ->
282282
[Predicate] ->
283+
Map Variable Term -> -- supplied substitution
283284
io (IsSatResult ())
284-
isSat ctxt ps = fmap void <$> (isSatReturnTransState ctxt ps mempty)
285+
isSat ctxt ps subst = fmap void <$> (isSatReturnTransState ctxt ps subst)
285286

286287
{- |
287288
Implementation of get-model request

0 commit comments

Comments
 (0)