Skip to content

Commit 47ee38f

Browse files
authored
Implement branching on predicates (#484)
* Add ListT * Add BranchT to Simplifier stack * Use BranchT on top of Simplifier stack * Add Test.ListT * Add Kore.Step.Simplification.Predicate.simplifyPartialBranch * Add Kore.Step.Simplification.PredicateSubstitution.simplifyBranch * Kore.Step.Simplification: Branching in PredicateSubstitutionSimplifier * Remove Kore.Step.Simplification.simplifyPartial * Rename Kore.Step.Simplification.PredicateSubstitution.simplifyBranch * Allow branching in Kore.Step.Substitution.normalize * Kore.Step.Substitution.normalizeSubstitutionAfterMerge: Give a meaningful error * Kore.Step.Simplification.Data: Collect branching documentation in one place * Kore.Step.Simplification.Data: Clarify capabilities of BranchT and Simplifier * Rename Kore.Step.Simplification.Predicate.simplify * ListT: Describe type more clearly * Predicate.simplifyPartial: Use straightforward pattern matching * Kore.Step.Substitution: Reduce duplication and redundant checks * ListT: Add examples * Kore.Step.Simplification.Data: Clarify comments around scatter and gather * Prune branches of Simplifier lifted into BranchT * normalizeWorker: Cleanup * Add instance MonadSMT BranchT
1 parent 1488993 commit 47ee38f

File tree

13 files changed

+701
-277
lines changed

13 files changed

+701
-277
lines changed

kore/src/Kore/Builtin/Map.hs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ import Kore.Step.Simplification.Data
9191
import Kore.Step.StepperAttributes
9292
( StepperAttributes )
9393
import qualified Kore.Step.StepperAttributes as StepperAttributes
94-
import Kore.Step.Substitution
95-
( normalize )
9694
import Kore.Unification.Error
9795
( UnificationOrSubstitutionError (..) )
9896
import Kore.Unparser
@@ -573,9 +571,9 @@ unifyEquals
573571
unifyEquals
574572
simplificationType
575573
tools
576-
substitutionSimplifier
577-
simplifier
578-
axiomIdToSimplifier
574+
_
575+
_
576+
_
579577
unifyEqualsChildren
580578
=
581579
unifyEquals0
@@ -717,14 +715,7 @@ unifyEquals
717715
-- Elements of map2 missing from map1
718716
remainder2 = Map.difference map2 map1
719717

720-
normalized <- Monad.Trans.lift $
721-
normalize
722-
tools
723-
substitutionSimplifier
724-
simplifier
725-
axiomIdToSimplifier
726-
result
727-
return (normalized, SimplificationProof)
718+
return (result, SimplificationProof)
728719
where
729720
Domain.InternalMap { builtinMapSort } = builtin1
730721
Domain.InternalMap { builtinMapChild = map1 } = builtin1

kore/src/Kore/Builtin/Set.hs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ import Kore.Step.Simplification.Data
9696
import Kore.Step.StepperAttributes
9797
( StepperAttributes )
9898
import qualified Kore.Step.StepperAttributes as StepperAttributes
99-
import Kore.Step.Substitution
100-
( normalize )
10199
import Kore.Unification.Error
102100
( UnificationOrSubstitutionError (..) )
103101
import Kore.Unparser
@@ -531,9 +529,9 @@ unifyEquals
531529
unifyEquals
532530
simplificationType
533531
tools
534-
substitutionSimplifier
535-
simplifier
536-
axiomIdToSimplifier
532+
_
533+
_
534+
_
537535
unifyEqualsChildren
538536
=
539537
unifyEquals0
@@ -635,14 +633,7 @@ unifyEquals
635633
-- Return the concrete set, but capture any predicates and
636634
-- substitutions from unifying the framing variable.
637635
asExpandedPattern builtinSetSort set1 <* remainder
638-
normalized <- Monad.Trans.lift $
639-
normalize
640-
tools
641-
substitutionSimplifier
642-
simplifier
643-
axiomIdToSimplifier
644-
result
645-
return (normalized, SimplificationProof)
636+
return (result, SimplificationProof)
646637

647638
| otherwise =
648639
return (ExpandedPattern.bottom, SimplificationProof)

0 commit comments

Comments
 (0)