@@ -7,6 +7,7 @@ License : NCSA
7
7
module Kore.Rewriting.RewritingVariable
8
8
( RewritingVariableName
9
9
, RewritingVariable
10
+ , isEquationVariable
10
11
, isConfigVariable
11
12
, isRuleVariable
12
13
, isSomeConfigVariable
@@ -15,6 +16,7 @@ module Kore.Rewriting.RewritingVariable
15
16
, isSomeRuleVariableName
16
17
, isElementRuleVariable
17
18
, isElementRuleVariableName
19
+ , mkEquationVariable
18
20
, mkConfigVariable
19
21
, mkRuleVariable
20
22
, mkElementConfigVariable
@@ -59,7 +61,8 @@ import Kore.Variables.Fresh
59
61
{- | The name of a 'RewritingVariable'.
60
62
-}
61
63
data RewritingVariableName
62
- = ConfigVariableName ! VariableName
64
+ = EquationVariableName ! VariableName
65
+ | ConfigVariableName ! VariableName
63
66
| RuleVariableName ! VariableName
64
67
deriving (Eq , Ord , Show )
65
68
deriving (GHC.Generic )
@@ -68,24 +71,32 @@ data RewritingVariableName
68
71
deriving anyclass (Debug , Diff )
69
72
70
73
instance SubstitutionOrd RewritingVariableName where
74
+ compareSubstitution (EquationVariableName _) (RuleVariableName _) = LT
75
+ compareSubstitution (EquationVariableName _) (ConfigVariableName _) = LT
76
+ compareSubstitution (RuleVariableName _) (EquationVariableName _) = GT
71
77
compareSubstitution (RuleVariableName _) (ConfigVariableName _) = LT
78
+ compareSubstitution (ConfigVariableName _) (EquationVariableName _) = GT
72
79
compareSubstitution (ConfigVariableName _) (RuleVariableName _) = GT
73
80
compareSubstitution variable1 variable2 =
74
81
on compareSubstitution toVariableName variable1 variable2
75
82
76
83
instance FreshPartialOrd RewritingVariableName where
77
84
minBoundName =
78
85
\ case
79
- RuleVariableName var -> RuleVariableName (minBoundName var)
80
- ConfigVariableName var -> ConfigVariableName (minBoundName var)
86
+ EquationVariableName var -> EquationVariableName (minBoundName var)
87
+ RuleVariableName var -> RuleVariableName (minBoundName var)
88
+ ConfigVariableName var -> ConfigVariableName (minBoundName var)
81
89
{-# INLINE minBoundName #-}
82
90
83
91
maxBoundName =
84
92
\ case
85
- RuleVariableName var -> RuleVariableName (maxBoundName var)
86
- ConfigVariableName var -> ConfigVariableName (maxBoundName var)
93
+ EquationVariableName var -> EquationVariableName (maxBoundName var)
94
+ RuleVariableName var -> RuleVariableName (maxBoundName var)
95
+ ConfigVariableName var -> ConfigVariableName (maxBoundName var)
87
96
{-# INLINE maxBoundName #-}
88
97
98
+ nextName (EquationVariableName name1) (EquationVariableName name2) =
99
+ EquationVariableName <$> nextName name1 name2
89
100
nextName (RuleVariableName name1) (RuleVariableName name2) =
90
101
RuleVariableName <$> nextName name1 name2
91
102
nextName (ConfigVariableName name1) (ConfigVariableName name2) =
@@ -94,13 +105,16 @@ instance FreshPartialOrd RewritingVariableName where
94
105
{-# INLINE nextName #-}
95
106
96
107
instance Unparse RewritingVariableName where
108
+ unparse (EquationVariableName variable) = " Equation" <> unparse variable
97
109
unparse (ConfigVariableName variable) = " Config" <> unparse variable
98
110
unparse (RuleVariableName variable) = " Rule" <> unparse variable
99
111
112
+ unparse2 (EquationVariableName variable) = " Equation" <> unparse2 variable
100
113
unparse2 (ConfigVariableName variable) = " Config" <> unparse2 variable
101
114
unparse2 (RuleVariableName variable) = " Rule" <> unparse2 variable
102
115
103
116
instance From RewritingVariableName VariableName where
117
+ from (EquationVariableName variable) = variable
104
118
from (ConfigVariableName variable) = variable
105
119
from (RuleVariableName variable) = variable
106
120
@@ -168,12 +182,19 @@ getRewritingVariable
168
182
:: AdjSomeVariableName (RewritingVariableName -> VariableName )
169
183
getRewritingVariable = pure (from @ RewritingVariableName @ VariableName )
170
184
185
+ mkEquationVariable :: VariableName -> RewritingVariableName
186
+ mkEquationVariable = EquationVariableName
187
+
171
188
mkConfigVariable :: VariableName -> RewritingVariableName
172
189
mkConfigVariable = ConfigVariableName
173
190
174
191
mkRuleVariable :: VariableName -> RewritingVariableName
175
192
mkRuleVariable = RuleVariableName
176
193
194
+ isEquationVariable :: RewritingVariableName -> Bool
195
+ isEquationVariable (EquationVariableName _) = True
196
+ isEquationVariable _ = False
197
+
177
198
isConfigVariable :: RewritingVariableName -> Bool
178
199
isConfigVariable (ConfigVariableName _) = True
179
200
isConfigVariable _ = False
0 commit comments