Skip to content

Commit 95b6c10

Browse files
emarzionMirceaS
andauthored
Stop simplifying the left-hand side of equations (#2392)
* rewriting simplifyEquation * observeT -> lift * switching order of LogicT and ExceptT * restoring pointfree style * updating regression tests * updating regressions + goldens * wasm regression tests * fixing wrc20 test * test * adding simplification attribute * adding simplification attribute * adding simplification attribute * trigger build * adding simplification attribute * adding simplification attribute * trigger build * adding simplification attribute * adding simplification attribute * adding simplification attribute * adding simplification attribute * removing test-issue-2095 * Revert "fixing wrc20 test" This reverts commit b395875. * Revert "wasm regression tests" This reverts commit 2a67a33. * Revert "updating regressions + goldens" This reverts commit dc2e22b. * Revert "updating regression tests" This reverts commit 571268d. * Revert "test" This reverts commit cd162fd. * Update Simplification.hs * import fix * typo * Format with stylish-haskell * fixing merge * fix import * returning Equation pattern match check * Update kore/src/Kore/Equation/Simplification.hs Co-authored-by: Octavian Mircea Sebe <[email protected]> Co-authored-by: emarzion <[email protected]> Co-authored-by: Octavian Mircea Sebe <[email protected]>
1 parent 7d3ee1b commit 95b6c10

File tree

1 file changed

+13
-33
lines changed

1 file changed

+13
-33
lines changed

kore/src/Kore/Equation/Simplification.hs

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,19 @@ import Data.Map.Strict
2424
import Kore.Equation.Equation
2525
import Kore.Internal.Conditional
2626
( Conditional (..)
27+
, fromPredicate
2728
)
2829
import Kore.Internal.MultiAnd
2930
( MultiAnd
3031
)
3132
import qualified Kore.Internal.MultiAnd as MultiAnd
32-
import Kore.Internal.OrPattern
33-
( OrPattern
34-
)
35-
import Kore.Internal.Pattern
36-
( Pattern
37-
)
38-
import qualified Kore.Internal.Pattern as Pattern
3933
import qualified Kore.Internal.Predicate as Predicate
34+
import qualified Kore.Internal.SideCondition as SideCondition
4035
import qualified Kore.Internal.Substitution as Substitution
4136
import qualified Kore.Internal.TermLike as TermLike
4237
import Kore.Rewriting.RewritingVariable
4338
( RewritingVariableName
4439
)
45-
import qualified Kore.Step.Simplification.Pattern as Pattern
4640
import Kore.Step.Simplification.Simplify
4741
( MonadSimplify
4842
)
@@ -82,16 +76,14 @@ simplifyEquation
8276
-> simplifier (MultiAnd (Equation RewritingVariableName))
8377
simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
8478
do
85-
simplifiedResults <-
86-
simplifyPattern leftWithArgument
87-
Monad.when
88-
(any (not . isTop . predicate) simplifiedResults)
89-
(throwE equation)
90-
simplified <- lift $ Logic.scatter simplifiedResults
91-
let Conditional { term, predicate, substitution } = simplified
92-
Monad.unless (isTop predicate) (throwE equation)
79+
simplifiedCond <-
80+
Simplifier.simplifyCondition
81+
SideCondition.top
82+
(fromPredicate argument')
83+
let Conditional { substitution, predicate } = simplifiedCond
84+
lift $ Monad.unless (isTop predicate) (throwE equation)
9385
let subst = Substitution.toMap substitution
94-
left' = TermLike.substitute subst term
86+
left' = TermLike.substitute subst left
9587
requires' = Predicate.substitute subst requires
9688
antiLeft' = Predicate.substitute subst <$> antiLeft
9789
right' = TermLike.substitute subst right
@@ -105,17 +97,14 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
10597
, ensures = Predicate.forgetSimplified ensures'
10698
, attributes = attributes
10799
}
108-
& returnOriginalIfAborted
109100
& Logic.observeAllT
101+
& returnOriginalIfAborted
110102
& fmap MultiAnd.make
111103
where
112-
leftWithArgument =
113-
maybe
114-
(Pattern.fromTermLike left)
115-
(Pattern.fromTermAndPredicate left)
116-
argument
104+
argument' =
105+
fromMaybe Predicate.makeTruePredicate argument
117106
returnOriginalIfAborted =
118-
fmap (either id id) . runExceptT
107+
fmap (either (: []) id) . runExceptT
119108
Equation
120109
{ requires
121110
, argument
@@ -125,12 +114,3 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
125114
, ensures
126115
, attributes
127116
} = equation
128-
129-
-- | Simplify a 'Pattern' using only matching logic rules.
130-
simplifyPattern
131-
:: MonadSimplify simplifier
132-
=> Pattern RewritingVariableName
133-
-> simplifier (OrPattern RewritingVariableName)
134-
simplifyPattern =
135-
Simplifier.localSimplifierAxioms (const mempty)
136-
. Pattern.simplify

0 commit comments

Comments
 (0)