Skip to content

Commit c0d7174

Browse files
andreiburdusagithub-actionsrv-jenkins
authored
Remove explainBottom (#2674)
* Add new log entry * Format with fourmolu * Generalize TestLog * Materialize Nix expressions * Rebuild * Don't discard result in TestLog * Use Text in WarnUnifyBottom, move TestLog, update tests (now failing) * Use the log entry, fix the tests * Format with fourmolu * Remove extra newline * Use mempty LogAction * Turn WarnUnifyBottom into DebugUnifyBottom * Temporarily turn on DebugUnifyBottom * Update Entry.helpDoc * Remove UnifierWithExplanation and the ReplOutput for unification failure * Cleanup * Use MonadUnify instead of MonadLog and Alternative Co-authored-by: github-actions <[email protected]> Co-authored-by: rv-jenkins <[email protected]>
1 parent 4f00fda commit c0d7174

File tree

24 files changed

+326
-241
lines changed

24 files changed

+326
-241
lines changed

kore/kore.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ library
360360
Kore.Log.WarnStuckClaimState
361361
Kore.Log.WarnSymbolSMTRepresentation
362362
Kore.Log.WarnTrivialClaim
363+
Kore.Log.DebugUnifyBottom
363364
Kore.ModelChecker.Bounded
364365
Kore.ModelChecker.Simplification
365366
Kore.ModelChecker.Step

kore/src/Kore/Builtin/AssociativeCommutative.hs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import Data.Reflection (
5555
Given,
5656
)
5757
import qualified Data.Reflection as Reflection
58+
import Data.Text (Text)
5859
import qualified GHC.Generics as GHC
5960
import qualified Generics.SOP as SOP
6061
import qualified Kore.Attribute.Pattern.Simplified as Attribute (
@@ -103,6 +104,9 @@ import Kore.Internal.TermLike (
103104
pattern InternalSet_,
104105
)
105106
import qualified Kore.Internal.TermLike as TermLike
107+
import Kore.Log.DebugUnifyBottom (
108+
debugUnifyBottomAndReturnBottom,
109+
)
106110
import Kore.Rewriting.RewritingVariable (
107111
RewritingVariableName,
108112
)
@@ -114,17 +118,13 @@ import Kore.Syntax.Variable
114118
import Kore.Unification.Unify (
115119
MonadUnify,
116120
)
117-
import qualified Kore.Unification.Unify as Monad.Unify
118121
import Kore.Unparser (
119122
unparse,
120123
unparseToString,
121124
)
122125
import qualified Kore.Unparser as Unparser
123126
import Logic
124127
import Prelude.Kore
125-
import Pretty (
126-
Doc,
127-
)
128128
import qualified Pretty
129129

130130
-- | Any @TermWrapper@ may be inside of an 'InternalAc'.
@@ -762,7 +762,7 @@ unifyEqualsNormalized
762762
case toNormalized patt of
763763
Bottom ->
764764
lift $
765-
Monad.Unify.explainAndReturnBottom
765+
debugUnifyBottomAndReturnBottom
766766
"Duplicated elements in normalization."
767767
first
768768
second
@@ -863,9 +863,9 @@ unifyEqualsNormalizedAc
863863
(\key count result -> replicate count key ++ result)
864864
[]
865865

866-
bottomWithExplanation :: Doc () -> unifier a
866+
bottomWithExplanation :: Text -> unifier a
867867
bottomWithExplanation explanation =
868-
Monad.Unify.explainAndReturnBottom explanation first second
868+
debugUnifyBottomAndReturnBottom explanation first second
869869

870870
unifyEqualsElementLists' =
871871
unifyEqualsElementLists
@@ -1040,7 +1040,7 @@ buildResultFromUnifiers ::
10401040
, InternalVariable variable
10411041
, TermWrapper normalized
10421042
) =>
1043-
(forall result. Doc () -> unifier result) ->
1043+
(forall result. Text -> unifier result) ->
10441044
[(Key, Value normalized (TermLike variable))] ->
10451045
[(TermLike variable, Value normalized (TermLike variable))] ->
10461046
[TermLike variable] ->
@@ -1131,7 +1131,7 @@ buildResultFromUnifiers
11311131

11321132
addAllDisjoint ::
11331133
(Monad unifier, Ord a, Hashable a) =>
1134-
(forall result. Doc () -> unifier result) ->
1134+
(forall result. Text -> unifier result) ->
11351135
HashMap a b ->
11361136
[(a, b)] ->
11371137
unifier (HashMap a b)
@@ -1241,7 +1241,7 @@ unifyEqualsElementLists
12411241
--
12421242
-- Since the two lists have different counts, their structures can
12431243
-- never unify.
1244-
Monad.Unify.explainAndReturnBottom
1244+
debugUnifyBottomAndReturnBottom
12451245
"Cannot unify ac structures with different sizes."
12461246
first
12471247
second
@@ -1294,7 +1294,7 @@ unifyEqualsElementLists
12941294
-- The second structure does not include an opaque term, so all the
12951295
-- elements in the first structure must be matched by elements in the second
12961296
-- one. Since we don't have enough, we return bottom.
1297-
Monad.Unify.explainAndReturnBottom
1297+
debugUnifyBottomAndReturnBottom
12981298
"Cannot unify ac structures with different sizes."
12991299
first
13001300
second
@@ -1312,7 +1312,7 @@ unifyEqualsElementLists
13121312

13131313
case elementListAsInternal tools (termLikeSort first) remainder2Terms of
13141314
Nothing ->
1315-
Monad.Unify.explainAndReturnBottom
1315+
debugUnifyBottomAndReturnBottom
13161316
"Duplicated element in unification results"
13171317
first
13181318
second
@@ -1348,7 +1348,7 @@ unifyOpaqueVariable ::
13481348
, InternalVariable variable
13491349
) =>
13501350
SmtMetadataTools Attribute.Symbol ->
1351-
(forall a. Doc () -> unifier a) ->
1351+
(forall a. Text -> unifier a) ->
13521352
-- | unifier function
13531353
(TermLike variable -> TermLike variable -> unifier (Pattern variable)) ->
13541354
TermLike.ElementVariable variable ->

