Skip to content

Commit 65cff08

Browse files
committed
rewriting simplifyEquation
1 parent deaf0af commit 65cff08

File tree

1 file changed

+19
-29
lines changed

1 file changed

+19
-29
lines changed

kore/src/Kore/Equation/Simplification.hs

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,24 @@ 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
33+
-- import Kore.Internal.OrPattern
34+
-- ( OrPattern
35+
-- )
36+
-- import Kore.Internal.Pattern
37+
-- ( Pattern
38+
-- )
39+
-- import qualified Kore.Internal.Pattern as Pattern
3940
import qualified Kore.Internal.Predicate as Predicate
41+
import qualified Kore.Internal.SideCondition as SideCondition
4042
import qualified Kore.Internal.Substitution as Substitution
4143
import qualified Kore.Internal.TermLike as TermLike
42-
import qualified Kore.Step.Simplification.Pattern as Pattern
44+
-- import qualified Kore.Step.Simplification.Pattern as Pattern
4345
import Kore.Step.Simplification.Simplify
4446
( InternalVariable
4547
, MonadSimplify
@@ -74,22 +76,22 @@ argument contain a predicate which is not 'Top', 'simplifyEquation'
7476
returns the original equation.
7577
7678
-}
79+
7780
simplifyEquation
7881
:: (InternalVariable variable, MonadSimplify simplifier)
7982
=> Equation variable
8083
-> simplifier (MultiAnd (Equation variable))
81-
simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
84+
simplifyEquation equation =
8285
do
8386
simplifiedResults <-
84-
simplifyPattern leftWithArgument
85-
Monad.when
86-
(any (not . isTop . predicate) simplifiedResults)
87+
Logic.observeT $ Simplifier.simplifyCondition SideCondition.top (fromPredicate argument')
88+
unless
89+
((isTop . predicate) simplifiedResults)
8790
(throwE equation)
88-
simplified <- lift $ Logic.scatter simplifiedResults
89-
let Conditional { term, predicate, substitution } = simplified
91+
let Conditional { substitution, predicate } = simplifiedResults
9092
Monad.unless (isTop predicate) (throwE equation)
9193
let subst = Substitution.toMap substitution
92-
left' = TermLike.substitute subst term
94+
left' = TermLike.substitute subst left
9395
requires' = Predicate.substitute subst requires
9496
antiLeft' = Predicate.substitute subst <$> antiLeft
9597
right' = TermLike.substitute subst right
@@ -107,11 +109,8 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
107109
& Logic.observeAllT
108110
& fmap MultiAnd.make
109111
where
110-
leftWithArgument =
111-
maybe
112-
(Pattern.fromTermLike left)
113-
(Pattern.fromTermAndPredicate left)
114-
argument
112+
argument' =
113+
fromMaybe Predicate.makeTruePredicate argument
115114
returnOriginalIfAborted =
116115
fmap (either id id) . runExceptT
117116
Equation
@@ -123,12 +122,3 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
123122
, ensures
124123
, attributes
125124
} = equation
126-
127-
-- | Simplify a 'Pattern' using only matching logic rules.
128-
simplifyPattern
129-
:: (InternalVariable variable, MonadSimplify simplifier)
130-
=> Pattern variable
131-
-> simplifier (OrPattern variable)
132-
simplifyPattern =
133-
Simplifier.localSimplifierAxioms (const mempty)
134-
. Pattern.simplify

0 commit comments

Comments
 (0)