Skip to content

Stop simplifying the left-hand side of equations #2392

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 40 commits into from
Mar 10, 2021
Merged
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
65cff08
rewriting simplifyEquation
emarzion Feb 5, 2021
efbdade
observeT -> lift
emarzion Feb 5, 2021
1c6663d
switching order of LogicT and ExceptT
emarzion Feb 8, 2021
b296540
Merge branch 'master' into no-simplify-lhs
emarzion Feb 8, 2021
77b99da
restoring pointfree style
emarzion Feb 8, 2021
571268d
updating regression tests
emarzion Feb 9, 2021
dc2e22b
updating regressions + goldens
emarzion Feb 10, 2021
2a67a33
wasm regression tests
emarzion Feb 11, 2021
b395875
fixing wrc20 test
emarzion Feb 12, 2021
16f6342
Merge branch 'master' into no-simplify-lhs
emarzion Feb 17, 2021
cd162fd
test
emarzion Feb 19, 2021
389976c
adding simplification attribute
emarzion Feb 19, 2021
4d9ef61
adding simplification attribute
emarzion Feb 19, 2021
e8eb5df
adding simplification attribute
emarzion Feb 19, 2021
be0eaac
trigger build
emarzion Feb 19, 2021
170e019
adding simplification attribute
emarzion Feb 19, 2021
f7df8d2
adding simplification attribute
emarzion Feb 19, 2021
11848c8
trigger build
emarzion Feb 19, 2021
393116f
adding simplification attribute
emarzion Feb 19, 2021
2ba80e7
adding simplification attribute
emarzion Feb 19, 2021
90ca692
adding simplification attribute
emarzion Feb 19, 2021
77231e4
adding simplification attribute
emarzion Feb 19, 2021
dd3e4fe
removing test-issue-2095
emarzion Feb 19, 2021
99908ee
Revert "fixing wrc20 test"
emarzion Feb 19, 2021
46aa6c7
Revert "wasm regression tests"
emarzion Feb 19, 2021
fcc73bf
Revert "updating regressions + goldens"
emarzion Feb 19, 2021
3b44beb
Revert "updating regression tests"
emarzion Feb 19, 2021
e72afce
Revert "test"
emarzion Feb 19, 2021
ede6d19
Merge branch 'master' into no-simplify-lhs
emarzion Feb 19, 2021
b2f7eb5
Update Simplification.hs
emarzion Feb 19, 2021
2af0464
fixing merge conflict
emarzion Mar 8, 2021
bb2cd38
import fix
emarzion Mar 8, 2021
ddff2b5
typo
emarzion Mar 8, 2021
9e0588c
Format with stylish-haskell
emarzion Mar 8, 2021
8761783
fixing merge
emarzion Mar 8, 2021
b37f401
fix import
emarzion Mar 8, 2021
6119b75
returning Equation pattern match check
emarzion Mar 9, 2021
1cb4fc5
Merge branch 'master' into no-simplify-lhs
emarzion Mar 9, 2021
1c682b9
Update kore/src/Kore/Equation/Simplification.hs
emarzion Mar 10, 2021
7a12cbf
Merge branch 'master' into no-simplify-lhs
emarzion Mar 10, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 13 additions & 33 deletions kore/src/Kore/Equation/Simplification.hs
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,19 @@ import Data.Map.Strict
import Kore.Equation.Equation
import Kore.Internal.Conditional
( Conditional (..)
, fromPredicate
)
import Kore.Internal.MultiAnd
( MultiAnd
)
import qualified Kore.Internal.MultiAnd as MultiAnd
import Kore.Internal.OrPattern
( OrPattern
)
import Kore.Internal.Pattern
( Pattern
)
import qualified Kore.Internal.Pattern as Pattern
import qualified Kore.Internal.Predicate as Predicate
import qualified Kore.Internal.SideCondition as SideCondition
import qualified Kore.Internal.Substitution as Substitution
import qualified Kore.Internal.TermLike as TermLike
import Kore.Rewriting.RewritingVariable
( RewritingVariableName
)
import qualified Kore.Step.Simplification.Pattern as Pattern
import Kore.Step.Simplification.Simplify
( MonadSimplify
)
Expand Down Expand Up @@ -82,16 +76,14 @@ simplifyEquation
-> simplifier (MultiAnd (Equation RewritingVariableName))
simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
do
simplifiedResults <-
simplifyPattern leftWithArgument
Monad.when
(any (not . isTop . predicate) simplifiedResults)
(throwE equation)
simplified <- lift $ Logic.scatter simplifiedResults
let Conditional { term, predicate, substitution } = simplified
Monad.unless (isTop predicate) (throwE equation)
simplifiedCond <-
Simplifier.simplifyCondition
SideCondition.top
(fromPredicate argument')
let Conditional { substitution, predicate } = simplifiedCond
lift $ Monad.unless (isTop predicate) (throwE equation)
let subst = Substitution.toMap substitution
left' = TermLike.substitute subst term
left' = TermLike.substitute subst left
requires' = Predicate.substitute subst requires
antiLeft' = Predicate.substitute subst <$> antiLeft
right' = TermLike.substitute subst right
Expand All @@ -105,17 +97,14 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
, ensures = Predicate.forgetSimplified ensures'
, attributes = attributes
}
& returnOriginalIfAborted
& Logic.observeAllT
& returnOriginalIfAborted
& fmap MultiAnd.make
where
leftWithArgument =
maybe
(Pattern.fromTermLike left)
(Pattern.fromTermAndPredicate left)
argument
argument' =
fromMaybe Predicate.makeTruePredicate argument
returnOriginalIfAborted =
fmap (either id id) . runExceptT
fmap (either (: []) id) . runExceptT
Equation
{ requires
, argument
Expand All @@ -125,12 +114,3 @@ simplifyEquation equation@(Equation _ _ _ _ _ _ _) =
, ensures
, attributes
} = equation

-- | Simplify a 'Pattern' using only matching logic rules.
simplifyPattern
:: MonadSimplify simplifier
=> Pattern RewritingVariableName
-> simplifier (OrPattern RewritingVariableName)
simplifyPattern =
Simplifier.localSimplifierAxioms (const mempty)
. Pattern.simplify