kore/src/Kore/Builtin/Bool.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ import Kore.Internal.Pattern (
5656
import qualified Kore.Internal.Pattern as Pattern
5757
import Kore.Internal.Symbol
5858
import Kore.Internal.TermLike
59+
import Kore.Log.DebugUnifyBottom (
60+
debugUnifyBottomAndReturnBottom,
61+
)
5962
import Kore.Rewriting.RewritingVariable
6063
import Kore.Step.Simplification.Simplify (
6164
BuiltinAndAxiomSimplifier,
@@ -64,7 +67,6 @@ import Kore.Step.Simplification.Simplify (
6467
import Kore.Unification.Unify (
6568
MonadUnify,
6669
)
67-
import qualified Kore.Unification.Unify as Unify
6870
import Prelude.Kore
6971
import qualified Text.Megaparsec as Parsec
7072
import qualified Text.Megaparsec.Char as Parsec
@@ -204,7 +206,7 @@ unifyBool termLike1 termLike2 unifyData
204206
| bool1 == bool2 =
205207
return (Pattern.fromTermLike termLike1)
206208
| otherwise =
207-
Unify.explainAndReturnBottom
209+
debugUnifyBottomAndReturnBottom
208210
"different Bool domain values"
209211
termLike1
210212
termLike2

kore/src/Kore/Builtin/Endianness.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ import Kore.Internal.Pattern (
2828
import qualified Kore.Internal.Pattern as Pattern
2929
import Kore.Internal.Symbol
3030
import Kore.Internal.TermLike
31+
import Kore.Log.DebugUnifyBottom (
32+
debugUnifyBottomAndReturnBottom,
33+
)
3134
import Kore.Unification.Unify (
3235
MonadUnify,
33-
explainAndReturnBottom,
3436
)
3537
import qualified Kore.Verified as Verified
3638
import Prelude.Kore
@@ -85,7 +87,7 @@ unifyEquals termLike1@(Endianness_ end1) termLike2@(Endianness_ end2)
8587
| end1 == end2 = return (Pattern.fromTermLike termLike1)
8688
| otherwise =
8789
lift $
88-
explainAndReturnBottom
90+
debugUnifyBottomAndReturnBottom
8991
"Cannot unify distinct constructors."
9092
termLike1
9193
termLike2

kore/src/Kore/Builtin/Int.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ import Kore.Internal.Symbol (
125125
symbolHook,
126126
)
127127
import Kore.Internal.TermLike as TermLike
128+
import Kore.Log.DebugUnifyBottom (debugUnifyBottomAndReturnBottom)
128129
import Kore.Rewriting.RewritingVariable (
129130
RewritingVariableName,
130131
)
@@ -471,7 +472,8 @@ unifyInt term1 term2 unifyData =
471472
worker
472473
| on (==) internalIntValue int1 int2 =
473474
return $ Pattern.fromTermLike term1
474-
| otherwise = explainAndReturnBottom "distinct integers" term1 term2
475+
| otherwise =
476+
debugUnifyBottomAndReturnBottom "distinct integers" term1 term2
475477

476478
data UnifyIntEq = UnifyIntEq
477479
{ eqTerm :: !(EqTerm (TermLike RewritingVariableName))

kore/src/Kore/Builtin/List.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ import qualified Kore.Internal.TermLike as TermLike (
100100
isFunctionPattern,
101101
markSimplified,
102102
)
103+
import Kore.Log.DebugUnifyBottom (
104+
debugUnifyBottom,
105+
)
103106
import Kore.Rewriting.RewritingVariable (
104107
RewritingVariableName,
105108
)
@@ -110,7 +113,6 @@ import Kore.Syntax.Sentence (
110113
import Kore.Unification.Unify (
111114
MonadUnify,
112115
)
113-
import qualified Kore.Unification.Unify as Monad.Unify
114116
import Prelude.Kore
115117

116118
{- | Verify that the sort is hooked to the builtin @List@ sort.
@@ -549,7 +551,7 @@ unifyEquals
549551
where
550552
prefixLength = Seq.length list1 - Seq.length suffix2
551553
bottomWithExplanation = do
552-
Monad.Unify.explainBottom
554+
debugUnifyBottom
553555
"Cannot unify lists of different length."
554556
first
555557
second

kore/src/Kore/Builtin/Map.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ import Kore.Internal.TermLike (
9595
pattern InternalMap_,
9696
)
9797
import qualified Kore.Internal.TermLike as TermLike
98+
import Kore.Log.DebugUnifyBottom (
99+
debugUnifyBottomAndReturnBottom,
100+
)
98101
import Kore.Rewriting.RewritingVariable (
99102
RewritingVariableName,
100103
)
@@ -573,7 +576,7 @@ unifyEquals unifyEqualsChildren first second = do
573576
return (Ac.asInternal tools sort1 normalized)
574577
Ac.Bottom ->
575578
lift $
576-
Monad.Unify.explainAndReturnBottom
579+
debugUnifyBottomAndReturnBottom
577580
"Duplicated elements in normalization."
578581
first
579582
second

kore/src/Kore/Builtin/Set.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ import Kore.Internal.TermLike (
9595
pattern InternalSet_,
9696
)
9797
import qualified Kore.Internal.TermLike as TermLike
98+
import Kore.Log.DebugUnifyBottom (
99+
debugUnifyBottomAndReturnBottom,
100+
)
98101
import Kore.Rewriting.RewritingVariable (
99102
RewritingVariableName,
100103
)
@@ -585,7 +588,7 @@ unifyEquals
585588
return (Ac.asInternal tools sort1 normalized)
586589
Ac.Bottom ->
587590
lift $
588-
Monad.Unify.explainAndReturnBottom
591+
debugUnifyBottomAndReturnBottom
589592
"Duplicated elements in normalization."
590593
first
591594
second

kore/src/Kore/Builtin/Signedness.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ import Kore.Internal.Pattern (
2828
import qualified Kore.Internal.Pattern as Pattern
2929
import Kore.Internal.Symbol
3030
import Kore.Internal.TermLike
31+
import Kore.Log.DebugUnifyBottom (
32+
debugUnifyBottomAndReturnBottom,
33+
)
3134
import Kore.Unification.Unify (
3235
MonadUnify,
33-
explainAndReturnBottom,
3436
)
3537
import qualified Kore.Verified as Verified
3638
import Prelude.Kore
@@ -85,7 +87,7 @@ unifyEquals termLike1@(Signedness_ sign1) termLike2@(Signedness_ sign2)
8587
| sign1 == sign2 = return (Pattern.fromTermLike termLike1)
8688
| otherwise =
8789
lift $
88-
explainAndReturnBottom
90+
debugUnifyBottomAndReturnBottom
8991
"Cannot unify distinct constructors."
9092
termLike1
9193
termLike2

kore/src/Kore/Builtin/String.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ import Kore.Internal.Symbol (
8686
symbolHook,
8787
)
8888
import Kore.Internal.TermLike as TermLike
89+
import Kore.Log.DebugUnifyBottom (
90+
debugUnifyBottomAndReturnBottom,
91+
)
8992
import Kore.Log.WarnNotImplemented
9093
import Kore.Rewriting.RewritingVariable (
9194
RewritingVariableName,
@@ -514,7 +517,8 @@ unifyString term1 term2 unifyData =
514517
worker
515518
| on (==) internalStringValue string1 string2 =
516519
return $ Pattern.fromTermLike term1
517-
| otherwise = explainAndReturnBottom "distinct strings" term1 term2
520+
| otherwise =
521+
debugUnifyBottomAndReturnBottom "distinct strings" term1 term2
518522
UnifyString{string1, string2} = unifyData
519523

520524
{- | Unification of the @STRING.eq@ symbol

0 commit comments

Comments
 (0)