@@ -24,22 +24,24 @@ import Data.Map.Strict
24
24
import Kore.Equation.Equation
25
25
import Kore.Internal.Conditional
26
26
( Conditional (.. )
27
+ , fromPredicate
27
28
)
28
29
import Kore.Internal.MultiAnd
29
30
( MultiAnd
30
31
)
31
32
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
39
40
import qualified Kore.Internal.Predicate as Predicate
41
+ import qualified Kore.Internal.SideCondition as SideCondition
40
42
import qualified Kore.Internal.Substitution as Substitution
41
43
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
43
45
import Kore.Step.Simplification.Simplify
44
46
( InternalVariable
45
47
, MonadSimplify
@@ -74,22 +76,22 @@ argument contain a predicate which is not 'Top', 'simplifyEquation'
74
76
returns the original equation.
75
77
76
78
-}
79
+
77
80
simplifyEquation
78
81
:: (InternalVariable variable , MonadSimplify simplifier )
79
82
=> Equation variable
80
83
-> simplifier (MultiAnd (Equation variable ))
81
- simplifyEquation equation@ ( Equation _ _ _ _ _ _ _) =
84
+ simplifyEquation equation =
82
85
do
83
86
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)
87
90
(throwE equation)
88
- simplified <- lift $ Logic. scatter simplifiedResults
89
- let Conditional { term, predicate, substitution } = simplified
91
+ let Conditional { substitution, predicate } = simplifiedResults
90
92
Monad. unless (isTop predicate) (throwE equation)
91
93
let subst = Substitution. toMap substitution
92
- left' = TermLike. substitute subst term
94
+ left' = TermLike. substitute subst left
93
95
requires' = Predicate. substitute subst requires
94
96
antiLeft' = Predicate. substitute subst <$> antiLeft
95
97
right' = TermLike. substitute subst right
@@ -107,11 +109,8 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
107
109
& Logic. observeAllT
108
110
& fmap MultiAnd. make
109
111
where
110
- leftWithArgument =
111
- maybe
112
- (Pattern. fromTermLike left)
113
- (Pattern. fromTermAndPredicate left)
114
- argument
112
+ argument' =
113
+ fromMaybe Predicate. makeTruePredicate argument
115
114
returnOriginalIfAborted =
116
115
fmap (either id id ) . runExceptT
117
116
Equation
@@ -123,12 +122,3 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
123
122
, ensures
124
123
, attributes
125
124
} = 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