From c90f7a26da03b9257af4e7c4a83112c31004335d Mon Sep 17 00:00:00 2001 From: Jost Berthold Date: Wed, 6 Dec 2023 21:59:48 +1100 Subject: [PATCH] 391 more smt solver functionality (#396) Fixes #391 Fixes #390 - Comments inserted into transcript to explain what things are - `ensures` clauses are now checked with the SMT solver (changes integration test expectations) - a test using `==K` (currently fails on `booster-dev`, `kore-rpc` appears to use internal `==K` logic instead of `z3` to solve it) - supplying SMT options to `kore-rpc` via the `SMTOption` type in the new code - separate kill switch `--no-booster-smt` to disable the SMT solver only in booster code but keep the one in `kore-rpc` - ~SMT support for equation evaluation~ reverted --------- Co-authored-by: github-actions --- dev-tools/kore-rpc-dev/Server.hs | 93 +- library/Booster/CLOptions.hs | 58 +- library/Booster/JsonRpc.hs | 10 +- library/Booster/Pattern/ApplyEquations.hs | 30 +- library/Booster/Pattern/Rewrite.hs | 19 +- library/Booster/SMT/Base.hs | 16 +- library/Booster/SMT/Interface.hs | 48 +- library/Booster/SMT/LowLevelCodec.hs | 8 +- library/Booster/SMT/Runner.hs | 26 +- library/Booster/SMT/Translate.hs | 33 +- scripts/integration-tests.sh | 2 +- .../resources/equalK-conditions.k | 26 + .../resources/equalK-conditions.kore | 2128 +++++++++++++++++ .../response-infeasible-branching.booster-dev | 361 +-- .../response-a.json} | 31 +- .../test-equalK-conditions/response-c.json | 81 + .../test-equalK-conditions/state-a.execute | 1 + .../test-equalK-conditions/state-a.json | 71 + .../test-equalK-conditions/state-c.execute | 1 + .../test-equalK-conditions/state-c.json | 71 + ...response-concrete-substitution.booster-dev | 168 ++ .../response-concrete-substitution.json | 2 +- ...response-symbolic-substitution.booster-dev | 168 ++ .../response-symbolic-substitution.json | 2 +- .../response-vacuous-at-branch.json | 173 +- .../response-vacuous-var-at-branch.json | 245 +- tools/booster/Server.hs | 88 +- .../Test/Booster/Pattern/ApplyEquations.hs | 13 +- unit-tests/Test/Booster/SMT/LowLevel.hs | 28 +- 29 files changed, 3212 insertions(+), 789 deletions(-) create mode 100644 test/rpc-integration/resources/equalK-conditions.k create mode 100644 test/rpc-integration/resources/equalK-conditions.kore rename test/rpc-integration/{test-vacuous/response-vacuous-at-branch.kore-rpc-dev => test-equalK-conditions/response-a.json} (72%) create mode 100644 test/rpc-integration/test-equalK-conditions/response-c.json create mode 120000 test/rpc-integration/test-equalK-conditions/state-a.execute create mode 100644 test/rpc-integration/test-equalK-conditions/state-a.json create mode 120000 test/rpc-integration/test-equalK-conditions/state-c.execute create mode 100644 test/rpc-integration/test-equalK-conditions/state-c.json create mode 100644 test/rpc-integration/test-substitutions/response-concrete-substitution.booster-dev create mode 100644 test/rpc-integration/test-substitutions/response-symbolic-substitution.booster-dev diff --git a/dev-tools/kore-rpc-dev/Server.hs b/dev-tools/kore-rpc-dev/Server.hs index 4ee44b84d..e11f0a0c6 100644 --- a/dev-tools/kore-rpc-dev/Server.hs +++ b/dev-tools/kore-rpc-dev/Server.hs @@ -28,9 +28,11 @@ import Data.Conduit.Network (serverSettings) import Data.IORef (writeIORef) import Data.InternedText (globalInternedTextCache) import Data.Map qualified as Map -import Data.Maybe (fromMaybe) +import Data.Maybe (fromMaybe, mapMaybe) +import Data.Set qualified as Set import Data.Text (Text) import Data.Text qualified as Text +import Data.Text.Encoding qualified as Text (decodeUtf8) import Network.JSONRPC import Options.Applicative import System.Clock ( @@ -41,7 +43,10 @@ import System.Exit import System.IO (hPutStrLn, stderr) import Booster.CLOptions +import Booster.SMT.Base qualified as SMT (SExpr (..), SMTId (..)) +import Booster.SMT.Interface (SMTOptions (..)) import Booster.Trace +import Data.Limit (Limit (..)) import GlobalMain qualified import Kore.Attribute.Symbol (StepperAttributes) import Kore.BugReport (BugReportOption (..), withBugReport) @@ -64,10 +69,11 @@ import Kore.Log ( import Kore.Log qualified import Kore.Log qualified as Log import Kore.Log.DebugSolver qualified as Log +import Kore.Log.Registry qualified as Log import Kore.Rewrite.SMT.Lemma (declareSMTLemmas) import Kore.Syntax.Definition (ModuleName (ModuleName), SentenceAxiom) -import Options.SMT (KoreSolverOptions (..), parseKoreSolverOptions) -import SMT qualified +import Options.SMT as KoreSMT (KoreSolverOptions (..), Solver (..)) +import SMT qualified as KoreSMT data KoreServer = KoreServer { serverState :: MVar.MVar Kore.ServerState @@ -76,7 +82,7 @@ data KoreServer = KoreServer forall a. SmtMetadataTools StepperAttributes -> [SentenceAxiom (TermLike VariableName)] -> - SMT.SMT a -> + KoreSMT.SMT a -> IO a , loggerEnv :: Kore.Log.LoggerEnv IO } @@ -129,15 +135,17 @@ main = do clOPts@CLOptions { port , logLevels + , smtOptions , eventlogEnabledUserEvents } - , koreSolverOptions - , debugSolverOptions } = options (logLevel, customLevels) = adjustLogLevels logLevels levelFilter :: Logger.LogSource -> LogLevel -> Bool levelFilter _source lvl = lvl `elem` customLevels || lvl >= logLevel && lvl <= LevelError + koreLogExtraLevels = + Set.unions $ mapMaybe (`Map.lookup` koreExtraLogs) customLevels + koreSolverOptions = translateSMTOpts smtOptions Logger.runStderrLoggingT $ Logger.filterLogger levelFilter $ do liftIO $ forM_ eventlogEnabledUserEvents $ \t -> do @@ -150,8 +158,10 @@ main = do koreLogOptions = (defaultKoreLogOptions (ExeName "") startTime) { Log.logLevel = coLogLevel + , Log.logEntries = koreLogExtraLevels , Log.timestampsSwitch = TimestampsDisable - , Log.debugSolverOptions = debugSolverOptions + , Log.debugSolverOptions = + Log.DebugSolverOptions . fmap (<> ".kore") $ smtOptions >>= (.transcript) , Log.logType = LogSomeAction $ LogAction $ \txt -> liftIO $ monadLogger defaultLoc "kore" logLevel $ toLogStr txt } srvSettings = serverSettings port "*" @@ -193,10 +203,18 @@ toSeverity LevelWarn = Just Log.Warning toSeverity LevelError = Just Log.Error toSeverity LevelOther{} = Nothing -data CLProxyOptions = CLProxyOptions +koreExtraLogs :: Map.Map LogLevel Log.EntryTypes +koreExtraLogs = + Map.map (Set.fromList . mapMaybe (`Map.lookup` Log.textToType Log.registry)) $ + Map.fromList + [ (LevelOther "SimplifyKore", ["DebugAttemptEquation", "DebugApplyEquation"]) + , (LevelOther "RewriteKore", ["DebugAttemptedRewriteRules", "DebugAppliedRewriteRules"]) + , (LevelOther "SimplifySuccess", ["DebugApplyEquation"]) + , (LevelOther "RewriteSuccess", ["DebugAppliedRewriteRules"]) + ] + +newtype CLProxyOptions = CLProxyOptions { clOptions :: CLOptions - , koreSolverOptions :: !KoreSolverOptions - , debugSolverOptions :: !Log.DebugSolverOptions } parserInfoModifiers :: InfoMod options @@ -208,10 +226,34 @@ clProxyOptionsParser :: Parser CLProxyOptions clProxyOptionsParser = CLProxyOptions <$> clOptionsParser - <*> parseKoreSolverOptions - <*> Log.parseDebugSolverOptions -mkKoreServer :: Log.LoggerEnv IO -> CLOptions -> KoreSolverOptions -> IO KoreServer +translateSMTOpts :: Maybe SMTOptions -> KoreSMT.KoreSolverOptions +translateSMTOpts = \case + Just smtOpts -> + defaultKoreSolverOptions + { timeOut = KoreSMT.TimeOut . Limit . fromIntegral $ smtOpts.timeout + , retryLimit = + KoreSMT.RetryLimit . maybe Unlimited (Limit . fromIntegral) $ smtOpts.retryLimit + , tactic = fmap translateSExpr smtOpts.tactic + } + Nothing -> + defaultKoreSolverOptions{solver = KoreSMT.None} + where + defaultKoreSolverOptions = + KoreSMT.KoreSolverOptions + { timeOut = KoreSMT.TimeOut Unlimited + , retryLimit = KoreSMT.RetryLimit Unlimited + , rLimit = KoreSMT.RLimit Unlimited + , resetInterval = KoreSMT.ResetInterval 100 + , prelude = KoreSMT.Prelude Nothing + , solver = KoreSMT.Z3 + , tactic = Nothing + } + translateSExpr :: SMT.SExpr -> KoreSMT.SExpr + translateSExpr (SMT.Atom (SMT.SMTId x)) = KoreSMT.Atom (Text.decodeUtf8 x) + translateSExpr (SMT.List ss) = KoreSMT.List $ map translateSExpr ss + +mkKoreServer :: Log.LoggerEnv IO -> CLOptions -> KoreSMT.KoreSolverOptions -> IO KoreServer mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainModuleName} koreSolverOptions = flip Log.runLoggerT logAction $ do sd@GlobalMain.SerializedDefinition{internedTextCache} <- @@ -238,13 +280,14 @@ mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainMo , loggerEnv } where - KoreSolverOptions{timeOut, rLimit, resetInterval, prelude} = koreSolverOptions + KoreSMT.KoreSolverOptions{timeOut, retryLimit, tactic} = koreSolverOptions + smtConfig :: KoreSMT.Config smtConfig = - SMT.defaultConfig - { SMT.timeOut = timeOut - , SMT.rLimit = rLimit - , SMT.resetInterval = resetInterval - , SMT.prelude = prelude + KoreSMT.defaultConfig + { KoreSMT.executable = KoreSMT.defaultConfig.executable -- hack to shut up GHC field warning + , KoreSMT.timeOut = timeOut + , KoreSMT.retryLimit = retryLimit + , KoreSMT.tactic = tactic } -- SMT solver with user declared lemmas @@ -252,17 +295,17 @@ mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainMo forall a. SmtMetadataTools StepperAttributes -> [SentenceAxiom (TermLike VariableName)] -> - SMT.SMT a -> + KoreSMT.SMT a -> IO a runSMT metadataTools lemmas m = flip Log.runLoggerT logAction $ - bracket (SMT.newSolver smtConfig) SMT.stopSolver $ \refSolverHandle -> do - let userInit = SMT.runWithSolver $ declareSMTLemmas metadataTools lemmas + bracket (KoreSMT.newSolver smtConfig) KoreSMT.stopSolver $ \refSolverHandle -> do + let userInit = KoreSMT.runWithSolver $ declareSMTLemmas metadataTools lemmas solverSetup = - SMT.SolverSetup + KoreSMT.SolverSetup { userInit , refSolverHandle , config = smtConfig } - SMT.initSolver solverSetup - SMT.runWithSolver m solverSetup + KoreSMT.initSolver solverSetup + KoreSMT.runWithSolver m solverSetup diff --git a/library/Booster/CLOptions.hs b/library/Booster/CLOptions.hs index fb46fcaec..bf47a7447 100644 --- a/library/Booster/CLOptions.hs +++ b/library/Booster/CLOptions.hs @@ -10,6 +10,7 @@ module Booster.CLOptions ( import Booster.Trace (CustomUserEventType) import Booster.VersionInfo (VersionInfo (..), versionInfo) import Control.Monad.Logger (LogLevel (..)) +import Data.ByteString.Char8 qualified as BS (pack) import Data.List (intercalate, partition) import Data.Maybe (fromMaybe) import Data.Text (Text, pack) @@ -17,7 +18,8 @@ import Options.Applicative import Text.Casing (fromHumps, fromKebab, toKebab, toPascal) import Text.Read (readMaybe) -import Booster.SMT.Interface (SMTOptions (..)) +import Booster.SMT.Interface (SMTOptions (..), defaultSMTOptions) +import Booster.SMT.LowLevelCodec qualified as SMT (parseSExpr) data CLOptions = CLOptions { definitionFile :: FilePath @@ -135,25 +137,67 @@ adjustLogLevels ls = (standardLevel, customLevels) (stds, customLevels) = partition (<= LevelError) ls standardLevel = if null stds then LevelInfo else minimum stds --- FIXME SMTOptions should later replace Options.SMT from kore-rpc, --- with fully-compatible option names +-- SMTOptions aligned with Options.SMT from kore-rpc, with +-- fully-compatible option names in the parser parseSMTOptions :: Parser (Maybe SMTOptions) parseSMTOptions = flag - (Just $ SMTOptions Nothing) + (Just defaultSMTOptions) Nothing ( long "no-smt" <> help "Disable SMT solver sub-process" ) - <|> ( Just . SMTOptions + <|> fmap + Just + ( SMTOptions <$> optional ( strOption - ( metavar "SMT_TRANSCRIPT_FILE" - <> long "smt-transcript" + ( metavar "PATH" + <> long "solver-transcript" <> help "Destination file for SMT transcript (should not exist prior)" ) ) + <*> option + nonnegativeInt + ( metavar "TIMEOUT" + <> long "smt-timeout" + <> help "Timeout for SMT requests, in milliseconds (0 for Nothing)." + <> value smtDefaults.timeout + <> showDefault + ) + <*> optional + ( option + nonnegativeInt + ( metavar "COUNT" + <> long "smt-retry-limit" + <> help "Optional Retry-limit for SMT requests - with scaling timeout." + <> value (fromMaybe 0 smtDefaults.retryLimit) + <> showDefault + ) + ) + <*> optional + ( option + readTactic + ( metavar "TACTIC" + <> long "smt-tactic" + <> help + "Optional Z3 tactic to use when checking satisfiability. \ + \Example: '(check-sat-using smt)' (i.e., plain 'check-sat')" + ) + ) ) + where + smtDefaults = defaultSMTOptions + + nonnegativeInt :: ReadM Int + nonnegativeInt = + auto >>= \case + i + | i < 0 -> readerError "must be a non-negative integer." + | otherwise -> pure i + + readTactic = + either (readerError . ("Invalid s-expression. " <>)) pure . SMT.parseSExpr . BS.pack =<< str versionInfoParser :: Parser (a -> a) versionInfoParser = diff --git a/library/Booster/JsonRpc.hs b/library/Booster/JsonRpc.hs index ebd9f61c1..137a32e1e 100644 --- a/library/Booster/JsonRpc.hs +++ b/library/Booster/JsonRpc.hs @@ -152,7 +152,7 @@ respond stateVar = Log.logInfo $ "Added a new module. Now in scope: " <> Text.intercalate ", " (Map.keys newDefinitions) pure $ Right $ RpcTypes.AddModule $ RpcTypes.AddModuleResult $ getId newModule.name - RpcTypes.Simplify req -> withContext req._module $ \(def, mLlvmLibrary, _mSMTOptions) -> do + RpcTypes.Simplify req -> withContext req._module $ \(def, mLlvmLibrary, mSMTOptions) -> do start <- liftIO $ getTime Monotonic let internalised = runExcept $ internaliseTermOrPredicate DisallowAlias CheckSubsorts Nothing def req.state.term @@ -180,6 +180,9 @@ respond stateVar = [ req.logSuccessfulSimplifications , req.logFailedSimplifications ] + + solver <- traverse (SMT.initSolver def) mSMTOptions + result <- case internalised of Left patternErrors -> do Log.logError $ "Error internalising cterm: " <> Text.pack (show patternErrors) @@ -187,7 +190,7 @@ respond stateVar = -- term and predicate (pattern) Right (TermAndPredicateAndSubstitution pat substitution) -> do Log.logInfoNS "booster" "Simplifying a pattern" - ApplyEquations.evaluatePattern doTracing def mLlvmLibrary mempty pat >>= \case + ApplyEquations.evaluatePattern doTracing def mLlvmLibrary solver mempty pat >>= \case (Right newPattern, patternTraces, _) -> do let (term, mbPredicate, mbSubstitution) = externalisePattern newPattern substitution tSort = externaliseSort (sortOfPattern newPattern) @@ -210,7 +213,7 @@ respond stateVar = (addHeader $ Syntax.KJTop (fromMaybe (error "not a predicate") $ sortOfJson req.state.term), []) | otherwise -> do Log.logInfoNS "booster" "Simplifying all predicates" - ApplyEquations.simplifyConstraints doTracing def mLlvmLibrary mempty (Set.toList predicates) >>= \case + ApplyEquations.simplifyConstraints doTracing def mLlvmLibrary solver mempty (Set.toList predicates) >>= \case (Right newPreds, traces, _) -> do let predicateSort = fromMaybe (error "not a predicate") $ @@ -223,6 +226,7 @@ respond stateVar = pure $ Right (addHeader $ Syntax.KJAnd predicateSort result, traces) (Left something, _traces, _) -> pure . Left . RpcError.backendError RpcError.Aborted $ show something -- FIXME + whenJust solver SMT.closeSolver stop <- liftIO $ getTime Monotonic let duration = diff --git a/library/Booster/Pattern/ApplyEquations.hs b/library/Booster/Pattern/ApplyEquations.hs index 7175ccb5e..8e93ef457 100644 --- a/library/Booster/Pattern/ApplyEquations.hs +++ b/library/Booster/Pattern/ApplyEquations.hs @@ -31,6 +31,7 @@ import Control.Monad.Trans.Except import Control.Monad.Trans.Reader (ReaderT (..), ask) import Control.Monad.Trans.State import Data.Bifunctor (second) +import Data.Coerce (coerce) import Data.Foldable (toList, traverse_) import Data.Functor.Foldable import Data.List (elemIndex) @@ -54,7 +55,7 @@ import Booster.Pattern.Index import Booster.Pattern.Match import Booster.Pattern.Util import Booster.Prettyprinter (renderDefault) -import Data.Coerce (coerce) +import Booster.SMT.Interface qualified as SMT newtype EquationT io a = EquationT (ReaderT EquationConfig (ExceptT EquationFailure (StateT EquationState io)) a) @@ -75,6 +76,7 @@ data EquationFailure data EquationConfig = EquationConfig { definition :: KoreDefinition , llvmApi :: Maybe LLVM.API + , smtSolver :: Maybe SMT.SMTContext , doTracing :: Bool } @@ -211,14 +213,15 @@ runEquationT :: Bool -> KoreDefinition -> Maybe LLVM.API -> + Maybe SMT.SMTContext -> SimplifierCache -> EquationT io a -> io (Either EquationFailure a, [EquationTrace], SimplifierCache) -runEquationT doTracing definition llvmApi sCache (EquationT m) = do +runEquationT doTracing definition llvmApi smtSolver sCache (EquationT m) = do (res, endState) <- flip runStateT (startState sCache) $ runExceptT $ - runReaderT m EquationConfig{definition, llvmApi, doTracing} + runReaderT m EquationConfig{definition, llvmApi, smtSolver, doTracing} pure (res, toList endState.trace, endState.cache) iterateEquations :: @@ -257,10 +260,11 @@ evaluateTerm :: Direction -> KoreDefinition -> Maybe LLVM.API -> + Maybe SMT.SMTContext -> Term -> io (Either EquationFailure Term, [EquationTrace], SimplifierCache) -evaluateTerm doTracing direction def llvmApi = - runEquationT doTracing def llvmApi mempty +evaluateTerm doTracing direction def llvmApi smtSolver = + runEquationT doTracing def llvmApi smtSolver mempty . evaluateTerm' direction -- version for internal nested evaluation @@ -279,11 +283,12 @@ evaluatePattern :: Bool -> KoreDefinition -> Maybe LLVM.API -> + Maybe SMT.SMTContext -> SimplifierCache -> Pattern -> io (Either EquationFailure Pattern, [EquationTrace], SimplifierCache) -evaluatePattern doTracing def mLlvmLibrary cache = - runEquationT doTracing def mLlvmLibrary cache . evaluatePattern' +evaluatePattern doTracing def mLlvmLibrary smtSolver cache = + runEquationT doTracing def mLlvmLibrary smtSolver cache . evaluatePattern' -- version for internal nested evaluation evaluatePattern' :: @@ -670,22 +675,25 @@ simplifyConstraint :: Bool -> KoreDefinition -> Maybe LLVM.API -> + Maybe SMT.SMTContext -> SimplifierCache -> Predicate -> io (Either EquationFailure Predicate, [EquationTrace], SimplifierCache) -simplifyConstraint doTracing def mbApi cache (Predicate p) = - runEquationT doTracing def mbApi cache $ (coerce <$>) . simplifyConstraint' True $ p +simplifyConstraint doTracing def mbApi mbSMT cache (Predicate p) = + runEquationT doTracing def mbApi mbSMT cache $ (coerce <$>) . simplifyConstraint' True $ p simplifyConstraints :: MonadLoggerIO io => Bool -> KoreDefinition -> Maybe LLVM.API -> + Maybe SMT.SMTContext -> SimplifierCache -> [Predicate] -> io (Either EquationFailure [Predicate], [EquationTrace], SimplifierCache) -simplifyConstraints doTracing def mbApi cache ps = - runEquationT doTracing def mbApi cache $ mapM ((coerce <$>) . simplifyConstraint' True . coerce) ps +simplifyConstraints doTracing def mbApi mbSMT cache ps = + runEquationT doTracing def mbApi mbSMT cache $ + mapM ((coerce <$>) . simplifyConstraint' True . coerce) ps -- version for internal nested evaluation simplifyConstraint' :: MonadLoggerIO io => Bool -> Term -> EquationT io Term diff --git a/library/Booster/Pattern/Rewrite.hs b/library/Booster/Pattern/Rewrite.hs index d64872f96..06acf6868 100644 --- a/library/Booster/Pattern/Rewrite.hs +++ b/library/Booster/Pattern/Rewrite.hs @@ -22,7 +22,7 @@ import Control.Monad.Logger.CallStack import Control.Monad.Trans.Class import Control.Monad.Trans.Except import Control.Monad.Trans.Reader (ReaderT (..), ask) -import Control.Monad.Trans.State.Strict (StateT (runStateT), get, gets, modify) +import Control.Monad.Trans.State.Strict (StateT (runStateT), get, modify) import Data.Hashable qualified as Hashable import Data.List.NonEmpty (NonEmpty (..), toList) import Data.List.NonEmpty qualified as NE @@ -313,6 +313,12 @@ applyRule pat@Pattern{ceilConditions} rule = runRewriteRuleAppT $ do newConstraints <- catMaybes <$> mapM (checkConstraint id trivialIfBottom) ruleEnsures + -- check all new constraints together with the known side constraints + whenJust mbSolver $ \solver -> + (lift $ SMT.checkPredicates solver prior mempty (Set.fromList newConstraints)) >>= \case + Just False -> RewriteRuleAppT $ pure Trivial + _other -> pure () + let rewritten = Pattern (substituteInTerm (refreshExistentials subst) rule.rhs) @@ -337,8 +343,9 @@ applyRule pat@Pattern{ceilConditions} rule = runRewriteRuleAppT $ do Predicate -> RewriteRuleAppT (RewriteT io (RewriteFailed k)) (Maybe a) checkConstraint onUnclear onBottom p = do - RewriteConfig{definition, llvmApi, doTracing} <- lift $ RewriteT ask - (simplified, _traces, _cache) <- simplifyConstraint doTracing definition llvmApi mempty p + RewriteConfig{definition, llvmApi, smtSolver, doTracing} <- lift $ RewriteT ask + (simplified, _traces, _cache) <- + simplifyConstraint doTracing definition llvmApi smtSolver mempty p case simplified of Right (Predicate FalseBool) -> onBottom Right (Predicate TrueBool) -> pure Nothing @@ -625,8 +632,10 @@ performRewrite doTracing def mLlvmLibrary mSolver mbMaxDepth cutLabels terminalL simplifyP :: Pattern -> StateT RewriteStepsState io (Maybe Pattern) simplifyP p = do - cache <- gets (.simplifierCache) - evaluatePattern doTracing def mLlvmLibrary cache p >>= \(res, traces, newCache) -> do + st <- get + let cache = st.simplifierCache + smt = st.smtSolver + evaluatePattern doTracing def mLlvmLibrary smt cache p >>= \(res, traces, newCache) -> do updateCache newCache logTraces traces case res of diff --git a/library/Booster/SMT/Base.hs b/library/Booster/SMT/Base.hs index 4be35ab6f..908ca3104 100644 --- a/library/Booster/SMT/Base.hs +++ b/library/Booster/SMT/Base.hs @@ -48,13 +48,21 @@ data SMTCommand | Control ControlCommand deriving stock (Eq, Ord, Show) +-- DeclareCommands carry a comment which is printed into the +-- transcript (unless it is empty) to refer to the K world data DeclareCommand - = Assert SExpr - | DeclareConst SMTId SMTSort - | DeclareSort SMTId Int - | DeclareFunc SMTId [SMTSort] SMTSort + = Assert BS.ByteString SExpr + | DeclareConst BS.ByteString SMTId SMTSort + | DeclareSort BS.ByteString SMTId Int + | DeclareFunc BS.ByteString SMTId [SMTSort] SMTSort deriving stock (Eq, Ord, Show) +getComment :: DeclareCommand -> BS.ByteString +getComment (Assert c _) = c +getComment (DeclareConst c _ _) = c +getComment (DeclareSort c _ _) = c +getComment (DeclareFunc c _ _ _) = c + data ControlCommand = Push -- Int | Pop -- Int diff --git a/library/Booster/SMT/Interface.hs b/library/Booster/SMT/Interface.hs index 134e669de..3d663950b 100644 --- a/library/Booster/SMT/Interface.hs +++ b/library/Booster/SMT/Interface.hs @@ -25,26 +25,45 @@ import Data.Map qualified as Map import Data.Set (Set) import Data.Set qualified as Set import Data.Text as Text (Text, pack, unpack, unwords) +import Prettyprinter (Pretty, pretty, vsep) import Booster.Definition.Base import Booster.Pattern.Base import Booster.Pattern.Util (sortOfTerm) +import Booster.Prettyprinter qualified as Pretty import Booster.SMT.Base as SMT import Booster.SMT.Runner as SMT import Booster.SMT.Translate as SMT -newtype SMTOptions = SMTOptions +-- Includes all options from kore-rpc used by current clients. The +-- parser in CLOptions uses compatible names and we use the same +-- defaults. Not all options are supported in booster. +data SMTOptions = SMTOptions { transcript :: Maybe FilePath + -- ^ optional log file + , timeout :: Int + -- ^ optional timeout for requests, 0 for none + , retryLimit :: Maybe Int + -- ^ optional retry. Nothing for no retry, 0 for unlimited + , tactic :: Maybe SExpr + -- ^ optional tactic (used verbatim) to replace (check-sat) } deriving (Eq, Show) defaultSMTOptions :: SMTOptions -defaultSMTOptions = SMTOptions{transcript = Nothing} +defaultSMTOptions = + SMTOptions + { transcript = Nothing + , timeout = 125 + , retryLimit = Just 3 + , tactic = Nothing + } initSolver :: Log.MonadLoggerIO io => KoreDefinition -> SMTOptions -> io SMT.SMTContext initSolver def smtOptions = do ctxt <- mkContext smtOptions.transcript logSMT "Checking definition prelude" + -- FIXME set timeout value before doing anything with the solver let prelude = smtDeclarations def case prelude of Left err -> do @@ -58,7 +77,9 @@ initSolver def smtOptions = do Sat -> pure ctxt other -> do logSMT $ "Initial SMT definition check returned " <> pack (show other) - error "Refusing to work with a potentially inconsistent SMT setup" + closeContext ctxt + error $ + "Aborting due to potentially-inconsistent SMT setup: Initial check returned " <> show other closeSolver :: Log.MonadLoggerIO io => SMT.SMTContext -> io () closeSolver ctxt = do @@ -95,9 +116,9 @@ getModelFor ctxt ps subst let mkSMTEquation v t = SMT.eq <$> SMT.translateTerm (Var v) <*> SMT.translateTerm t smtSubst <- - mapM (fmap Assert . uncurry mkSMTEquation) $ Map.assocs subst + mapM (\(v, t) -> Assert "Substitution" <$> mkSMTEquation v t) $ Map.assocs subst smtPs <- - mapM (fmap Assert . SMT.translateTerm . coerce) ps + mapM (\(Predicate p) -> Assert (mkComment p) <$> SMT.translateTerm p) ps pure $ smtSubst <> smtPs freeVars = Set.unions $ @@ -118,7 +139,7 @@ getModelFor ctxt ps subst -- as well as abstraction variables) before sending assertions mapM_ runCmd - [ DeclareConst smtId (SMT.smtSort $ sortOfTerm trm) + [ DeclareConst (mkComment trm) smtId (SMT.smtSort $ sortOfTerm trm) | (trm, smtId) <- Map.assocs transState.mappings ] @@ -170,6 +191,9 @@ getModelFor ctxt ps subst getVar (Var v) = v getVar _ = error "not a var" +mkComment :: Pretty a => a -> BS.ByteString +mkComment = BS.pack . Pretty.renderDefault . pretty + {- | Check a predicates, given a set of predicates as known truth. Simplest version: @@ -217,6 +241,8 @@ checkPredicates ctxt givenPs givenSubst psToCheck , "assertions and a substitution of size" , pack (show $ Map.size givenSubst) ] + logSMT . Pretty.renderText $ + vsep ("Predicates to check:" : map pretty (Set.toList psToCheck)) smtRun_ Push @@ -224,7 +250,7 @@ checkPredicates ctxt givenPs givenSubst psToCheck -- as well as abstraction variables) before sending assertions mapM_ smtRun - [ DeclareConst smtId (SMT.smtSort $ sortOfTerm trm) + [ DeclareConst (mkComment trm) smtId (SMT.smtSort $ sortOfTerm trm) | (trm, smtId) <- Map.assocs transState.mappings ] @@ -243,10 +269,10 @@ checkPredicates ctxt givenPs givenSubst psToCheck -- run check for K ∧ P and then for K ∧ !P let allToCheck = SMT.List (Atom "and" : sexprsToCheck) - smtRun_ $ Assert allToCheck + smtRun_ $ Assert "P" allToCheck positive <- smtRun CheckSat smtRun_ Pop - smtRun_ $ Assert (SMT.smtnot allToCheck) + smtRun_ $ Assert "not P" (SMT.smtnot allToCheck) negative <- smtRun CheckSat void $ smtRun Pop @@ -269,9 +295,9 @@ checkPredicates ctxt givenPs givenSubst psToCheck let mkSMTEquation v t = SMT.eq <$> SMT.translateTerm (Var v) <*> SMT.translateTerm t smtSubst <- - mapM (fmap Assert . uncurry mkSMTEquation) $ Map.assocs givenSubst + mapM (\(v, t) -> Assert "Substitution" <$> mkSMTEquation v t) $ Map.assocs givenSubst smtPs <- - mapM (fmap Assert . SMT.translateTerm . coerce) $ Set.toList givenPs + mapM (\(Predicate p) -> Assert (mkComment p) <$> SMT.translateTerm p) $ Set.toList givenPs toCheck <- mapM (SMT.translateTerm . coerce) $ Set.toList psToCheck pure (smtSubst <> smtPs, toCheck) diff --git a/library/Booster/SMT/LowLevelCodec.hs b/library/Booster/SMT/LowLevelCodec.hs index a299904a6..194c114e8 100644 --- a/library/Booster/SMT/LowLevelCodec.hs +++ b/library/Booster/SMT/LowLevelCodec.hs @@ -110,11 +110,11 @@ atom = Atom . SMTId . BS.pack encodeDeclaration :: DeclareCommand -> BS.Builder encodeDeclaration = toBuilder . \case - Assert x -> List [atom "assert", x] - DeclareConst name sort -> List [atom "declare-const", Atom name, sortExpr sort] + Assert _ x -> List [atom "assert", x] + DeclareConst _ name sort -> List [atom "declare-const", Atom name, sortExpr sort] -- DeclareData ddcls -> not required (yet) - DeclareSort name arity -> List [atom "declare-sort", Atom name, atom (show arity)] - DeclareFunc name sorts sort -> + DeclareSort _ name arity -> List [atom "declare-sort", Atom name, atom (show arity)] + DeclareFunc _ name sorts sort -> List [atom "declare-fun", Atom name, List (map sortExpr sorts), sortExpr sort] sortExpr :: SMTSort -> SExpr diff --git a/library/Booster/SMT/Runner.hs b/library/Booster/SMT/Runner.hs index e6411fd2f..1374bdfe5 100644 --- a/library/Booster/SMT/Runner.hs +++ b/library/Booster/SMT/Runner.hs @@ -88,7 +88,7 @@ closeContext :: MonadLoggerIO io => SMTContext -> io () closeContext ctxt = do logOtherNS "booster" (LevelOther "SMT") "Stopping SMT solver" whenJust ctxt.mbTranscript $ \h -> liftIO $ do - BS.hPutStrLn h "; stopping solver" + BS.hPutStrLn h "; stopping solver\n;;;;;;;;;;;;;;;;;;;;;;;" hClose h liftIO $ ctxt.solverClose @@ -105,6 +105,9 @@ declare = mapM_ runCmd class SMTEncode cmd where encode :: cmd -> BS.Builder + comment :: cmd -> Maybe BS.Builder + comment _ = Nothing + -- selecting the actual runner (command_ for Declare and Control, command for query) run_ :: MonadLoggerIO io => @@ -120,7 +123,9 @@ runCmd :: forall cmd io. (SMTEncode cmd, MonadLoggerIO io) => cmd -> SMT io Resp runCmd cmd = do let cmdBS = encode cmd ctxt <- SMT ask - whenJust ctxt.mbTranscript $ \h -> + whenJust ctxt.mbTranscript $ \h -> do + whenJust (comment cmd) $ \c -> + liftIO (BS.hPutBuilder h c) liftIO (BS.hPutBuilder h $ cmdBS <> "\n") output <- run_ cmd ctxt.solver cmdBS let result = readResponse output @@ -138,6 +143,15 @@ runCmd cmd = do instance SMTEncode DeclareCommand where encode = encodeDeclaration + comment cmd = + case getComment cmd of + "" -> Nothing + bs -> + Just + . foldl1 (<>) + . map (\b -> "; " <> BS.byteString b <> "\n") + $ BS.lines bs + run_ _ s = fmap (const "success") . liftIO . Backend.command_ s instance SMTEncode QueryCommand where @@ -146,9 +160,11 @@ instance SMTEncode QueryCommand where run_ _ s = fmap BS.toStrict . liftIO . Backend.command s instance SMTEncode ControlCommand where - encode Push = BS.shortByteString "(push)" - encode Pop = BS.shortByteString "(pop)" - encode Exit = BS.shortByteString "(exit)" + encode Push = "(push)" + encode Pop = "(pop)" + encode Exit = "(exit)" + + comment _ = Just ";;;;;;;\n" run_ _ s = fmap (const "success") . liftIO . Backend.command_ s diff --git a/library/Booster/SMT/Translate.hs b/library/Booster/SMT/Translate.hs index 1af1abb1d..35510302b 100644 --- a/library/Booster/SMT/Translate.hs +++ b/library/Booster/SMT/Translate.hs @@ -234,7 +234,21 @@ equationToSMTLemma equation ] -- reset state but keep variable counter Translator . modify $ \s -> s{mappings = Map.empty} - pure . Assert $ List [Atom "forall", List varPairs, lemmaRaw] + let varComments = + [ smtV <> " <-- " <> v.variableName + | (Var v, SMTId smtV) <- Map.assocs finalMapping + ] + prettyLemma = + Pretty.vsep + ( pretty equation.lhs <> " == " <> pretty equation.rhs + : if Set.null equation.requires + then [] + else " requires" : map (Pretty.indent 4 . pretty) (Set.toList equation.requires) + ) + lemmaComment = BS.pack (Pretty.renderDefault prettyLemma) + + pure . Assert (BS.unlines $ lemmaComment : varComments) $ + List [Atom "forall", List varPairs, lemmaRaw] -- collect and render all declarations from a definition smtDeclarations :: KoreDefinition -> Either Text [DeclareCommand] @@ -249,7 +263,7 @@ smtDeclarations def where -- declare all sorts except Int and Bool sortDecls = - [ DeclareSort (smtName name) attributes.argCount + [ DeclareSort ("User-defined sort " <> name) (quoted name) attributes.argCount | (name, (attributes, _)) <- Map.assocs def.sorts , name /= "SortInt" , name /= "SortBool" @@ -272,17 +286,24 @@ smtDeclarations def declareFunc :: Symbol -> Maybe DeclareCommand declareFunc sym | Just (SMTLib name) <- sym.attributes.smt = - Just $ DeclareFunc (smtName name) (map smtSort sym.argSorts) (smtSort sym.resultSort) + Just $ + DeclareFunc + ("smtlib-attributed function " <> sym.name) + (smtName name) + (map smtSort sym.argSorts) + (smtSort sym.resultSort) | otherwise = Nothing -smtName :: BS.ByteString -> SMTId +smtName, quoted :: BS.ByteString -> SMTId smtName = SMTId +-- All Kore sort names (except Int and Bool) need to be quoted |...| here. +quoted bs = SMTId $ "|" <> bs <> "|" smtSort :: Sort -> SMTSort smtSort SortInt = SimpleSMTSort "Int" smtSort SortBool = SimpleSMTSort "Bool" smtSort (SortApp sortName args) - | null args = SimpleSMTSort $ smtName sortName - | otherwise = SMTSort (smtName sortName) $ map smtSort args + | null args = SimpleSMTSort $ quoted sortName + | otherwise = SMTSort (quoted sortName) $ map smtSort args smtSort (SortVar varName) = error $ "Sort variable " <> show varName <> " not supported for SMT" diff --git a/scripts/integration-tests.sh b/scripts/integration-tests.sh index b27200817..d2ca4c2b1 100755 --- a/scripts/integration-tests.sh +++ b/scripts/integration-tests.sh @@ -43,7 +43,7 @@ for dir in $(ls -d test-*); do ;; "foundry-bug-report") SERVER=$KORE_RPC_BOOSTER ./runDirectoryTest.sh test-$name --time $@ - SERVER="$KORE_RPC_BOOSTER --interim-simplification 100" ./runDirectoryTest.sh test-$name --time $@ + SERVER=$KORE_RPC_BOOSTER SERVER_OPTS="--interim-simplification 100" ./runDirectoryTest.sh test-$name --time $@ ;; "imp") SERVER=$KORE_RPC_BOOSTER ./runDirectoryTest.sh test-$name --time $@ diff --git a/test/rpc-integration/resources/equalK-conditions.k b/test/rpc-integration/resources/equalK-conditions.k new file mode 100644 index 000000000..e2b9e4ba7 --- /dev/null +++ b/test/rpc-integration/resources/equalK-conditions.k @@ -0,0 +1,26 @@ +module TEST + import BOOL + import K-EQUAL + + syntax State ::= St1() + | St2() + | St3() + | St4() + + configuration $PGM:State ~> .K + + rule [AB]: St1() => St2() ... + requires X ==K St1() andBool X ==K St2() + // requires no-confusion in the booster SMT solver + + rule [AC]: St1() => St3() ... + + // BTW The :State is necessary. kore-exec crashes with this rule + // [CD]: (X => d) ~> _Rest + rule [CD]: (X:State => St4()) ~> _Rest + requires notBool X ==K St1() + andBool notBool X ==K St2() + andBool notBool X ==K St4() + // X == St3() considering no-junk and no-confusion, unclear without + +endmodule diff --git a/test/rpc-integration/resources/equalK-conditions.kore b/test/rpc-integration/resources/equalK-conditions.kore new file mode 100644 index 000000000..8774dac8c --- /dev/null +++ b/test/rpc-integration/resources/equalK-conditions.kore @@ -0,0 +1,2128 @@ +[topCellInitializer{}(LblinitGeneratedTopCell{}()), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)")] + +module BASIC-K + sort SortK{} [] + sort SortKItem{} [] +endmodule +[] +module KSEQ + import BASIC-K [] + symbol kseq{}(SortKItem{}, SortK{}) : SortK{} [constructor{}(), functional{}(), injective{}()] + symbol dotk{}() : SortK{} [constructor{}(), functional{}(), injective{}()] + symbol append{}(SortK{}, SortK{}) : SortK{} [function{}(), functional{}()] + axiom {R} \implies{R}( + \and{R}( + \top{R}(), + \and{R}( + \in{SortK{}, R}(X0:SortK{}, dotk{}()), + \and{R}( + \in{SortK{}, R}(X1:SortK{}, TAIL:SortK{}), + \top{R}() + )) + ), + \equals{SortK{}, R}( + append{}(X0:SortK{}, X1:SortK{}), + \and{SortK{}}( + TAIL:SortK{}, + \top{SortK{}}() + ) + ) + ) [] + axiom {R} \implies{R}( + \and{R}( + \top{R}(), + \and{R}( + \in{SortK{}, R}(X0:SortK{}, kseq{}(K:SortKItem{}, KS:SortK{})), + \and{R}( + \in{SortK{}, R}(X1:SortK{}, TAIL:SortK{}), + \top{R}() + )) + ), + \equals{SortK{}, R}( + append{}(X0:SortK{}, X1:SortK{}), + \and{SortK{}}( + kseq{}(K:SortKItem{}, append{}(KS:SortK{}, TAIL:SortK{})), + \top{SortK{}}() + ) + ) + ) [] +endmodule +[] +module INJ + symbol inj{From, To}(From) : To [sortInjection{}()] + axiom {S1, S2, S3, R} \equals{S3, R}(inj{S2, S3}(inj{S1, S2}(T:S1)), inj{S1, S3}(T:S1)) [simplification{}()] +endmodule +[] +module K + import KSEQ [] + import INJ [] + alias weakExistsFinally{A}(A) : A where weakExistsFinally{A}(@X:A) := @X:A [] + alias weakAlwaysFinally{A}(A) : A where weakAlwaysFinally{A}(@X:A) := @X:A [] + alias allPathGlobally{A}(A) : A where allPathGlobally{A}(@X:A) := @X:A [] +endmodule +[] + +module TEST + +// imports + import K [] + +// sorts + sort SortKCellOpt{} [] + sort SortGeneratedTopCellFragment{} [] + hooked-sort SortList{} [concat{}(Lbl'Unds'List'Unds'{}()), element{}(LblListItem{}()), hook{}("LIST.List"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(913,3,913,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'List{}())] + sort SortKCell{} [] + sort SortGeneratedTopCell{} [] + sort SortGeneratedCounterCell{} [] + hooked-sort SortMap{} [concat{}(Lbl'Unds'Map'Unds'{}()), element{}(Lbl'UndsPipe'-'-GT-Unds'{}()), hook{}("MAP.Map"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(218,3,218,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'Map{}())] + sort SortGeneratedCounterCellOpt{} [] + sort SortKConfigVar{} [hasDomainValues{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(40,3,40,28)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/kast.md)"), token{}()] + hooked-sort SortInt{} [hasDomainValues{}(), hook{}("INT.Int"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1189,3,1189,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)")] + hooked-sort SortSet{} [concat{}(Lbl'Unds'Set'Unds'{}()), element{}(LblSetItem{}()), hook{}("SET.Set"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(700,3,700,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'Set{}())] + sort SortState{} [] + hooked-sort SortBool{} [hasDomainValues{}(), hook{}("BOOL.Bool"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1068,3,1068,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)")] + +// symbols + hooked-symbol Lbl'Hash'if'UndsHash'then'UndsHash'else'UndsHash'fi'Unds'K-EQUAL-SYNTAX'Unds'Sort'Unds'Bool'Unds'Sort'Unds'Sort{SortSort}(SortBool{}, SortSort, SortSort) : SortSort [format{}("%c#if%r %1 %c#then%r %2 %c#else%r %3 %c#fi%r"), function{}(), functional{}(), hook{}("KEQUAL.ite"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2277,26,2277,121)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smt-hook{}("ite"), terminals{}("1010101"), total{}()] + hooked-symbol Lbl'Stop'List{}() : SortList{} [format{}("%c.List%r"), function{}(), functional{}(), hook{}("LIST.unit"), klabel{}(".List"), latex{}("\\dotCt{List}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(937,19,937,142)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smtlib{}("smt_seq_nil"), symbol'Kywd'{}(), terminals{}("1"), total{}()] + hooked-symbol Lbl'Stop'Map{}() : SortMap{} [format{}("%c.Map%r"), function{}(), functional{}(), hook{}("MAP.unit"), klabel{}(".Map"), latex{}("\\dotCt{Map}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(248,18,248,124)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("1"), total{}()] + hooked-symbol Lbl'Stop'Set{}() : SortSet{} [format{}("%c.Set%r"), function{}(), functional{}(), hook{}("SET.unit"), klabel{}(".Set"), latex{}("\\dotCt{Set}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(729,18,729,118)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("1"), total{}()] + symbol Lbl'-LT-'generatedCounter'-GT-'{}(SortInt{}) : SortGeneratedCounterCell{} [cell{}(), cellName{}("generatedCounter"), constructor{}(), format{}("%c%r%i%n%1%d%n%c%r"), functional{}(), injective{}(), left{}(), priorities{}(), right{}(), terminals{}("101")] + symbol Lbl'-LT-'generatedTop'-GT-'{}(SortKCell{}, SortGeneratedCounterCell{}) : SortGeneratedTopCell{} [cell{}(), cellName{}("generatedTop"), constructor{}(), format{}("%1"), functional{}(), injective{}(), left{}(), priorities{}(), right{}(), terminals{}("1001")] + symbol Lbl'-LT-'generatedTop'-GT-'-fragment{}(SortKCellOpt{}, SortGeneratedCounterCellOpt{}) : SortGeneratedTopCellFragment{} [cellFragment{}("GeneratedTopCell"), constructor{}(), format{}("%c-fragment%r %1 %2 %c-fragment%r"), functional{}(), injective{}(), left{}(), priorities{}(), right{}(), terminals{}("1001")] + symbol Lbl'-LT-'k'-GT-'{}(SortK{}) : SortKCell{} [cell{}(), cellName{}("k"), constructor{}(), format{}("%c%r%i%n%1%d%n%c%r"), functional{}(), injective{}(), left{}(), maincell{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(10,17,10,42)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), priorities{}(), right{}(), terminals{}("101")] + hooked-symbol LblList'Coln'get{}(SortList{}, SortInt{}) : SortKItem{} [format{}("%1 %c[%r %2 %c]%r"), function{}(), hook{}("LIST.get"), klabel{}("List:get"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(956,20,956,99)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("0101")] + hooked-symbol LblList'Coln'range{}(SortList{}, SortInt{}, SortInt{}) : SortList{} [format{}("%crange%r %c(%r %1 %c,%r %2 %c,%r %3 %c)%r"), function{}(), hook{}("LIST.range"), klabel{}("List:range"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1003,19,1003,120)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("11010101")] + hooked-symbol LblListItem{}(SortKItem{}) : SortList{} [format{}("%cListItem%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("LIST.element"), klabel{}("ListItem"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(945,19,945,132)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smtlib{}("smt_seq_elem"), symbol'Kywd'{}(), terminals{}("1101"), total{}()] + hooked-symbol LblMap'Coln'lookup{}(SortMap{}, SortKItem{}) : SortKItem{} [format{}("%1 %c[%r %2 %c]%r"), function{}(), hook{}("MAP.lookup"), klabel{}("Map:lookup"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(271,20,271,113)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("0101")] + hooked-symbol LblMap'Coln'update{}(SortMap{}, SortKItem{}, SortKItem{}) : SortMap{} [format{}("%1 %c[%r %2 %c<-%r %3 %c]%r"), function{}(), functional{}(), hook{}("MAP.update"), klabel{}("Map:update"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(290,18,290,140)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), prefer{}(), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("010101"), total{}()] + hooked-symbol LblSet'Coln'difference{}(SortSet{}, SortSet{}) : SortSet{} [format{}("%1 %c-Set%r %2"), function{}(), functional{}(), hook{}("SET.difference"), klabel{}("Set:difference"), latex{}("{#1}-_{\\it Set}{#2}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(769,18,769,142)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol LblSet'Coln'in{}(SortKItem{}, SortSet{}) : SortBool{} [format{}("%1 %cin%r %2"), function{}(), functional{}(), hook{}("SET.in"), klabel{}("Set:in"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(777,19,777,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol LblSetItem{}(SortKItem{}) : SortSet{} [format{}("%cSetItem%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("SET.element"), injective{}(), klabel{}("SetItem"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(737,18,737,119)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("1101"), total{}()] + symbol LblSt1'LParRParUnds'TEST'Unds'State{}() : SortState{} [constructor{}(), format{}("%cSt1%r %c(%r %c)%r"), functional{}(), injective{}(), klabel{}("St1"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(5,20,5,25)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), priorities{}(), right{}(), terminals{}("111")] + symbol LblSt2'LParRParUnds'TEST'Unds'State{}() : SortState{} [constructor{}(), format{}("%cSt2%r %c(%r %c)%r"), functional{}(), injective{}(), klabel{}("St2"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(6,20,6,25)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), priorities{}(), right{}(), terminals{}("111")] + symbol LblSt3'LParRParUnds'TEST'Unds'State{}() : SortState{} [constructor{}(), format{}("%cSt3%r %c(%r %c)%r"), functional{}(), injective{}(), klabel{}("St3"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(7,20,7,25)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), priorities{}(), right{}(), terminals{}("111")] + symbol LblSt4'LParRParUnds'TEST'Unds'State{}() : SortState{} [constructor{}(), format{}("%cSt4%r %c(%r %c)%r"), functional{}(), injective{}(), klabel{}("St4"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(8,20,8,25)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), priorities{}(), right{}(), terminals{}("111")] + hooked-symbol Lbl'Unds'-Map'UndsUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(SortMap{}, SortMap{}) : SortMap{} [format{}("%1 %c-Map%r %2"), function{}(), functional{}(), hook{}("MAP.difference"), latex{}("{#1}-_{\\it Map}{#2}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(311,18,311,116)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds-LT-Eqls'Map'UndsUnds'MAP'Unds'Bool'Unds'Map'Unds'Map{}(SortMap{}, SortMap{}) : SortBool{} [format{}("%1 %c<=Map%r %2"), function{}(), functional{}(), hook{}("MAP.inclusion"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(383,19,383,87)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds-LT-Eqls'Set'UndsUnds'SET'Unds'Bool'Unds'Set'Unds'Set{}(SortSet{}, SortSet{}) : SortBool{} [format{}("%1 %c<=Set%r %2"), function{}(), functional{}(), hook{}("SET.inclusion"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(786,19,786,81)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [comm{}(), format{}("%1 %c=/=Bool%r %2"), function{}(), functional{}(), hook{}("BOOL.ne"), klabel{}("_=/=Bool_"), left{}(Lbl'UndsEqlsEqls'Bool'Unds'{}(),Lbl'UndsEqlsSlshEqls'Bool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1109,19,1109,134)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smt-hook{}("distinct"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsEqlsSlshEqls'K'Unds'{}(SortK{}, SortK{}) : SortBool{} [comm{}(), format{}("%1 %c=/=K%r %2"), function{}(), functional{}(), group{}("notEqualEqualK"), hook{}("KEQUAL.ne"), klabel{}("_=/=K_"), latex{}("{#1}\\mathrel{\\neq_K}{#2}"), left{}(Lbl'UndsEqlsEqls'K'Unds'{}(),Lbl'UndsEqlsSlshEqls'K'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2273,19,2273,179)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'Unds'orElseBool'Unds'{}(),Lbl'Unds'orBool'Unds'{}(),Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'Unds'andThenBool'Unds'{}(),Lbl'Unds'impliesBool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}(),Lbl'Unds'andBool'Unds'{}(),LblnotBool'Unds'{}(),Lbl'Unds'xorBool'Unds'{}()), right{}(), smt-hook{}("distinct"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsEqlsEqls'Bool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [comm{}(), format{}("%1 %c==Bool%r %2"), function{}(), functional{}(), hook{}("BOOL.eq"), klabel{}("_==Bool_"), left{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1108,19,1108,126)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smt-hook{}("="), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsEqlsEqls'K'Unds'{}(SortK{}, SortK{}) : SortBool{} [comm{}(), format{}("%1 %c==K%r %2"), function{}(), functional{}(), group{}("equalEqualK"), hook{}("KEQUAL.eq"), klabel{}("_==K_"), latex{}("{#1}\\mathrel{=_K}{#2}"), left{}(Lbl'UndsEqlsSlshEqls'K'Unds'{}(),Lbl'UndsEqlsEqls'K'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2272,19,2272,165)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'Unds'orElseBool'Unds'{}(),Lbl'Unds'orBool'Unds'{}(),Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'Unds'andThenBool'Unds'{}(),Lbl'Unds'impliesBool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}(),Lbl'Unds'andBool'Unds'{}(),LblnotBool'Unds'{}(),Lbl'Unds'xorBool'Unds'{}()), right{}(), smt-hook{}("="), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'List'Unds'{}(SortList{}, SortList{}) : SortList{} [assoc{}(), element{}(LblListItem{}()), format{}("%1%n%2"), function{}(), functional{}(), hook{}("LIST.concat"), klabel{}("_List_"), left{}(Lbl'Unds'List'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(929,19,929,188)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smtlib{}("smt_seq_concat"), symbol'Kywd'{}(), terminals{}("00"), total{}(), unit{}(Lbl'Stop'List{}())] + hooked-symbol Lbl'Unds'Map'Unds'{}(SortMap{}, SortMap{}) : SortMap{} [assoc{}(), comm{}(), element{}(Lbl'UndsPipe'-'-GT-Unds'{}()), format{}("%1%n%2"), function{}(), hook{}("MAP.concat"), index{}("0"), klabel{}("_Map_"), left{}(Lbl'Unds'Map'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(240,18,240,173)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("00"), unit{}(Lbl'Stop'Map{}())] + hooked-symbol Lbl'Unds'Set'Unds'{}(SortSet{}, SortSet{}) : SortSet{} [assoc{}(), comm{}(), element{}(LblSetItem{}()), format{}("%1%n%2"), function{}(), hook{}("SET.concat"), idem{}(), klabel{}("_Set_"), left{}(Lbl'Unds'Set'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(721,18,721,165)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("00"), unit{}(Lbl'Stop'Set{}())] + hooked-symbol Lbl'UndsLSqBUnds-LT-'-'UndsRSqBUnds'LIST'Unds'List'Unds'List'Unds'Int'Unds'KItem{}(SortList{}, SortInt{}, SortKItem{}) : SortList{} [format{}("%1 %c[%r %2 %c<-%r %3 %c]%r"), function{}(), hook{}("LIST.update"), klabel{}("List:set"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(965,19,965,108)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010101")] + hooked-symbol Lbl'UndsLSqBUnds-LT-'-undef'RSqB'{}(SortMap{}, SortKItem{}) : SortMap{} [format{}("%1 %c[%r %2 %c<-%r %cundef%r %c]%r"), function{}(), functional{}(), hook{}("MAP.remove"), klabel{}("_[_<-undef]"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(299,18,299,117)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), symbol'Kywd'{}(), terminals{}("010111"), total{}()] + hooked-symbol Lbl'UndsLSqBUndsRSqB'orDefault'UndsUnds'MAP'Unds'KItem'Unds'Map'Unds'KItem'Unds'KItem{}(SortMap{}, SortKItem{}, SortKItem{}) : SortKItem{} [format{}("%1 %c[%r %2 %c]%r %corDefault%r %3"), function{}(), functional{}(), hook{}("MAP.lookupOrDefault"), klabel{}("Map:lookupOrDefault"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(281,20,281,134)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010110"), total{}()] + hooked-symbol Lbl'Unds'andBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %candBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.and"), klabel{}("_andBool_"), latex{}("{#1}\\wedge_{\\scriptstyle\\it Bool}{#2}"), left{}(Lbl'Unds'andBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1101,19,1101,192)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("and"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'andThenBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %candThenBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.andThen"), klabel{}("_andThenBool_"), left{}(Lbl'Unds'andThenBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1102,19,1102,154)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("and"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'impliesBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %cimpliesBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.implies"), klabel{}("_impliesBool_"), left{}(Lbl'Unds'impliesBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1106,19,1106,153)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("=>"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'in'UndsUnds'LIST'Unds'Bool'Unds'KItem'Unds'List{}(SortKItem{}, SortList{}) : SortBool{} [format{}("%1 %cin%r %2"), function{}(), functional{}(), hook{}("LIST.in"), klabel{}("_inList_"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1012,19,1012,97)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'in'Unds'keys'LParUndsRParUnds'MAP'Unds'Bool'Unds'KItem'Unds'Map{}(SortKItem{}, SortMap{}) : SortBool{} [format{}("%1 %cin_keys%r %c(%r %2 %c)%r"), function{}(), functional{}(), hook{}("MAP.in_keys"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(357,19,357,89)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("01101"), total{}()] + hooked-symbol Lbl'Unds'orBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %corBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.or"), klabel{}("_orBool_"), latex{}("{#1}\\vee_{\\scriptstyle\\it Bool}{#2}"), left{}(Lbl'Unds'orBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1104,19,1104,187)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("or"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'orElseBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %corElseBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.orElse"), klabel{}("_orElseBool_"), left{}(Lbl'Unds'orElseBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1105,19,1105,151)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("or"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'Unds'xorBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [format{}("%1 %cxorBool%r %2"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.xor"), klabel{}("_xorBool_"), left{}(Lbl'Unds'xorBool'Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1103,19,1103,146)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}()), right{}(), smt-hook{}("xor"), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsPipe'-'-GT-Unds'{}(SortKItem{}, SortKItem{}) : SortMap{} [format{}("%1 %c|->%r %2"), function{}(), functional{}(), hook{}("MAP.element"), injective{}(), klabel{}("_|->_"), latex{}("{#1}\\mapsto{#2}"), left{}(Lbl'UndsPipe'-'-GT-Unds'{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(257,18,257,151)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'Stop'Map{}(),Lbl'Unds'Map'Unds'{}()), right{}(Lbl'UndsPipe'-'-GT-Unds'{}()), symbol'Kywd'{}(), terminals{}("010"), total{}()] + hooked-symbol Lbl'UndsPipe'Set'UndsUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(SortSet{}, SortSet{}) : SortSet{} [comm{}(), format{}("%1 %c|Set%r %2"), function{}(), functional{}(), hook{}("SET.union"), left{}(Lbl'UndsPipe'Set'UndsUnds'SET'Unds'Set'Unds'Set'Unds'Set{}()), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(748,18,748,92)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("010"), total{}()] + hooked-symbol Lblchoice'LParUndsRParUnds'MAP'Unds'KItem'Unds'Map{}(SortMap{}) : SortKItem{} [format{}("%cchoice%r %c(%r %1 %c)%r"), function{}(), hook{}("MAP.choice"), klabel{}("Map:choice"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(393,20,393,101)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101")] + hooked-symbol Lblchoice'LParUndsRParUnds'SET'Unds'KItem'Unds'Set{}(SortSet{}) : SortKItem{} [format{}("%cchoice%r %c(%r %1 %c)%r"), function{}(), hook{}("SET.choice"), klabel{}("Set:choice"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(804,20,804,95)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101")] + hooked-symbol LblfillList'LParUndsCommUndsCommUndsCommUndsRParUnds'LIST'Unds'List'Unds'List'Unds'Int'Unds'Int'Unds'KItem{}(SortList{}, SortInt{}, SortInt{}, SortKItem{}) : SortList{} [format{}("%cfillList%r %c(%r %1 %c,%r %2 %c,%r %3 %c,%r %4 %c)%r"), function{}(), hook{}("LIST.fill"), klabel{}("fillList"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(993,19,993,100)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101010101")] + symbol LblgetGeneratedCounterCell{}(SortGeneratedTopCell{}) : SortGeneratedCounterCell{} [format{}("%cgetGeneratedCounterCell%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), right{}(), terminals{}("1101")] + symbol LblinitGeneratedCounterCell{}() : SortGeneratedCounterCell{} [format{}("%cinitGeneratedCounterCell%r"), function{}(), initializer{}(), left{}(), priorities{}(), right{}(), terminals{}("1")] + symbol LblinitGeneratedTopCell{}(SortMap{}) : SortGeneratedTopCell{} [format{}("%cinitGeneratedTopCell%r %c(%r %1 %c)%r"), function{}(), initializer{}(), left{}(), priorities{}(), right{}(), terminals{}("1101")] + symbol LblinitKCell{}(SortMap{}) : SortKCell{} [format{}("%cinitKCell%r %c(%r %1 %c)%r"), function{}(), initializer{}(), left{}(), priorities{}(), right{}(), terminals{}("1101")] + hooked-symbol LblintersectSet'LParUndsCommUndsRParUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(SortSet{}, SortSet{}) : SortSet{} [comm{}(), format{}("%cintersectSet%r %c(%r %1 %c,%r %2 %c)%r"), function{}(), functional{}(), hook{}("SET.intersection"), klabel{}("intersectSet"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(759,18,759,90)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("110101"), total{}()] + symbol LblisBool{}(SortK{}) : SortBool{} [format{}("%cisBool%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("Bool"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisGeneratedCounterCell{}(SortK{}) : SortBool{} [format{}("%cisGeneratedCounterCell%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("GeneratedCounterCell"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisGeneratedCounterCellOpt{}(SortK{}) : SortBool{} [format{}("%cisGeneratedCounterCellOpt%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("GeneratedCounterCellOpt"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisGeneratedTopCell{}(SortK{}) : SortBool{} [format{}("%cisGeneratedTopCell%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("GeneratedTopCell"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisGeneratedTopCellFragment{}(SortK{}) : SortBool{} [format{}("%cisGeneratedTopCellFragment%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("GeneratedTopCellFragment"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisInt{}(SortK{}) : SortBool{} [format{}("%cisInt%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("Int"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisK{}(SortK{}) : SortBool{} [format{}("%cisK%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("K"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisKCell{}(SortK{}) : SortBool{} [format{}("%cisKCell%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("KCell"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisKCellOpt{}(SortK{}) : SortBool{} [format{}("%cisKCellOpt%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("KCellOpt"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisKConfigVar{}(SortK{}) : SortBool{} [format{}("%cisKConfigVar%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("KConfigVar"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisKItem{}(SortK{}) : SortBool{} [format{}("%cisKItem%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("KItem"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisList{}(SortK{}) : SortBool{} [format{}("%cisList%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("List"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisMap{}(SortK{}) : SortBool{} [format{}("%cisMap%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("Map"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisSet{}(SortK{}) : SortBool{} [format{}("%cisSet%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("Set"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + symbol LblisState{}(SortK{}) : SortBool{} [format{}("%cisState%r %c(%r %1 %c)%r"), function{}(), functional{}(), left{}(), predicate{}("State"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + hooked-symbol Lblkeys'LParUndsRParUnds'MAP'Unds'Set'Unds'Map{}(SortMap{}) : SortSet{} [format{}("%ckeys%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("MAP.keys"), klabel{}("keys"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(341,18,341,82)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + hooked-symbol Lblkeys'Unds'list'LParUndsRParUnds'MAP'Unds'List'Unds'Map{}(SortMap{}) : SortList{} [format{}("%ckeys_list%r %c(%r %1 %c)%r"), function{}(), hook{}("MAP.keys_list"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(349,19,349,80)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101")] + hooked-symbol LblmakeList'LParUndsCommUndsRParUnds'LIST'Unds'List'Unds'Int'Unds'KItem{}(SortInt{}, SortKItem{}) : SortList{} [format{}("%cmakeList%r %c(... %r length: %1 %c,%r value: %2 %c)%r"), function{}(), hook{}("LIST.make"), klabel{}("makeList"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(974,19,974,82)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("110101")] + symbol LblnoGeneratedCounterCell{}() : SortGeneratedCounterCellOpt{} [cellOptAbsent{}("GeneratedCounterCell"), constructor{}(), format{}("%cnoGeneratedCounterCell%r"), functional{}(), injective{}(), left{}(), priorities{}(), right{}(), terminals{}("1")] + symbol LblnoKCell{}() : SortKCellOpt{} [cellOptAbsent{}("KCell"), constructor{}(), format{}("%cnoKCell%r"), functional{}(), injective{}(), left{}(), priorities{}(), right{}(), terminals{}("1")] + hooked-symbol LblnotBool'Unds'{}(SortBool{}) : SortBool{} [format{}("%cnotBool%r %1"), function{}(), functional{}(), group{}("boolOperation"), hook{}("BOOL.not"), klabel{}("notBool_"), latex{}("\\neg_{\\scriptstyle\\it Bool}{#1}"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1100,19,1100,179)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(Lbl'Unds'orElseBool'Unds'{}(),Lbl'Unds'orBool'Unds'{}(),Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(),Lbl'Unds'andThenBool'Unds'{}(),Lbl'Unds'impliesBool'Unds'{}(),Lbl'UndsEqlsEqls'Bool'Unds'{}(),Lbl'Unds'andBool'Unds'{}(),Lbl'Unds'xorBool'Unds'{}()), right{}(), smt-hook{}("not"), symbol'Kywd'{}(), terminals{}("10"), total{}()] + symbol Lblproject'Coln'Bool{}(SortK{}) : SortBool{} [format{}("%cproject:Bool%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'GeneratedCounterCell{}(SortK{}) : SortGeneratedCounterCell{} [format{}("%cproject:GeneratedCounterCell%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'GeneratedCounterCellOpt{}(SortK{}) : SortGeneratedCounterCellOpt{} [format{}("%cproject:GeneratedCounterCellOpt%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'GeneratedTopCell{}(SortK{}) : SortGeneratedTopCell{} [format{}("%cproject:GeneratedTopCell%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'GeneratedTopCellFragment{}(SortK{}) : SortGeneratedTopCellFragment{} [format{}("%cproject:GeneratedTopCellFragment%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'Int{}(SortK{}) : SortInt{} [format{}("%cproject:Int%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'K{}(SortK{}) : SortK{} [format{}("%cproject:K%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'KCell{}(SortK{}) : SortKCell{} [format{}("%cproject:KCell%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'KCellOpt{}(SortK{}) : SortKCellOpt{} [format{}("%cproject:KCellOpt%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'KItem{}(SortK{}) : SortKItem{} [format{}("%cproject:KItem%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'List{}(SortK{}) : SortList{} [format{}("%cproject:List%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'Map{}(SortK{}) : SortMap{} [format{}("%cproject:Map%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'Set{}(SortK{}) : SortSet{} [format{}("%cproject:Set%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + symbol Lblproject'Coln'State{}(SortK{}) : SortState{} [format{}("%cproject:State%r %c(%r %1 %c)%r"), function{}(), left{}(), priorities{}(), projection{}(), right{}(), terminals{}("1101")] + hooked-symbol LblremoveAll'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Set{}(SortMap{}, SortSet{}) : SortMap{} [format{}("%cremoveAll%r %c(%r %1 %c,%r %2 %c)%r"), function{}(), functional{}(), hook{}("MAP.removeAll"), klabel{}("removeAll"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(333,18,333,87)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("110101"), total{}()] + hooked-symbol Lblsize'LParUndsRParUnds'LIST'Unds'Int'Unds'List{}(SortList{}) : SortInt{} [format{}("%csize%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("LIST.size"), klabel{}("sizeList"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1020,18,1020,117)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), smtlib{}("smt_seq_len"), terminals{}("1101"), total{}()] + hooked-symbol Lblsize'LParUndsRParUnds'MAP'Unds'Int'Unds'Map{}(SortMap{}) : SortInt{} [format{}("%csize%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("MAP.size"), klabel{}("sizeMap"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(373,18,373,99)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + hooked-symbol Lblsize'LParUndsRParUnds'SET'Unds'Int'Unds'Set{}(SortSet{}) : SortInt{} [format{}("%csize%r %c(%r %1 %c)%r"), function{}(), functional{}(), hook{}("SET.size"), klabel{}("size"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(794,18,794,76)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101"), total{}()] + hooked-symbol LblupdateList'LParUndsCommUndsCommUndsRParUnds'LIST'Unds'List'Unds'List'Unds'Int'Unds'List{}(SortList{}, SortInt{}, SortList{}) : SortList{} [format{}("%cupdateList%r %c(... %r dest: %1 %c,%r index: %2 %c,%r src: %3 %c)%r"), function{}(), hook{}("LIST.updateAll"), klabel{}("updateList"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(984,19,984,97)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("11010101")] + hooked-symbol LblupdateMap'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(SortMap{}, SortMap{}) : SortMap{} [format{}("%cupdateMap%r %c(%r %1 %c,%r %2 %c)%r"), function{}(), functional{}(), hook{}("MAP.updateAll"), klabel{}("updateMap"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(324,18,324,87)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("110101"), total{}()] + hooked-symbol Lblvalues'LParUndsRParUnds'MAP'Unds'List'Unds'Map{}(SortMap{}) : SortList{} [format{}("%cvalues%r %c(%r %1 %c)%r"), function{}(), hook{}("MAP.values"), klabel{}("values"), left{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(365,19,365,77)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), priorities{}(), right{}(), terminals{}("1101")] + +// generated axioms + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortKCellOpt{}, SortKItem{}} (From:SortKCellOpt{}))) [subsort{SortKCellOpt{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortGeneratedCounterCellOpt{}, SortKItem{}} (From:SortGeneratedCounterCellOpt{}))) [subsort{SortGeneratedCounterCellOpt{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortGeneratedCounterCellOpt{}, \equals{SortGeneratedCounterCellOpt{}, R} (Val:SortGeneratedCounterCellOpt{}, inj{SortGeneratedCounterCell{}, SortGeneratedCounterCellOpt{}} (From:SortGeneratedCounterCell{}))) [subsort{SortGeneratedCounterCell{}, SortGeneratedCounterCellOpt{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortKCell{}, SortKItem{}} (From:SortKCell{}))) [subsort{SortKCell{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKCellOpt{}, \equals{SortKCellOpt{}, R} (Val:SortKCellOpt{}, inj{SortKCell{}, SortKCellOpt{}} (From:SortKCell{}))) [subsort{SortKCell{}, SortKCellOpt{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortSet{}, SortKItem{}} (From:SortSet{}))) [subsort{SortSet{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortGeneratedCounterCell{}, SortKItem{}} (From:SortGeneratedCounterCell{}))) [subsort{SortGeneratedCounterCell{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortState{}, SortKItem{}} (From:SortState{}))) [subsort{SortState{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortGeneratedTopCell{}, SortKItem{}} (From:SortGeneratedTopCell{}))) [subsort{SortGeneratedTopCell{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortList{}, SortKItem{}} (From:SortList{}))) [subsort{SortList{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortBool{}, SortKItem{}} (From:SortBool{}))) [subsort{SortBool{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortInt{}, SortKItem{}} (From:SortInt{}))) [subsort{SortInt{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortGeneratedTopCellFragment{}, SortKItem{}} (From:SortGeneratedTopCellFragment{}))) [subsort{SortGeneratedTopCellFragment{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortMap{}, SortKItem{}} (From:SortMap{}))) [subsort{SortMap{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortKConfigVar{}, SortKItem{}} (From:SortKConfigVar{}))) [subsort{SortKConfigVar{}, SortKItem{}}()] // subsort + axiom{R, SortSort} \exists{R} (Val:SortSort, \equals{SortSort, R} (Val:SortSort, Lbl'Hash'if'UndsHash'then'UndsHash'else'UndsHash'fi'Unds'K-EQUAL-SYNTAX'Unds'Sort'Unds'Bool'Unds'Sort'Unds'Sort{SortSort}(K0:SortBool{}, K1:SortSort, K2:SortSort))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortList{}, \equals{SortList{}, R} (Val:SortList{}, Lbl'Stop'List{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, Lbl'Stop'Map{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, Lbl'Stop'Set{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortGeneratedCounterCell{}, \equals{SortGeneratedCounterCell{}, R} (Val:SortGeneratedCounterCell{}, Lbl'-LT-'generatedCounter'-GT-'{}(K0:SortInt{}))) [functional{}()] // functional + axiom{}\implies{SortGeneratedCounterCell{}} (\and{SortGeneratedCounterCell{}} (Lbl'-LT-'generatedCounter'-GT-'{}(X0:SortInt{}), Lbl'-LT-'generatedCounter'-GT-'{}(Y0:SortInt{})), Lbl'-LT-'generatedCounter'-GT-'{}(\and{SortInt{}} (X0:SortInt{}, Y0:SortInt{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortGeneratedTopCell{}, \equals{SortGeneratedTopCell{}, R} (Val:SortGeneratedTopCell{}, Lbl'-LT-'generatedTop'-GT-'{}(K0:SortKCell{}, K1:SortGeneratedCounterCell{}))) [functional{}()] // functional + axiom{}\implies{SortGeneratedTopCell{}} (\and{SortGeneratedTopCell{}} (Lbl'-LT-'generatedTop'-GT-'{}(X0:SortKCell{}, X1:SortGeneratedCounterCell{}), Lbl'-LT-'generatedTop'-GT-'{}(Y0:SortKCell{}, Y1:SortGeneratedCounterCell{})), Lbl'-LT-'generatedTop'-GT-'{}(\and{SortKCell{}} (X0:SortKCell{}, Y0:SortKCell{}), \and{SortGeneratedCounterCell{}} (X1:SortGeneratedCounterCell{}, Y1:SortGeneratedCounterCell{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortGeneratedTopCellFragment{}, \equals{SortGeneratedTopCellFragment{}, R} (Val:SortGeneratedTopCellFragment{}, Lbl'-LT-'generatedTop'-GT-'-fragment{}(K0:SortKCellOpt{}, K1:SortGeneratedCounterCellOpt{}))) [functional{}()] // functional + axiom{}\implies{SortGeneratedTopCellFragment{}} (\and{SortGeneratedTopCellFragment{}} (Lbl'-LT-'generatedTop'-GT-'-fragment{}(X0:SortKCellOpt{}, X1:SortGeneratedCounterCellOpt{}), Lbl'-LT-'generatedTop'-GT-'-fragment{}(Y0:SortKCellOpt{}, Y1:SortGeneratedCounterCellOpt{})), Lbl'-LT-'generatedTop'-GT-'-fragment{}(\and{SortKCellOpt{}} (X0:SortKCellOpt{}, Y0:SortKCellOpt{}), \and{SortGeneratedCounterCellOpt{}} (X1:SortGeneratedCounterCellOpt{}, Y1:SortGeneratedCounterCellOpt{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortKCell{}, \equals{SortKCell{}, R} (Val:SortKCell{}, Lbl'-LT-'k'-GT-'{}(K0:SortK{}))) [functional{}()] // functional + axiom{}\implies{SortKCell{}} (\and{SortKCell{}} (Lbl'-LT-'k'-GT-'{}(X0:SortK{}), Lbl'-LT-'k'-GT-'{}(Y0:SortK{})), Lbl'-LT-'k'-GT-'{}(\and{SortK{}} (X0:SortK{}, Y0:SortK{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortList{}, \equals{SortList{}, R} (Val:SortList{}, LblListItem{}(K0:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, LblMap'Coln'update{}(K0:SortMap{}, K1:SortKItem{}, K2:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, LblSet'Coln'difference{}(K0:SortSet{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblSet'Coln'in{}(K0:SortKItem{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, LblSetItem{}(K0:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, LblSt1'LParRParUnds'TEST'Unds'State{}())) [functional{}()] // functional + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt1'LParRParUnds'TEST'Unds'State{}(), LblSt2'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt1'LParRParUnds'TEST'Unds'State{}(), LblSt3'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt1'LParRParUnds'TEST'Unds'State{}(), LblSt4'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, LblSt2'LParRParUnds'TEST'Unds'State{}())) [functional{}()] // functional + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt2'LParRParUnds'TEST'Unds'State{}(), LblSt3'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt2'LParRParUnds'TEST'Unds'State{}(), LblSt4'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, LblSt3'LParRParUnds'TEST'Unds'State{}())) [functional{}()] // functional + axiom{}\not{SortState{}} (\and{SortState{}} (LblSt3'LParRParUnds'TEST'Unds'State{}(), LblSt4'LParRParUnds'TEST'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, LblSt4'LParRParUnds'TEST'Unds'State{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, Lbl'Unds'-Map'UndsUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(K0:SortMap{}, K1:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds-LT-Eqls'Map'UndsUnds'MAP'Unds'Bool'Unds'Map'Unds'Map{}(K0:SortMap{}, K1:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds-LT-Eqls'Set'UndsUnds'SET'Unds'Bool'Unds'Set'Unds'Set{}(K0:SortSet{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'UndsEqlsSlshEqls'K'Unds'{}(K0:SortK{}, K1:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'UndsEqlsEqls'Bool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'UndsEqlsEqls'K'Unds'{}(K0:SortK{}, K1:SortK{}))) [functional{}()] // functional + axiom{R} \equals{SortList{}, R} (Lbl'Unds'List'Unds'{}(Lbl'Unds'List'Unds'{}(K1:SortList{},K2:SortList{}),K3:SortList{}),Lbl'Unds'List'Unds'{}(K1:SortList{},Lbl'Unds'List'Unds'{}(K2:SortList{},K3:SortList{}))) [assoc{}()] // associativity + axiom{R}\equals{SortList{}, R} (Lbl'Unds'List'Unds'{}(K:SortList{},Lbl'Stop'List{}()),K:SortList{}) [unit{}()] // right unit + axiom{R}\equals{SortList{}, R} (Lbl'Unds'List'Unds'{}(Lbl'Stop'List{}(),K:SortList{}),K:SortList{}) [unit{}()] // left unit + axiom{R} \exists{R} (Val:SortList{}, \equals{SortList{}, R} (Val:SortList{}, Lbl'Unds'List'Unds'{}(K0:SortList{}, K1:SortList{}))) [functional{}()] // functional + axiom{R} \equals{SortMap{}, R} (Lbl'Unds'Map'Unds'{}(Lbl'Unds'Map'Unds'{}(K1:SortMap{},K2:SortMap{}),K3:SortMap{}),Lbl'Unds'Map'Unds'{}(K1:SortMap{},Lbl'Unds'Map'Unds'{}(K2:SortMap{},K3:SortMap{}))) [assoc{}()] // associativity + axiom{R}\equals{SortMap{}, R} (Lbl'Unds'Map'Unds'{}(K:SortMap{},Lbl'Stop'Map{}()),K:SortMap{}) [unit{}()] // right unit + axiom{R}\equals{SortMap{}, R} (Lbl'Unds'Map'Unds'{}(Lbl'Stop'Map{}(),K:SortMap{}),K:SortMap{}) [unit{}()] // left unit + axiom{R} \equals{SortSet{}, R} (Lbl'Unds'Set'Unds'{}(Lbl'Unds'Set'Unds'{}(K1:SortSet{},K2:SortSet{}),K3:SortSet{}),Lbl'Unds'Set'Unds'{}(K1:SortSet{},Lbl'Unds'Set'Unds'{}(K2:SortSet{},K3:SortSet{}))) [assoc{}()] // associativity + axiom{R} \equals{SortSet{}, R} (Lbl'Unds'Set'Unds'{}(K:SortSet{},K:SortSet{}),K:SortSet{}) [idem{}()] // idempotency + axiom{R}\equals{SortSet{}, R} (Lbl'Unds'Set'Unds'{}(K:SortSet{},Lbl'Stop'Set{}()),K:SortSet{}) [unit{}()] // right unit + axiom{R}\equals{SortSet{}, R} (Lbl'Unds'Set'Unds'{}(Lbl'Stop'Set{}(),K:SortSet{}),K:SortSet{}) [unit{}()] // left unit + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, Lbl'UndsLSqBUnds-LT-'-undef'RSqB'{}(K0:SortMap{}, K1:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, Lbl'UndsLSqBUndsRSqB'orDefault'UndsUnds'MAP'Unds'KItem'Unds'Map'Unds'KItem'Unds'KItem{}(K0:SortMap{}, K1:SortKItem{}, K2:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'andBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'andThenBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'impliesBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'in'UndsUnds'LIST'Unds'Bool'Unds'KItem'Unds'List{}(K0:SortKItem{}, K1:SortList{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'in'Unds'keys'LParUndsRParUnds'MAP'Unds'Bool'Unds'KItem'Unds'Map{}(K0:SortKItem{}, K1:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'orBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'orElseBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds'xorBool'Unds'{}(K0:SortBool{}, K1:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, Lbl'UndsPipe'-'-GT-Unds'{}(K0:SortKItem{}, K1:SortKItem{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, Lbl'UndsPipe'Set'UndsUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(K0:SortSet{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, LblintersectSet'LParUndsCommUndsRParUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(K0:SortSet{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisBool{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisGeneratedCounterCell{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisGeneratedCounterCellOpt{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisGeneratedTopCell{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisGeneratedTopCellFragment{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisInt{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisK{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisKCell{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisKCellOpt{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisKConfigVar{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisKItem{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisList{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisMap{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisSet{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisState{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortSet{}, \equals{SortSet{}, R} (Val:SortSet{}, Lblkeys'LParUndsRParUnds'MAP'Unds'Set'Unds'Map{}(K0:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortGeneratedCounterCellOpt{}, \equals{SortGeneratedCounterCellOpt{}, R} (Val:SortGeneratedCounterCellOpt{}, LblnoGeneratedCounterCell{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortKCellOpt{}, \equals{SortKCellOpt{}, R} (Val:SortKCellOpt{}, LblnoKCell{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblnotBool'Unds'{}(K0:SortBool{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, LblremoveAll'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Set{}(K0:SortMap{}, K1:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lblsize'LParUndsRParUnds'LIST'Unds'Int'Unds'List{}(K0:SortList{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lblsize'LParUndsRParUnds'MAP'Unds'Int'Unds'Map{}(K0:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lblsize'LParUndsRParUnds'SET'Unds'Int'Unds'Set{}(K0:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortMap{}, \equals{SortMap{}, R} (Val:SortMap{}, LblupdateMap'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(K0:SortMap{}, K1:SortMap{}))) [functional{}()] // functional + axiom{} \or{SortKItem{}} (\exists{SortKItem{}} (Val:SortList{}, inj{SortList{}, SortKItem{}} (Val:SortList{})), \exists{SortKItem{}} (Val:SortKConfigVar{}, inj{SortKConfigVar{}, SortKItem{}} (Val:SortKConfigVar{})), \exists{SortKItem{}} (Val:SortGeneratedCounterCellOpt{}, inj{SortGeneratedCounterCellOpt{}, SortKItem{}} (Val:SortGeneratedCounterCellOpt{})), \exists{SortKItem{}} (Val:SortGeneratedCounterCell{}, inj{SortGeneratedCounterCell{}, SortKItem{}} (Val:SortGeneratedCounterCell{})), \exists{SortKItem{}} (Val:SortBool{}, inj{SortBool{}, SortKItem{}} (Val:SortBool{})), \exists{SortKItem{}} (Val:SortKCell{}, inj{SortKCell{}, SortKItem{}} (Val:SortKCell{})), \exists{SortKItem{}} (Val:SortMap{}, inj{SortMap{}, SortKItem{}} (Val:SortMap{})), \exists{SortKItem{}} (Val:SortKCellOpt{}, inj{SortKCellOpt{}, SortKItem{}} (Val:SortKCellOpt{})), \exists{SortKItem{}} (Val:SortInt{}, inj{SortInt{}, SortKItem{}} (Val:SortInt{})), \exists{SortKItem{}} (Val:SortGeneratedTopCell{}, inj{SortGeneratedTopCell{}, SortKItem{}} (Val:SortGeneratedTopCell{})), \exists{SortKItem{}} (Val:SortSet{}, inj{SortSet{}, SortKItem{}} (Val:SortSet{})), \exists{SortKItem{}} (Val:SortGeneratedTopCellFragment{}, inj{SortGeneratedTopCellFragment{}, SortKItem{}} (Val:SortGeneratedTopCellFragment{})), \exists{SortKItem{}} (Val:SortState{}, inj{SortState{}, SortKItem{}} (Val:SortState{})), \bottom{SortKItem{}}()) [constructor{}()] // no junk + axiom{} \or{SortKConfigVar{}} (\top{SortKConfigVar{}}(), \bottom{SortKConfigVar{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortGeneratedCounterCellOpt{}} (LblnoGeneratedCounterCell{}(), \exists{SortGeneratedCounterCellOpt{}} (Val:SortGeneratedCounterCell{}, inj{SortGeneratedCounterCell{}, SortGeneratedCounterCellOpt{}} (Val:SortGeneratedCounterCell{})), \bottom{SortGeneratedCounterCellOpt{}}()) [constructor{}()] // no junk + axiom{} \or{SortGeneratedCounterCell{}} (\exists{SortGeneratedCounterCell{}} (X0:SortInt{}, Lbl'-LT-'generatedCounter'-GT-'{}(X0:SortInt{})), \bottom{SortGeneratedCounterCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortBool{}} (\top{SortBool{}}(), \bottom{SortBool{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortKCell{}} (\exists{SortKCell{}} (X0:SortK{}, Lbl'-LT-'k'-GT-'{}(X0:SortK{})), \bottom{SortKCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortKCellOpt{}} (LblnoKCell{}(), \exists{SortKCellOpt{}} (Val:SortKCell{}, inj{SortKCell{}, SortKCellOpt{}} (Val:SortKCell{})), \bottom{SortKCellOpt{}}()) [constructor{}()] // no junk + axiom{} \or{SortInt{}} (\top{SortInt{}}(), \bottom{SortInt{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortGeneratedTopCell{}} (\exists{SortGeneratedTopCell{}} (X0:SortKCell{}, \exists{SortGeneratedTopCell{}} (X1:SortGeneratedCounterCell{}, Lbl'-LT-'generatedTop'-GT-'{}(X0:SortKCell{}, X1:SortGeneratedCounterCell{}))), \bottom{SortGeneratedTopCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortGeneratedTopCellFragment{}} (\exists{SortGeneratedTopCellFragment{}} (X0:SortKCellOpt{}, \exists{SortGeneratedTopCellFragment{}} (X1:SortGeneratedCounterCellOpt{}, Lbl'-LT-'generatedTop'-GT-'-fragment{}(X0:SortKCellOpt{}, X1:SortGeneratedCounterCellOpt{}))), \bottom{SortGeneratedTopCellFragment{}}()) [constructor{}()] // no junk + axiom{} \or{SortState{}} (LblSt1'LParRParUnds'TEST'Unds'State{}(), LblSt2'LParRParUnds'TEST'Unds'State{}(), LblSt3'LParRParUnds'TEST'Unds'State{}(), LblSt4'LParRParUnds'TEST'Unds'State{}(), \bottom{SortState{}}()) [constructor{}()] // no junk + +// rules +// rule #Equals{Bool,#SortParam}(`_=/=K_`(K1,K2),#token("false","Bool"))=>#Equals{K,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7e3c2755de9f56727e93033164148b26514ac3266a4968788a9da9e314f085a2), org.kframework.attributes.Location(Location(2292,8,2292,53)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("7e3c2755de9f56727e93033164148b26514ac3266a4968788a9da9e314f085a2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2292,8,2292,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`_=/=K_`(K1,K2),#token("true","Bool"))=>#Not{#SortParam}(#Equals{K,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9130be811669fe4a43adca72c6c6019dd71bbc3230adf9d3aec48a8a4f0902a5), org.kframework.attributes.Location(Location(2290,8,2290,58)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \not{Q0}(\equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("9130be811669fe4a43adca72c6c6019dd71bbc3230adf9d3aec48a8a4f0902a5"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2290,8,2290,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`_==K_`(K1,K2),#token("false","Bool"))=>#Not{#SortParam}(#Equals{K,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(6bd0e33cfd9a06f8dafd28aada596b748f8ad71d7a6b0d5d06b4ec8bd3c17ae6), org.kframework.attributes.Location(Location(2288,8,2288,58)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \not{Q0}(\equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("6bd0e33cfd9a06f8dafd28aada596b748f8ad71d7a6b0d5d06b4ec8bd3c17ae6"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2288,8,2288,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`_==K_`(K1,K2),#token("true","Bool"))=>#Equals{K,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(34091c658d74ff4f694390d20661da89dbe79df122c20fb96f99d0b4a0362f92), org.kframework.attributes.Location(Location(2286,8,2286,51)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("34091c658d74ff4f694390d20661da89dbe79df122c20fb96f99d0b4a0362f92"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2286,8,2286,51)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`_andBool_`(@B1,@B2),#token("true","Bool"))=>#And{#SortParam}(#Equals{Bool,#SortParam}(@B1,#token("true","Bool")),#Equals{Bool,#SortParam}(@B2,#token("true","Bool"))) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(07baa96fd82cc826cf1685cb8119bf1c214ed8b884464ffe20e53b993c12e918), org.kframework.attributes.Location(Location(1162,8,1162,84)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'Unds'andBool'Unds'{}(@VarB1:SortBool{},@VarB2:SortBool{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \and{Q0}(\equals{SortBool{}, Q0}(@VarB1:SortBool{},\dv{SortBool{}}("true")),\equals{SortBool{}, Q0}(@VarB2:SortBool{},\dv{SortBool{}}("true"))), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("07baa96fd82cc826cf1685cb8119bf1c214ed8b884464ffe20e53b993c12e918"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1162,8,1162,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`_orBool_`(@B1,@B2),#token("false","Bool"))=>#And{#SortParam}(#Equals{Bool,#SortParam}(@B1,#token("false","Bool")),#Equals{Bool,#SortParam}(@B2,#token("false","Bool"))) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2b11ac075f3dd3ffe0ddbec1741072a8869b134229fe049807754e8ad343744e), org.kframework.attributes.Location(Location(1164,8,1164,86)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'Unds'orBool'Unds'{}(@VarB1:SortBool{},@VarB2:SortBool{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \and{Q0}(\equals{SortBool{}, Q0}(@VarB1:SortBool{},\dv{SortBool{}}("false")),\equals{SortBool{}, Q0}(@VarB2:SortBool{},\dv{SortBool{}}("false"))), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("2b11ac075f3dd3ffe0ddbec1741072a8869b134229fe049807754e8ad343744e"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1164,8,1164,86)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`notBool_`(@B),#token("false","Bool"))=>#Equals{Bool,#SortParam}(@B,#token("true","Bool")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(34328f07490eae9a3c60959e6bc930879eadfd5c2141758b8ee518c2fb0204ad), org.kframework.attributes.Location(Location(1159,8,1159,55)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(LblnotBool'Unds'{}(@VarB:SortBool{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \equals{SortBool{}, Q0}(@VarB:SortBool{},\dv{SortBool{}}("true")), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("34328f07490eae9a3c60959e6bc930879eadfd5c2141758b8ee518c2fb0204ad"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1159,8,1159,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(`notBool_`(@B),#token("true","Bool"))=>#Equals{Bool,#SortParam}(@B,#token("false","Bool")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ff38a911e0bfd4c9765658dd908e0ef2ceee912f22703ddb571af28ef362bc9e), org.kframework.attributes.Location(Location(1157,8,1157,55)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(LblnotBool'Unds'{}(@VarB:SortBool{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \equals{SortBool{}, Q0}(@VarB:SortBool{},\dv{SortBool{}}("false")), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("ff38a911e0bfd4c9765658dd908e0ef2ceee912f22703ddb571af28ef362bc9e"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1157,8,1157,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`_=/=K_`(K1,K2))=>#Equals{K,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(8c3adbcee5cba3c9dba97d0b267b9589c7960c2c903190cb69f6d94ea1fbdd75), org.kframework.attributes.Location(Location(2293,8,2293,53)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),Lbl'UndsEqlsSlshEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{})), + \and{Q0} ( + \equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("8c3adbcee5cba3c9dba97d0b267b9589c7960c2c903190cb69f6d94ea1fbdd75"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2293,8,2293,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`_==K_`(K1,K2))=>#Not{#SortParam}(#Equals{K,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(074355783c5651a021ad5e253782bea2ebbab652b3e80d5516eed89f9e435dda), org.kframework.attributes.Location(Location(2289,8,2289,58)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),Lbl'UndsEqlsEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{})), + \and{Q0} ( + \not{Q0}(\equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("074355783c5651a021ad5e253782bea2ebbab652b3e80d5516eed89f9e435dda"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2289,8,2289,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`_orBool_`(@B1,@B2))=>#And{#SortParam}(#Equals{Bool,#SortParam}(#token("false","Bool"),@B1),#Equals{Bool,#SortParam}(#token("false","Bool"),@B2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(d58ed383e30c685252b6208bcbaa2c5a6d2bb2c61866156cd5f5496203452471), org.kframework.attributes.Location(Location(1163,8,1163,86)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),Lbl'Unds'orBool'Unds'{}(@VarB1:SortBool{},@VarB2:SortBool{})), + \and{Q0} ( + \and{Q0}(\equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),@VarB1:SortBool{}),\equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),@VarB2:SortBool{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("d58ed383e30c685252b6208bcbaa2c5a6d2bb2c61866156cd5f5496203452471"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1163,8,1163,86)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`notBool_`(@B))=>#Equals{Bool,#SortParam}(#token("true","Bool"),@B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(41cf8859c3dd6d6cb8f0d5950f13eda843cb8f3a234f96f288ac0443685d67e6), org.kframework.attributes.Location(Location(1158,8,1158,55)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),LblnotBool'Unds'{}(@VarB:SortBool{})), + \and{Q0} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),@VarB:SortBool{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("41cf8859c3dd6d6cb8f0d5950f13eda843cb8f3a234f96f288ac0443685d67e6"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1158,8,1158,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`_=/=K_`(K1,K2))=>#Not{#SortParam}(#Equals{K,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4bb5613968e43b08303fdbbe2dd22b6186c92b98ef7b9cb3c7f1f46ee17d91a6), org.kframework.attributes.Location(Location(2291,8,2291,58)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),Lbl'UndsEqlsSlshEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{})), + \and{Q0} ( + \not{Q0}(\equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("4bb5613968e43b08303fdbbe2dd22b6186c92b98ef7b9cb3c7f1f46ee17d91a6"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2291,8,2291,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`_==K_`(K1,K2))=>#Equals{K,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ec5382e5e3ff3234e9ad938d6fbc2b7fbf9b88bd8c3d5b52ba6d9e54c93bb323), org.kframework.attributes.Location(Location(2287,8,2287,51)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),Lbl'UndsEqlsEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{})), + \and{Q0} ( + \equals{SortK{}, Q0}(VarK1:SortK{},VarK2:SortK{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("ec5382e5e3ff3234e9ad938d6fbc2b7fbf9b88bd8c3d5b52ba6d9e54c93bb323"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2287,8,2287,51)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`_andBool_`(@B1,@B2))=>#And{#SortParam}(#Equals{Bool,#SortParam}(#token("true","Bool"),@B1),#Equals{Bool,#SortParam}(#token("true","Bool"),@B2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(b87686476d42cb8b71543b0942857bf74e4e1f49c62efe4f060a06e0cc2d53fb), org.kframework.attributes.Location(Location(1161,8,1161,84)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),Lbl'Unds'andBool'Unds'{}(@VarB1:SortBool{},@VarB2:SortBool{})), + \and{Q0} ( + \and{Q0}(\equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),@VarB1:SortBool{}),\equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),@VarB2:SortBool{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("b87686476d42cb8b71543b0942857bf74e4e1f49c62efe4f060a06e0cc2d53fb"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1161,8,1161,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`notBool_`(@B))=>#Equals{Bool,#SortParam}(#token("false","Bool"),@B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2c40c69936606d292ca999440716bfe9b6421a9e4a182731b8881126a2dc8e2f), org.kframework.attributes.Location(Location(1156,8,1156,55)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),LblnotBool'Unds'{}(@VarB:SortBool{})), + \and{Q0} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),@VarB:SortBool{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("2c40c69936606d292ca999440716bfe9b6421a9e4a182731b8881126a2dc8e2f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1156,8,1156,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}(), sortParams{}("{Q0}")] + +// rule `#if_#then_#else_#fi_K-EQUAL-SYNTAX_Sort_Bool_Sort_Sort`{K}(C,B1,_Gen0)=>B1 requires C ensures #token("true","Bool") [UNIQUE_ID(2b32069ac3f589174502fa507ebc88fab7c902854c0a9baa8ab09beb551232e2), org.kframework.attributes.Location(Location(2304,8,2304,59)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [klabel(#ruleRequires), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \equals{SortBool{},R}( + VarC:SortBool{}, + \dv{SortBool{}}("true")), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + VarC:SortBool{} + ),\and{R} ( + \in{SortK{}, R} ( + X1:SortK{}, + VarB1:SortK{} + ),\and{R} ( + \in{SortK{}, R} ( + X2:SortK{}, + Var'Unds'Gen0:SortK{} + ), + \top{R} () + )))), + \equals{SortK{},R} ( + Lbl'Hash'if'UndsHash'then'UndsHash'else'UndsHash'fi'Unds'K-EQUAL-SYNTAX'Unds'Sort'Unds'Bool'Unds'Sort'Unds'Sort{SortK{}}(X0:SortBool{},X1:SortK{},X2:SortK{}), + \and{SortK{}} ( + VarB1:SortK{}, + \top{SortK{}}()))) + [UNIQUE'Unds'ID{}("2b32069ac3f589174502fa507ebc88fab7c902854c0a9baa8ab09beb551232e2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2304,8,2304,59)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody \"requires\" Bool [klabel(#ruleRequires), symbol]")] + +// rule `#if_#then_#else_#fi_K-EQUAL-SYNTAX_Sort_Bool_Sort_Sort`{K}(C,_Gen0,B2)=>B2 requires `notBool_`(C) ensures #token("true","Bool") [UNIQUE_ID(651bff3fa53d464ac7dd7aa77e1ef6071e14c959eb6df97baa325e2ad300daaa), org.kframework.attributes.Location(Location(2305,8,2305,67)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [klabel(#ruleRequires), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \equals{SortBool{},R}( + LblnotBool'Unds'{}(VarC:SortBool{}), + \dv{SortBool{}}("true")), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + VarC:SortBool{} + ),\and{R} ( + \in{SortK{}, R} ( + X1:SortK{}, + Var'Unds'Gen0:SortK{} + ),\and{R} ( + \in{SortK{}, R} ( + X2:SortK{}, + VarB2:SortK{} + ), + \top{R} () + )))), + \equals{SortK{},R} ( + Lbl'Hash'if'UndsHash'then'UndsHash'else'UndsHash'fi'Unds'K-EQUAL-SYNTAX'Unds'Sort'Unds'Bool'Unds'Sort'Unds'Sort{SortK{}}(X0:SortBool{},X1:SortK{},X2:SortK{}), + \and{SortK{}} ( + VarB2:SortK{}, + \top{SortK{}}()))) + [UNIQUE'Unds'ID{}("651bff3fa53d464ac7dd7aa77e1ef6071e14c959eb6df97baa325e2ad300daaa"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2305,8,2305,67)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody \"requires\" Bool [klabel(#ruleRequires), symbol]")] + +// rule ``(``(``inj{State,KItem}(X) #as _Gen2``~>_Rest),_DotVar0)=>``(``(inj{State,KItem}(`St4()_TEST_State`(.KList))~>_Rest),_DotVar0) requires `_andBool_`(`_andBool_`(`notBool_`(`_==K_`(_Gen2,inj{State,KItem}(`St1()_TEST_State`(.KList)))),`notBool_`(`_==K_`(_Gen2,inj{State,KItem}(`St2()_TEST_State`(.KList))))),`notBool_`(`_==K_`(_Gen2,inj{State,KItem}(`St4()_TEST_State`(.KList))))) ensures #token("true","Bool") [UNIQUE_ID(8851cf7b2bd43ceeab27edc6ee3d0225022729b8f043423cbfafd8cb9918b7f4), cool-like, label(TEST.CD), org.kframework.attributes.Location(Location(20,14,23,33)), org.kframework.attributes.Source(Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [klabel(#ruleRequires), symbol])] + axiom{} \rewrites{SortGeneratedTopCell{}} ( + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(\and{SortKItem{}}(inj{SortState{}, SortKItem{}}(VarX:SortState{}),Var'Unds'Gen2:SortKItem{}),Var'Unds'Rest:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), + \equals{SortBool{},SortGeneratedTopCell{}}( + Lbl'Unds'andBool'Unds'{}(Lbl'Unds'andBool'Unds'{}(LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'K'Unds'{}(kseq{}(Var'Unds'Gen2:SortKItem{},dotk{}()),kseq{}(inj{SortState{}, SortKItem{}}(LblSt1'LParRParUnds'TEST'Unds'State{}()),dotk{}()))),LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'K'Unds'{}(kseq{}(Var'Unds'Gen2:SortKItem{},dotk{}()),kseq{}(inj{SortState{}, SortKItem{}}(LblSt2'LParRParUnds'TEST'Unds'State{}()),dotk{}())))),LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'K'Unds'{}(kseq{}(Var'Unds'Gen2:SortKItem{},dotk{}()),kseq{}(inj{SortState{}, SortKItem{}}(LblSt4'LParRParUnds'TEST'Unds'State{}()),dotk{}())))), + \dv{SortBool{}}("true"))), + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(inj{SortState{}, SortKItem{}}(LblSt4'LParRParUnds'TEST'Unds'State{}()),Var'Unds'Rest:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), \top{SortGeneratedTopCell{}}())) + [UNIQUE'Unds'ID{}("8851cf7b2bd43ceeab27edc6ee3d0225022729b8f043423cbfafd8cb9918b7f4"), cool-like{}(), label{}("TEST.CD"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(20,14,23,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody \"requires\" Bool [klabel(#ruleRequires), symbol]")] + +// rule ``(``(``inj{State,KItem}(`St1()_TEST_State`(.KList)) #as _Gen2``~>_DotVar1),_DotVar0)=>``(``(inj{State,KItem}(`St2()_TEST_State`(.KList))~>_DotVar1),_DotVar0) requires `_andBool_`(`_==K_`(X,_Gen2),`_==K_`(X,inj{State,KItem}(`St2()_TEST_State`(.KList)))) ensures #token("true","Bool") [UNIQUE_ID(9ad255bc52598f7afe07089869a434ca47da2a3551f8ade3050c627d0205a489), label(TEST.AB), org.kframework.attributes.Location(Location(12,14,13,45)), org.kframework.attributes.Source(Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [klabel(#ruleRequires), symbol])] + axiom{} \rewrites{SortGeneratedTopCell{}} ( + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(\and{SortKItem{}}(inj{SortState{}, SortKItem{}}(LblSt1'LParRParUnds'TEST'Unds'State{}()),Var'Unds'Gen2:SortKItem{}),Var'Unds'DotVar1:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), + \equals{SortBool{},SortGeneratedTopCell{}}( + Lbl'Unds'andBool'Unds'{}(Lbl'UndsEqlsEqls'K'Unds'{}(VarX:SortK{},kseq{}(Var'Unds'Gen2:SortKItem{},dotk{}())),Lbl'UndsEqlsEqls'K'Unds'{}(VarX:SortK{},kseq{}(inj{SortState{}, SortKItem{}}(LblSt2'LParRParUnds'TEST'Unds'State{}()),dotk{}()))), + \dv{SortBool{}}("true"))), + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(inj{SortState{}, SortKItem{}}(LblSt2'LParRParUnds'TEST'Unds'State{}()),Var'Unds'DotVar1:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), \top{SortGeneratedTopCell{}}())) + [UNIQUE'Unds'ID{}("9ad255bc52598f7afe07089869a434ca47da2a3551f8ade3050c627d0205a489"), label{}("TEST.AB"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(12,14,13,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody \"requires\" Bool [klabel(#ruleRequires), symbol]")] + +// rule ``(``(inj{State,KItem}(`St1()_TEST_State`(.KList))~>_DotVar1),_DotVar0)=>``(``(inj{State,KItem}(`St3()_TEST_State`(.KList))~>_DotVar1),_DotVar0) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(3dedad0aa29aeebf1f0c5f954509427db245a718bb3827cd436adcfd098eb3bd), label(TEST.AC), org.kframework.attributes.Location(Location(16,14,16,41)), org.kframework.attributes.Source(Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{} \rewrites{SortGeneratedTopCell{}} ( + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(inj{SortState{}, SortKItem{}}(LblSt1'LParRParUnds'TEST'Unds'State{}()),Var'Unds'DotVar1:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), + \top{SortGeneratedTopCell{}}()), + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(inj{SortState{}, SortKItem{}}(LblSt3'LParRParUnds'TEST'Unds'State{}()),Var'Unds'DotVar1:SortK{})),Var'Unds'DotVar0:SortGeneratedCounterCell{}), \top{SortGeneratedTopCell{}}())) + [UNIQUE'Unds'ID{}("3dedad0aa29aeebf1f0c5f954509427db245a718bb3827cd436adcfd098eb3bd"), label{}("TEST.AC"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(16,14,16,41)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_=/=Bool_`(B1,B2)=>`notBool_`(`_==Bool_`(B1,B2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(31fe72efcfddcd8588a11d9d10c1b1a9f96ae3da46b647d4cb9d1e8b1bd1654f), org.kframework.attributes.Location(Location(1150,8,1150,57)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + VarB1:SortBool{} + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB2:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'UndsEqlsSlshEqls'Bool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'Bool'Unds'{}(VarB1:SortBool{},VarB2:SortBool{})), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("31fe72efcfddcd8588a11d9d10c1b1a9f96ae3da46b647d4cb9d1e8b1bd1654f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1150,8,1150,57)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_=/=K_`(K1,K2)=>`notBool_`(`_==K_`(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(bccaba7335e4cd77501a0667f2f7b3eb4a2105d5f60d804915dd4b1b08902c0c), org.kframework.attributes.Location(Location(2302,8,2302,45)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK1:SortK{} + ),\and{R} ( + \in{SortK{}, R} ( + X1:SortK{}, + VarK2:SortK{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'UndsEqlsSlshEqls'K'Unds'{}(X0:SortK{},X1:SortK{}), + \and{SortBool{}} ( + LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'K'Unds'{}(VarK1:SortK{},VarK2:SortK{})), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("bccaba7335e4cd77501a0667f2f7b3eb4a2105d5f60d804915dd4b1b08902c0c"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2302,8,2302,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_==K_`(inj{Bool,KItem}(K1),inj{Bool,KItem}(K2))=>`_==Bool_`(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(51ca403f7048793055685a9e3a051e86807f14b2d4901ae81d0b4eedff7b1d77), org.kframework.attributes.Location(Location(2285,8,2285,43)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'UndsEqlsEqls'K'Unds'{}(kseq{}(inj{SortBool{}, SortKItem{}}(VarK1:SortBool{}),dotk{}()),kseq{}(inj{SortBool{}, SortKItem{}}(VarK2:SortBool{}),dotk{}())), + \and{SortBool{}} ( + Lbl'UndsEqlsEqls'Bool'Unds'{}(VarK1:SortBool{},VarK2:SortBool{}), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("51ca403f7048793055685a9e3a051e86807f14b2d4901ae81d0b4eedff7b1d77"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2285,8,2285,43)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_andBool_`(#token("false","Bool") #as _Gen1,_Gen0)=>_Gen1 requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(61fbef33b3611f1cc2aaf3b5e8ddec4a0f434c557278c38461c65c8722743497), org.kframework.attributes.Location(Location(1123,8,1123,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \and{SortBool{}}(\dv{SortBool{}}("false"),Var'Unds'Gen1:SortBool{}) + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + Var'Unds'Gen0:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'andBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + Var'Unds'Gen1:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("61fbef33b3611f1cc2aaf3b5e8ddec4a0f434c557278c38461c65c8722743497"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1123,8,1123,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_andBool_`(B,#token("true","Bool"))=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(e8d4ca75a690151f99f8904b068db555782f5599b11230a9d0b97a71afb6fc98), org.kframework.attributes.Location(Location(1122,8,1122,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'andBool'Unds'{}(VarB:SortBool{},\dv{SortBool{}}("true")), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("e8d4ca75a690151f99f8904b068db555782f5599b11230a9d0b97a71afb6fc98"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1122,8,1122,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_andBool_`(_Gen0,#token("false","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9c183fae7de06f560180386d14d29c609cadf0c98266ce2adbecb50100a1daca), org.kframework.attributes.Location(Location(1124,8,1124,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'andBool'Unds'{}(Var'Unds'Gen0:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("9c183fae7de06f560180386d14d29c609cadf0c98266ce2adbecb50100a1daca"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1124,8,1124,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_andBool_`(#token("true","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5b9db8dba12010819161cc42dadccd0adf0100a47c21f884ae66c0a3d5483a1f), org.kframework.attributes.Location(Location(1121,8,1121,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'andBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5b9db8dba12010819161cc42dadccd0adf0100a47c21f884ae66c0a3d5483a1f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1121,8,1121,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_andThenBool_`(#token("false","Bool") #as _Gen1,_Gen0)=>_Gen1 requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5b729746be7bf2183d9eff138d97078a7c9489def6d8b2e1495c41ce3954997d), org.kframework.attributes.Location(Location(1128,8,1128,36)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \and{SortBool{}}(\dv{SortBool{}}("false"),Var'Unds'Gen1:SortBool{}) + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + Var'Unds'Gen0:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'andThenBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + Var'Unds'Gen1:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5b729746be7bf2183d9eff138d97078a7c9489def6d8b2e1495c41ce3954997d"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1128,8,1128,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_andThenBool_`(K,#token("true","Bool"))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(82ac30b094be9b12206773d87b60274e929a41ca595f4674be1d37eeff873d7c), org.kframework.attributes.Location(Location(1127,8,1127,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'andThenBool'Unds'{}(VarK:SortBool{},\dv{SortBool{}}("true")), + \and{SortBool{}} ( + VarK:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("82ac30b094be9b12206773d87b60274e929a41ca595f4674be1d37eeff873d7c"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1127,8,1127,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_andThenBool_`(_Gen0,#token("false","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(0508592878b546cbc6eeda6ec7b322584eea5c6d6eea3f72be8418fe4f7149b2), org.kframework.attributes.Location(Location(1129,8,1129,36)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'andThenBool'Unds'{}(Var'Unds'Gen0:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("0508592878b546cbc6eeda6ec7b322584eea5c6d6eea3f72be8418fe4f7149b2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1129,8,1129,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_andThenBool_`(#token("true","Bool"),K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(78a3191cbbdec57b0f411f41291076c8124bb0d9b6b57905674b2c6858d78689), org.kframework.attributes.Location(Location(1126,8,1126,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarK:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'andThenBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarK:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("78a3191cbbdec57b0f411f41291076c8124bb0d9b6b57905674b2c6858d78689"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1126,8,1126,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_impliesBool_`(B,#token("false","Bool"))=>`notBool_`(B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(022c562a21d72cedfb795607d2249b8ad14b66399b720b3b2f4a05a1da08df96), org.kframework.attributes.Location(Location(1148,8,1148,45)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'impliesBool'Unds'{}(VarB:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + LblnotBool'Unds'{}(VarB:SortBool{}), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("022c562a21d72cedfb795607d2249b8ad14b66399b720b3b2f4a05a1da08df96"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1148,8,1148,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_impliesBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(99ba64afc26a739953df142ccd4b486bba68107fce8c9aa356d40afa7a988712), org.kframework.attributes.Location(Location(1147,8,1147,39)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'impliesBool'Unds'{}(Var'Unds'Gen0:SortBool{},\dv{SortBool{}}("true")), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("99ba64afc26a739953df142ccd4b486bba68107fce8c9aa356d40afa7a988712"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1147,8,1147,39)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_impliesBool_`(#token("false","Bool"),_Gen0)=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(55bb5c83c9563c712537b95401c0a5c88255fd7cdbd18b2d4358c54aee80660e), org.kframework.attributes.Location(Location(1146,8,1146,40)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("false") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + Var'Unds'Gen0:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'impliesBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("55bb5c83c9563c712537b95401c0a5c88255fd7cdbd18b2d4358c54aee80660e"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1146,8,1146,40)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_impliesBool_`(#token("true","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(da818c43c21c5fb2cced7e02a74b6b4191d323de2967a671b961ad28550f3c7d), org.kframework.attributes.Location(Location(1145,8,1145,36)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'impliesBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("da818c43c21c5fb2cced7e02a74b6b4191d323de2967a671b961ad28550f3c7d"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1145,8,1145,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_orBool_`(B,#token("false","Bool"))=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(d7245713da157cf997438091f92bb78eb51a6cefa568bb0d30560ce08d647f26), org.kframework.attributes.Location(Location(1138,8,1138,32)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'orBool'Unds'{}(VarB:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("d7245713da157cf997438091f92bb78eb51a6cefa568bb0d30560ce08d647f26"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1138,8,1138,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_orBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(47860d52c18a441b229449cd89d5464256137dc32deb5551effbac0482c883f3), org.kframework.attributes.Location(Location(1136,8,1136,34)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'orBool'Unds'{}(Var'Unds'Gen0:SortBool{},\dv{SortBool{}}("true")), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("47860d52c18a441b229449cd89d5464256137dc32deb5551effbac0482c883f3"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1136,8,1136,34)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_orBool_`(#token("false","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(991a3290bc7b6dca75d676a72a848ec6b2bd2827fb0e9626252aa1507394ca1b), org.kframework.attributes.Location(Location(1137,8,1137,32)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("false") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'orBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("991a3290bc7b6dca75d676a72a848ec6b2bd2827fb0e9626252aa1507394ca1b"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1137,8,1137,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_orBool_`(#token("true","Bool"),_Gen0)=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(71744528cdad83bc729990d3af3b544d27b09630b2615ca707dd2fc6ec93e7c2), org.kframework.attributes.Location(Location(1135,8,1135,34)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + Var'Unds'Gen0:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'orBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("71744528cdad83bc729990d3af3b544d27b09630b2615ca707dd2fc6ec93e7c2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1135,8,1135,34)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_orElseBool_`(K,#token("false","Bool"))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(684b0444a1f711d49ff1502423a3346fb26958697423db488b05d25081fc0480), org.kframework.attributes.Location(Location(1143,8,1143,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'orElseBool'Unds'{}(VarK:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + VarK:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("684b0444a1f711d49ff1502423a3346fb26958697423db488b05d25081fc0480"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1143,8,1143,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_orElseBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(c9eccff94ecf6e810c600d4536bf1701485c13c3456c6b98c0cdab0fe7c5af14), org.kframework.attributes.Location(Location(1141,8,1141,33)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'orElseBool'Unds'{}(Var'Unds'Gen0:SortBool{},\dv{SortBool{}}("true")), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("c9eccff94ecf6e810c600d4536bf1701485c13c3456c6b98c0cdab0fe7c5af14"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1141,8,1141,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_orElseBool_`(#token("false","Bool"),K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(eb8c85dac19a5951f694b65269c2b17c80d6d126d6a367958e4a5d736a880ecf), org.kframework.attributes.Location(Location(1142,8,1142,37)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("false") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarK:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'orElseBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarK:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("eb8c85dac19a5951f694b65269c2b17c80d6d126d6a367958e4a5d736a880ecf"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1142,8,1142,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_orElseBool_`(#token("true","Bool"),_Gen0)=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(354bd0860c7f38b59e285c935fd2ea553ebddbabb4973342ad25f0dac6ea7bf6), org.kframework.attributes.Location(Location(1140,8,1140,33)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + Var'Unds'Gen0:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'orElseBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("354bd0860c7f38b59e285c935fd2ea553ebddbabb4973342ad25f0dac6ea7bf6"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1140,8,1140,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_xorBool_`(B,B)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9a6d91cd75cd777b0d4db536b3e4b20578e74fe650e644b55294da95fd2dba7f), org.kframework.attributes.Location(Location(1133,8,1133,38)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + VarB:SortBool{} + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'xorBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("9a6d91cd75cd777b0d4db536b3e4b20578e74fe650e644b55294da95fd2dba7f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1133,8,1133,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_xorBool_`(B,#token("false","Bool"))=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7a2851f9d4ea4bd3f35070ee029fc3bdca36e361f7ee54addeff9d10ddeb7c75), org.kframework.attributes.Location(Location(1132,8,1132,38)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'Unds'xorBool'Unds'{}(VarB:SortBool{},\dv{SortBool{}}("false")), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("7a2851f9d4ea4bd3f35070ee029fc3bdca36e361f7ee54addeff9d10ddeb7c75"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1132,8,1132,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]"), simplification{}()] + +// rule `_xorBool_`(#token("false","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(73513655c09a595907ab9d26d67e27f01d14a3435743b77000c02d10f35c05bf), org.kframework.attributes.Location(Location(1131,8,1131,38)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("false") + ),\and{R} ( + \in{SortBool{}, R} ( + X1:SortBool{}, + VarB:SortBool{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'xorBool'Unds'{}(X0:SortBool{},X1:SortBool{}), + \and{SortBool{}} ( + VarB:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("73513655c09a595907ab9d26d67e27f01d14a3435743b77000c02d10f35c05bf"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1131,8,1131,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `_|Set__SET_Set_Set_Set`(S1,S2)=>`_Set_`(S1,`Set:difference`(S2,S1)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(e9a710d8d1ca5c799420161879cbbff926de45a5bddd820d646f51d43eb67e62), concrete, org.kframework.attributes.Location(Location(749,8,749,45)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortSet{}, R} ( + X0:SortSet{}, + VarS1:SortSet{} + ),\and{R} ( + \in{SortSet{}, R} ( + X1:SortSet{}, + VarS2:SortSet{} + ), + \top{R} () + ))), + \equals{SortSet{},R} ( + Lbl'UndsPipe'Set'UndsUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(X0:SortSet{},X1:SortSet{}), + \and{SortSet{}} ( + Lbl'Unds'Set'Unds'{}(VarS1:SortSet{},LblSet'Coln'difference{}(VarS2:SortSet{},VarS1:SortSet{})), + \top{SortSet{}}()))) + [UNIQUE'Unds'ID{}("e9a710d8d1ca5c799420161879cbbff926de45a5bddd820d646f51d43eb67e62"), concrete{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(749,8,749,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule getGeneratedCounterCell(``(_DotVar0,Cell))=>Cell requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9ef5eb9b9e6bbd7436911fad20615821f61e06e742dd27773001ab0664bd1de3)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortGeneratedTopCell{}, R} ( + X0:SortGeneratedTopCell{}, + Lbl'-LT-'generatedTop'-GT-'{}(Var'Unds'DotVar0:SortKCell{},VarCell:SortGeneratedCounterCell{}) + ), + \top{R} () + )), + \equals{SortGeneratedCounterCell{},R} ( + LblgetGeneratedCounterCell{}(X0:SortGeneratedTopCell{}), + \and{SortGeneratedCounterCell{}} ( + VarCell:SortGeneratedCounterCell{}, + \top{SortGeneratedCounterCell{}}()))) + [UNIQUE'Unds'ID{}("9ef5eb9b9e6bbd7436911fad20615821f61e06e742dd27773001ab0664bd1de3")] + +// rule initGeneratedCounterCell(.KList)=>``(#token("0","Int")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5de11f6b50c4684c0e05b773f809d756f4ce9c03a4f24e23a9cddaf3fa31f553), initializer] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + + \top{R} () + ), + \equals{SortGeneratedCounterCell{},R} ( + LblinitGeneratedCounterCell{}(), + \and{SortGeneratedCounterCell{}} ( + Lbl'-LT-'generatedCounter'-GT-'{}(\dv{SortInt{}}("0")), + \top{SortGeneratedCounterCell{}}()))) + [UNIQUE'Unds'ID{}("5de11f6b50c4684c0e05b773f809d756f4ce9c03a4f24e23a9cddaf3fa31f553"), initializer{}()] + +// rule initGeneratedTopCell(Init)=>``(initKCell(Init),initGeneratedCounterCell(.KList)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4cbc9d1da6e6bfe3605113d64379a38394b46b474e41d7bf884f8912546543b1), initializer] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortMap{}, R} ( + X0:SortMap{}, + VarInit:SortMap{} + ), + \top{R} () + )), + \equals{SortGeneratedTopCell{},R} ( + LblinitGeneratedTopCell{}(X0:SortMap{}), + \and{SortGeneratedTopCell{}} ( + Lbl'-LT-'generatedTop'-GT-'{}(LblinitKCell{}(VarInit:SortMap{}),LblinitGeneratedCounterCell{}()), + \top{SortGeneratedTopCell{}}()))) + [UNIQUE'Unds'ID{}("4cbc9d1da6e6bfe3605113d64379a38394b46b474e41d7bf884f8912546543b1"), initializer{}()] + +// rule initKCell(Init)=>``(inj{State,KItem}(`project:State`(`Map:lookup`(Init,inj{KConfigVar,KItem}(#token("$PGM","KConfigVar")))))) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(64786fd44ad73c13ddf8b9aaecebe5256c7a4102003fdf068a91202656965b95), initializer] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortMap{}, R} ( + X0:SortMap{}, + VarInit:SortMap{} + ), + \top{R} () + )), + \equals{SortKCell{},R} ( + LblinitKCell{}(X0:SortMap{}), + \and{SortKCell{}} ( + Lbl'-LT-'k'-GT-'{}(kseq{}(inj{SortState{}, SortKItem{}}(Lblproject'Coln'State{}(kseq{}(LblMap'Coln'lookup{}(VarInit:SortMap{},inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$PGM"))),dotk{}()))),dotk{}())), + \top{SortKCell{}}()))) + [UNIQUE'Unds'ID{}("64786fd44ad73c13ddf8b9aaecebe5256c7a4102003fdf068a91202656965b95"), initializer{}()] + +// rule isBool(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7f8273ebd616814dbf1acdd96b9534fbaa5b0491bfd05a61916e5015ad4a37ab), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortBool{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortBool{}, SortKItem{}}(Var'Unds'Gen0:SortBool{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisBool{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("7f8273ebd616814dbf1acdd96b9534fbaa5b0491bfd05a61916e5015ad4a37ab"), owise{}()] + +// rule isBool(inj{Bool,KItem}(Bool))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(dadad716b2f6a82fa4b2cc8f903a1b8f1f6e8cfa63f18b72a7cb35110bdcff77)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortBool{}, SortKItem{}}(VarBool:SortBool{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisBool{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("dadad716b2f6a82fa4b2cc8f903a1b8f1f6e8cfa63f18b72a7cb35110bdcff77")] + +// rule isGeneratedCounterCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7d501e1637f26769ad3b9439efef0285daa79523b0d071b3a792972ce92e4fe2), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortGeneratedCounterCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCell{}, SortKItem{}}(Var'Unds'Gen1:SortGeneratedCounterCell{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisGeneratedCounterCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("7d501e1637f26769ad3b9439efef0285daa79523b0d071b3a792972ce92e4fe2"), owise{}()] + +// rule isGeneratedCounterCell(inj{GeneratedCounterCell,KItem}(GeneratedCounterCell))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f7b6a3dbee5a80d5eeba727f40009876995660d4052a45fc50c55f88c5fc1a7c)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCell{}, SortKItem{}}(VarGeneratedCounterCell:SortGeneratedCounterCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisGeneratedCounterCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("f7b6a3dbee5a80d5eeba727f40009876995660d4052a45fc50c55f88c5fc1a7c")] + +// rule isGeneratedCounterCellOpt(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(55e7759c7640aa41fef8271d53c6dd8668aa497704539a65577604ada709c5df), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortGeneratedCounterCellOpt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCellOpt{}, SortKItem{}}(Var'Unds'Gen1:SortGeneratedCounterCellOpt{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisGeneratedCounterCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("55e7759c7640aa41fef8271d53c6dd8668aa497704539a65577604ada709c5df"), owise{}()] + +// rule isGeneratedCounterCellOpt(inj{GeneratedCounterCellOpt,KItem}(GeneratedCounterCellOpt))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(a4ff3e170677e099d4b28085658942cb10fcf871aa99abcdf73927596c180f12)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCellOpt{}, SortKItem{}}(VarGeneratedCounterCellOpt:SortGeneratedCounterCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisGeneratedCounterCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("a4ff3e170677e099d4b28085658942cb10fcf871aa99abcdf73927596c180f12")] + +// rule isGeneratedTopCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ec16314688c4b2d204af490e243a3e83a2e82fbc74988c3574b997cc9ca56816), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortGeneratedTopCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCell{}, SortKItem{}}(Var'Unds'Gen1:SortGeneratedTopCell{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisGeneratedTopCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("ec16314688c4b2d204af490e243a3e83a2e82fbc74988c3574b997cc9ca56816"), owise{}()] + +// rule isGeneratedTopCell(inj{GeneratedTopCell,KItem}(GeneratedTopCell))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(3bcf423225700e329d0533cfd806eb9bab91f9d8de0979c8d8e381fe5d076bb2)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCell{}, SortKItem{}}(VarGeneratedTopCell:SortGeneratedTopCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisGeneratedTopCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("3bcf423225700e329d0533cfd806eb9bab91f9d8de0979c8d8e381fe5d076bb2")] + +// rule isGeneratedTopCellFragment(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(1f022b25cc5a2adbe99fbae6b50007c803258a5749eb01e05c86096f7b35c0df), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortGeneratedTopCellFragment{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCellFragment{}, SortKItem{}}(Var'Unds'Gen0:SortGeneratedTopCellFragment{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisGeneratedTopCellFragment{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("1f022b25cc5a2adbe99fbae6b50007c803258a5749eb01e05c86096f7b35c0df"), owise{}()] + +// rule isGeneratedTopCellFragment(inj{GeneratedTopCellFragment,KItem}(GeneratedTopCellFragment))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(559f2cdc0ab425bb065cc3174f4a1af4d9ca834f762a814cf3dfbf9a9d7f8271)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCellFragment{}, SortKItem{}}(VarGeneratedTopCellFragment:SortGeneratedTopCellFragment{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisGeneratedTopCellFragment{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("559f2cdc0ab425bb065cc3174f4a1af4d9ca834f762a814cf3dfbf9a9d7f8271")] + +// rule isInt(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5c9850befff40cc79151dbc5a8999b5ffaad767f244ed97f9f29b56b7170bf24), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortInt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortInt{}, SortKItem{}}(Var'Unds'Gen0:SortInt{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisInt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5c9850befff40cc79151dbc5a8999b5ffaad767f244ed97f9f29b56b7170bf24"), owise{}()] + +// rule isInt(inj{Int,KItem}(Int))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(92664aa821c8898ff16b4e72ad0bdf363f755c7660d28dcb69c129a2c94bc6b5)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortInt{}, SortKItem{}}(VarInt:SortInt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisInt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("92664aa821c8898ff16b4e72ad0bdf363f755c7660d28dcb69c129a2c94bc6b5")] + +// rule isK(K)=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(16ff77cff0ef50026a8b3f4614b87bda465701918596b7ad2280baffff56f847)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisK{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("16ff77cff0ef50026a8b3f4614b87bda465701918596b7ad2280baffff56f847")] + +// rule isKCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(1668e9146ab7dd7867682198dd9dddc0c7c88d8f9fad9ed2366229fc4db18733), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortKCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCell{}, SortKItem{}}(Var'Unds'Gen0:SortKCell{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisKCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("1668e9146ab7dd7867682198dd9dddc0c7c88d8f9fad9ed2366229fc4db18733"), owise{}()] + +// rule isKCell(inj{KCell,KItem}(KCell))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2695222b1238f711f8a356c0a1bc0ac418d7bd78fd3282e7c60882e2631a46df)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCell{}, SortKItem{}}(VarKCell:SortKCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisKCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("2695222b1238f711f8a356c0a1bc0ac418d7bd78fd3282e7c60882e2631a46df")] + +// rule isKCellOpt(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(fa44a9c94132ade195fc2cb566fa82471e4592c977a49183ac2142c5062701ca), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortKCellOpt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCellOpt{}, SortKItem{}}(Var'Unds'Gen1:SortKCellOpt{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisKCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("fa44a9c94132ade195fc2cb566fa82471e4592c977a49183ac2142c5062701ca"), owise{}()] + +// rule isKCellOpt(inj{KCellOpt,KItem}(KCellOpt))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(1516473b1e153a368c273997543a4378ad451e5e828db8e289f4447f7e5228a5)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCellOpt{}, SortKItem{}}(VarKCellOpt:SortKCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisKCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("1516473b1e153a368c273997543a4378ad451e5e828db8e289f4447f7e5228a5")] + +// rule isKConfigVar(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f1c02853e001635e66a06d14d1cd322a996f4acbe38a7f9c88df6c97ea6a4677), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortKConfigVar{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKConfigVar{}, SortKItem{}}(Var'Unds'Gen1:SortKConfigVar{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisKConfigVar{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("f1c02853e001635e66a06d14d1cd322a996f4acbe38a7f9c88df6c97ea6a4677"), owise{}()] + +// rule isKConfigVar(inj{KConfigVar,KItem}(KConfigVar))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(0ef0a00bb321f2c2a62a3239327de70ecb8e907a950cd20034c46b84e040ebcd)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKConfigVar{}, SortKItem{}}(VarKConfigVar:SortKConfigVar{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisKConfigVar{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("0ef0a00bb321f2c2a62a3239327de70ecb8e907a950cd20034c46b84e040ebcd")] + +// rule isKItem(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f766beabd3e632a98e221201d003f26f45f1feef2aff6da0ab07edde06a5d99d), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortKItem{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(Var'Unds'Gen1:SortKItem{},dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisKItem{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("f766beabd3e632a98e221201d003f26f45f1feef2aff6da0ab07edde06a5d99d"), owise{}()] + +// rule isKItem(KItem)=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ed3c25a7dab5e5fbc101589e2fa74ac91aa107f051d22a01378222d08643373c)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(VarKItem:SortKItem{},dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisKItem{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("ed3c25a7dab5e5fbc101589e2fa74ac91aa107f051d22a01378222d08643373c")] + +// rule isList(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(0b6d1ffc254fbf57473abfe22e81bcfa646561c43d4e2cc175eab60cfb2b68aa), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortList{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortList{}, SortKItem{}}(Var'Unds'Gen0:SortList{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisList{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("0b6d1ffc254fbf57473abfe22e81bcfa646561c43d4e2cc175eab60cfb2b68aa"), owise{}()] + +// rule isList(inj{List,KItem}(List))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7d4dddf5bbdb61cfd11fb9be1071be7bd551cf186607cf6f493cfade3221c446)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortList{}, SortKItem{}}(VarList:SortList{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisList{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("7d4dddf5bbdb61cfd11fb9be1071be7bd551cf186607cf6f493cfade3221c446")] + +// rule isMap(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5da72349a323db3019243ab26f08b728d336c1a52aecaa0bcb7de4adae14bd71), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortMap{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortMap{}, SortKItem{}}(Var'Unds'Gen1:SortMap{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisMap{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5da72349a323db3019243ab26f08b728d336c1a52aecaa0bcb7de4adae14bd71"), owise{}()] + +// rule isMap(inj{Map,KItem}(Map))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4879c0fcf6b7d7f3d6b751e4f460f8dced005a44ae5ff600cffcea784cf58795)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortMap{}, SortKItem{}}(VarMap:SortMap{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisMap{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("4879c0fcf6b7d7f3d6b751e4f460f8dced005a44ae5ff600cffcea784cf58795")] + +// rule isSet(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4bb33358689dc4ec69171f146dc69c169560a878b09ca872d2c4da9e2dbd0d5e), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortSet{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortSet{}, SortKItem{}}(Var'Unds'Gen0:SortSet{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisSet{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("4bb33358689dc4ec69171f146dc69c169560a878b09ca872d2c4da9e2dbd0d5e"), owise{}()] + +// rule isSet(inj{Set,KItem}(Set))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f205bc460bdb728b4c3458643699be30d519db4d8b13e80e2c27082b9e846e80)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortSet{}, SortKItem{}}(VarSet:SortSet{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisSet{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("f205bc460bdb728b4c3458643699be30d519db4d8b13e80e2c27082b9e846e80")] + +// rule isState(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5a443f43dec1c3326490f7dc28fc3c08292a4a7d3e3e53a892b792373d54d2ab), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortState{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortState{}, SortKItem{}}(Var'Unds'Gen0:SortState{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisState{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5a443f43dec1c3326490f7dc28fc3c08292a4a7d3e3e53a892b792373d54d2ab"), owise{}()] + +// rule isState(inj{State,KItem}(State))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ceb9d51d5c7c5b25ab9ccf22a73cd7052c451d3691001c59dcc1cd61e2836719)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortState{}, SortKItem{}}(VarState:SortState{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisState{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("ceb9d51d5c7c5b25ab9ccf22a73cd7052c451d3691001c59dcc1cd61e2836719")] + +// rule `notBool_`(#token("false","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(17ebc68421572b8ebe609c068fb49cbb6cbbe3246e2142257ad8befdda38f415), org.kframework.attributes.Location(Location(1119,8,1119,29)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("false") + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblnotBool'Unds'{}(X0:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("17ebc68421572b8ebe609c068fb49cbb6cbbe3246e2142257ad8befdda38f415"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1119,8,1119,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `notBool_`(#token("true","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(53fc758ece1ff16581673016dfacc556cc30fcf6b3c35b586f001d76a1f9336c), org.kframework.attributes.Location(Location(1118,8,1118,29)), org.kframework.attributes.Source(Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortBool{}, R} ( + X0:SortBool{}, + \dv{SortBool{}}("true") + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblnotBool'Unds'{}(X0:SortBool{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("53fc758ece1ff16581673016dfacc556cc30fcf6b3c35b586f001d76a1f9336c"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1118,8,1118,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/rkjjnyvv529xs3n7659ml55grcch8nb8-k-6.1.26-05c2ef89170d461627ad40f9bd95ecb1dc4e7a9f/include/kframework/builtin/domains.md)"), org'Stop'kframework'Stop'definition'Stop'Production{}("syntax #RuleContent ::= #RuleBody [klabel(#ruleNoConditions), symbol]")] + +// rule `project:Bool`(inj{Bool,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5872f0d5b8131216db7bc41e2c3a423e55f4b8581589fcbd1bf93b2ca6862d54), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortBool{}, SortKItem{}}(VarK:SortBool{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + Lblproject'Coln'Bool{}(X0:SortK{}), + \and{SortBool{}} ( + VarK:SortBool{}, + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5872f0d5b8131216db7bc41e2c3a423e55f4b8581589fcbd1bf93b2ca6862d54"), projection{}()] + +// rule `project:GeneratedCounterCell`(inj{GeneratedCounterCell,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(63453db9d9aa121b63bb877e2fa4998d399ef82d2a1e4b90f87a32ba55401217), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCell{}, SortKItem{}}(VarK:SortGeneratedCounterCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortGeneratedCounterCell{},R} ( + Lblproject'Coln'GeneratedCounterCell{}(X0:SortK{}), + \and{SortGeneratedCounterCell{}} ( + VarK:SortGeneratedCounterCell{}, + \top{SortGeneratedCounterCell{}}()))) + [UNIQUE'Unds'ID{}("63453db9d9aa121b63bb877e2fa4998d399ef82d2a1e4b90f87a32ba55401217"), projection{}()] + +// rule `project:GeneratedCounterCellOpt`(inj{GeneratedCounterCellOpt,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9325a900267ae528f7cd09f3b44b825dd9ff344c38d38383c08fa697cc67efca), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedCounterCellOpt{}, SortKItem{}}(VarK:SortGeneratedCounterCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortGeneratedCounterCellOpt{},R} ( + Lblproject'Coln'GeneratedCounterCellOpt{}(X0:SortK{}), + \and{SortGeneratedCounterCellOpt{}} ( + VarK:SortGeneratedCounterCellOpt{}, + \top{SortGeneratedCounterCellOpt{}}()))) + [UNIQUE'Unds'ID{}("9325a900267ae528f7cd09f3b44b825dd9ff344c38d38383c08fa697cc67efca"), projection{}()] + +// rule `project:GeneratedTopCell`(inj{GeneratedTopCell,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(b0fabd8c7c81fe08ebd569aff59747d357e441ae1fcd05d9d594d57e38e3d55e), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCell{}, SortKItem{}}(VarK:SortGeneratedTopCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortGeneratedTopCell{},R} ( + Lblproject'Coln'GeneratedTopCell{}(X0:SortK{}), + \and{SortGeneratedTopCell{}} ( + VarK:SortGeneratedTopCell{}, + \top{SortGeneratedTopCell{}}()))) + [UNIQUE'Unds'ID{}("b0fabd8c7c81fe08ebd569aff59747d357e441ae1fcd05d9d594d57e38e3d55e"), projection{}()] + +// rule `project:GeneratedTopCellFragment`(inj{GeneratedTopCellFragment,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2084fac322aa142a07f881814b8a286bf62d5c6d05777b7aa715ccc534cf9a42), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortGeneratedTopCellFragment{}, SortKItem{}}(VarK:SortGeneratedTopCellFragment{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortGeneratedTopCellFragment{},R} ( + Lblproject'Coln'GeneratedTopCellFragment{}(X0:SortK{}), + \and{SortGeneratedTopCellFragment{}} ( + VarK:SortGeneratedTopCellFragment{}, + \top{SortGeneratedTopCellFragment{}}()))) + [UNIQUE'Unds'ID{}("2084fac322aa142a07f881814b8a286bf62d5c6d05777b7aa715ccc534cf9a42"), projection{}()] + +// rule `project:Int`(inj{Int,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f316b871091516c401f1d2382cc5f66322602b782c7b01e1aeb6c2ddab50e24b), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortInt{}, SortKItem{}}(VarK:SortInt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortInt{},R} ( + Lblproject'Coln'Int{}(X0:SortK{}), + \and{SortInt{}} ( + VarK:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("f316b871091516c401f1d2382cc5f66322602b782c7b01e1aeb6c2ddab50e24b"), projection{}()] + +// rule `project:K`(K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(25b529ddcefd25ef63f99a62040145ef27638e7679ea9202218fe14be98dff3a), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + )), + \equals{SortK{},R} ( + Lblproject'Coln'K{}(X0:SortK{}), + \and{SortK{}} ( + VarK:SortK{}, + \top{SortK{}}()))) + [UNIQUE'Unds'ID{}("25b529ddcefd25ef63f99a62040145ef27638e7679ea9202218fe14be98dff3a"), projection{}()] + +// rule `project:KCell`(inj{KCell,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(894c13c4c410f11e35bc3781505aeddde4ff400ddda1daf8b35259dbf0de9a24), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCell{}, SortKItem{}}(VarK:SortKCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortKCell{},R} ( + Lblproject'Coln'KCell{}(X0:SortK{}), + \and{SortKCell{}} ( + VarK:SortKCell{}, + \top{SortKCell{}}()))) + [UNIQUE'Unds'ID{}("894c13c4c410f11e35bc3781505aeddde4ff400ddda1daf8b35259dbf0de9a24"), projection{}()] + +// rule `project:KCellOpt`(inj{KCellOpt,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f684dd78d97feadf0cbcb3cbb8892e0842f137c7b29a904cb2f3fc9755b29b30), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCellOpt{}, SortKItem{}}(VarK:SortKCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortKCellOpt{},R} ( + Lblproject'Coln'KCellOpt{}(X0:SortK{}), + \and{SortKCellOpt{}} ( + VarK:SortKCellOpt{}, + \top{SortKCellOpt{}}()))) + [UNIQUE'Unds'ID{}("f684dd78d97feadf0cbcb3cbb8892e0842f137c7b29a904cb2f3fc9755b29b30"), projection{}()] + +// rule `project:KItem`(K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(1242e49c17638c9a66a35e3bb8c237288f7e9aa9a6499101e8cdc55be320cd29), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(VarK:SortKItem{},dotk{}()) + ), + \top{R} () + )), + \equals{SortKItem{},R} ( + Lblproject'Coln'KItem{}(X0:SortK{}), + \and{SortKItem{}} ( + VarK:SortKItem{}, + \top{SortKItem{}}()))) + [UNIQUE'Unds'ID{}("1242e49c17638c9a66a35e3bb8c237288f7e9aa9a6499101e8cdc55be320cd29"), projection{}()] + +// rule `project:List`(inj{List,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2b75eac5a59779d336e6cf9632bf9ba7d67286f322e753108b34e62f2443efe5), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortList{}, SortKItem{}}(VarK:SortList{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortList{},R} ( + Lblproject'Coln'List{}(X0:SortK{}), + \and{SortList{}} ( + VarK:SortList{}, + \top{SortList{}}()))) + [UNIQUE'Unds'ID{}("2b75eac5a59779d336e6cf9632bf9ba7d67286f322e753108b34e62f2443efe5"), projection{}()] + +// rule `project:Map`(inj{Map,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(031237d4aae58d86914d6370d37ccd15f4738378ed780333c59cc81b4f7bc598), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortMap{}, SortKItem{}}(VarK:SortMap{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortMap{},R} ( + Lblproject'Coln'Map{}(X0:SortK{}), + \and{SortMap{}} ( + VarK:SortMap{}, + \top{SortMap{}}()))) + [UNIQUE'Unds'ID{}("031237d4aae58d86914d6370d37ccd15f4738378ed780333c59cc81b4f7bc598"), projection{}()] + +// rule `project:Set`(inj{Set,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(0e7f5070c993161786e314f7199d985afebac9e07b5c784f6f623780c60ce9d0), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortSet{}, SortKItem{}}(VarK:SortSet{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortSet{},R} ( + Lblproject'Coln'Set{}(X0:SortK{}), + \and{SortSet{}} ( + VarK:SortSet{}, + \top{SortSet{}}()))) + [UNIQUE'Unds'ID{}("0e7f5070c993161786e314f7199d985afebac9e07b5c784f6f623780c60ce9d0"), projection{}()] + +// rule `project:State`(inj{State,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9968995cc03f80d7d1a1b240f2de82b38e3967ff61d5479b20db6443a61ffcba), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortState{}, SortKItem{}}(VarK:SortState{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortState{},R} ( + Lblproject'Coln'State{}(X0:SortK{}), + \and{SortState{}} ( + VarK:SortState{}, + \top{SortState{}}()))) + [UNIQUE'Unds'ID{}("9968995cc03f80d7d1a1b240f2de82b38e3967ff61d5479b20db6443a61ffcba"), projection{}()] + +// rule #Ceil{Map,#SortParam}(`_Map_`(`_|->_`(@K0,@K1),@Rest))=>#And{#SortParam}(#Equals{Bool,#SortParam}(`_in_keys(_)_MAP_Bool_KItem_Map`(@K0,@Rest),#token("false","Bool")),#And{#SortParam}(#Top{#SortParam}(.KList),#Ceil{KItem,#SortParam}(@K1))) requires #token("true","Bool") ensures #token("true","Bool") [simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortMap{}, Q0}(Lbl'Unds'Map'Unds'{}(Lbl'UndsPipe'-'-GT-Unds'{}(@VarK0:SortKItem{},@VarK1:SortKItem{}),@VarRest:SortMap{})), + \and{Q0} ( + \and{Q0}(\equals{SortBool{}, Q0}(Lbl'Unds'in'Unds'keys'LParUndsRParUnds'MAP'Unds'Bool'Unds'KItem'Unds'Map{}(@VarK0:SortKItem{},@VarRest:SortMap{}),\dv{SortBool{}}("false")),\and{Q0}(\top{Q0}(),\ceil{SortKItem{}, Q0}(@VarK1:SortKItem{}))), + \top{Q0}()))) + [simplification{}(), sortParams{}("{Q0}")] + +endmodule [org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1,1,26,10)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/jost/work/RV/code/hs-backend-booster/test/rpc-integration/resources/equalK-conditions.k)")] diff --git a/test/rpc-integration/test-diamond/response-infeasible-branching.booster-dev b/test/rpc-integration/test-diamond/response-infeasible-branching.booster-dev index 87dea2bac..ce99ad8ff 100644 --- a/test/rpc-integration/test-diamond/response-infeasible-branching.booster-dev +++ b/test/rpc-integration/test-diamond/response-infeasible-branching.booster-dev @@ -2,8 +2,9 @@ "jsonrpc": "2.0", "id": 1, "result": { - "reason": "branching", - "depth": 1, + "reason": "terminal-rule", + "depth": 3, + "rule": "TEST.BD", "state": { "term": { "format": "KORE", @@ -46,7 +47,7 @@ "name": "SortState", "args": [] }, - "value": "a" + "value": "d" } ] }, @@ -146,358 +147,6 @@ } } } - }, - "next-states": [ - { - "term": { - "format": "KORE", - "version": 1, - "term": { - "tag": "App", - "name": "Lbl'-LT-'generatedTop'-GT-'", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "Lbl'-LT-'k'-GT-'", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "kseq", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "inj", - "sorts": [ - { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - { - "tag": "SortApp", - "name": "SortKItem", - "args": [] - } - ], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - "value": "c" - } - ] - }, - { - "tag": "App", - "name": "dotk", - "sorts": [], - "args": [] - } - ] - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'int'-GT-'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "X", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'generatedCounter'-GT-'", - "sorts": [], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" - } - ] - } - ] - } - }, - "predicate": { - "format": "KORE", - "version": 1, - "term": { - "tag": "And", - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "patterns": [ - { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "X", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "42" - } - ] - } - }, - { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "LblnotBool'Unds'", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "X", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "42" - } - ] - } - ] - } - } - ] - } - } - }, - { - "term": { - "format": "KORE", - "version": 1, - "term": { - "tag": "App", - "name": "Lbl'-LT-'generatedTop'-GT-'", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "Lbl'-LT-'k'-GT-'", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "kseq", - "sorts": [], - "args": [ - { - "tag": "App", - "name": "inj", - "sorts": [ - { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - { - "tag": "SortApp", - "name": "SortKItem", - "args": [] - } - ], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - "value": "b" - } - ] - }, - { - "tag": "App", - "name": "dotk", - "sorts": [], - "args": [] - } - ] - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'int'-GT-'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "X", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'generatedCounter'-GT-'", - "sorts": [], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" - } - ] - } - ] - } - }, - "predicate": { - "format": "KORE", - "version": 1, - "term": { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "X", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "42" - } - ] - } - } - } - } - ] + } } } \ No newline at end of file diff --git a/test/rpc-integration/test-vacuous/response-vacuous-at-branch.kore-rpc-dev b/test/rpc-integration/test-equalK-conditions/response-a.json similarity index 72% rename from test/rpc-integration/test-vacuous/response-vacuous-at-branch.kore-rpc-dev rename to test/rpc-integration/test-equalK-conditions/response-a.json index 6632bfe85..4aa6cc09e 100644 --- a/test/rpc-integration/test-vacuous/response-vacuous-at-branch.kore-rpc-dev +++ b/test/rpc-integration/test-equalK-conditions/response-a.json @@ -2,8 +2,8 @@ "jsonrpc": "2.0", "id": 1, "result": { - "reason": "vacuous", - "depth": 0, + "reason": "stuck", + "depth": 2, "state": { "term": { "format": "KORE", @@ -40,13 +40,10 @@ ], "args": [ { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - "value": "init" + "tag": "App", + "name": "LblSt4'LParRParUnds'TEST'Unds'State", + "sorts": [], + "args": [] } ] }, @@ -60,22 +57,6 @@ } ] }, - { - "tag": "App", - "name": "Lbl'-LT-'int'-GT-'", - "sorts": [], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" - } - ] - }, { "tag": "App", "name": "Lbl'-LT-'generatedCounter'-GT-'", diff --git a/test/rpc-integration/test-equalK-conditions/response-c.json b/test/rpc-integration/test-equalK-conditions/response-c.json new file mode 100644 index 000000000..e9bb317bd --- /dev/null +++ b/test/rpc-integration/test-equalK-conditions/response-c.json @@ -0,0 +1,81 @@ +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "reason": "stuck", + "depth": 1, + "state": { + "term": { + "format": "KORE", + "version": 1, + "term": { + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "Lbl'-LT-'k'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "kseq", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "inj", + "sorts": [ + { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + { + "tag": "SortApp", + "name": "SortKItem", + "args": [] + } + ], + "args": [ + { + "tag": "App", + "name": "LblSt4'LParRParUnds'TEST'Unds'State", + "sorts": [], + "args": [] + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + ] + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/test/rpc-integration/test-equalK-conditions/state-a.execute b/test/rpc-integration/test-equalK-conditions/state-a.execute new file mode 120000 index 000000000..d697c375e --- /dev/null +++ b/test/rpc-integration/test-equalK-conditions/state-a.execute @@ -0,0 +1 @@ +state-a.json \ No newline at end of file diff --git a/test/rpc-integration/test-equalK-conditions/state-a.json b/test/rpc-integration/test-equalK-conditions/state-a.json new file mode 100644 index 000000000..0afc47e72 --- /dev/null +++ b/test/rpc-integration/test-equalK-conditions/state-a.json @@ -0,0 +1,71 @@ +{ + "format": "KORE", + "version": 1, + "term": { + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "Lbl'-LT-'k'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "kseq", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "inj", + "sorts": [ + { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + { + "tag": "SortApp", + "name": "SortKItem", + "args": [] + } + ], + "args": [ + { + "tag": "App", + "name": "LblSt1'LParRParUnds'TEST'Unds'State", + "sorts": [], + "args": [] + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + ] + } + ] + } +} diff --git a/test/rpc-integration/test-equalK-conditions/state-c.execute b/test/rpc-integration/test-equalK-conditions/state-c.execute new file mode 120000 index 000000000..d5925fce5 --- /dev/null +++ b/test/rpc-integration/test-equalK-conditions/state-c.execute @@ -0,0 +1 @@ +state-c.json \ No newline at end of file diff --git a/test/rpc-integration/test-equalK-conditions/state-c.json b/test/rpc-integration/test-equalK-conditions/state-c.json new file mode 100644 index 000000000..f71d66771 --- /dev/null +++ b/test/rpc-integration/test-equalK-conditions/state-c.json @@ -0,0 +1,71 @@ +{ + "format": "KORE", + "version": 1, + "term": { + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "Lbl'-LT-'k'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "kseq", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "inj", + "sorts": [ + { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + { + "tag": "SortApp", + "name": "SortKItem", + "args": [] + } + ], + "args": [ + { + "tag": "App", + "name": "LblSt3'LParRParUnds'TEST'Unds'State", + "sorts": [], + "args": [] + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + ] + } + ] + } +} diff --git a/test/rpc-integration/test-substitutions/response-concrete-substitution.booster-dev b/test/rpc-integration/test-substitutions/response-concrete-substitution.booster-dev new file mode 100644 index 000000000..379ed33cc --- /dev/null +++ b/test/rpc-integration/test-substitutions/response-concrete-substitution.booster-dev @@ -0,0 +1,168 @@ +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "reason": "terminal-rule", + "depth": 1, + "rule": "TEST.concrete-subst", + "state": { + "term": { + "format": "KORE", + "version": 1, + "term": { + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "Lbl'-LT-'k'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "kseq", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "inj", + "sorts": [ + { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + { + "tag": "SortApp", + "name": "SortKItem", + "args": [] + } + ], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + "value": "a" + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "X", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'jnt'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Y", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + ] + } + ] + } + }, + "predicate": { + "format": "KORE", + "version": 1, + "term": { + "tag": "Equals", + "argSort": { + "tag": "SortApp", + "name": "SortBool", + "args": [] + }, + "sort": { + "tag": "SortApp", + "name": "SortGeneratedTopCell", + "args": [] + }, + "first": { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortBool", + "args": [] + }, + "value": "true" + }, + "second": { + "tag": "App", + "name": "Lbl'UndsEqlsEqls'Int'Unds'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "X", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "42" + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/test/rpc-integration/test-substitutions/response-concrete-substitution.json b/test/rpc-integration/test-substitutions/response-concrete-substitution.json index b017f7dd2..f74ada34a 100644 --- a/test/rpc-integration/test-substitutions/response-concrete-substitution.json +++ b/test/rpc-integration/test-substitutions/response-concrete-substitution.json @@ -149,4 +149,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/rpc-integration/test-substitutions/response-symbolic-substitution.booster-dev b/test/rpc-integration/test-substitutions/response-symbolic-substitution.booster-dev new file mode 100644 index 000000000..5cf51a99b --- /dev/null +++ b/test/rpc-integration/test-substitutions/response-symbolic-substitution.booster-dev @@ -0,0 +1,168 @@ +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "reason": "terminal-rule", + "depth": 1, + "rule": "TEST.symbolic-subst", + "state": { + "term": { + "format": "KORE", + "version": 1, + "term": { + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "Lbl'-LT-'k'-GT-'", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "kseq", + "sorts": [], + "args": [ + { + "tag": "App", + "name": "inj", + "sorts": [ + { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + { + "tag": "SortApp", + "name": "SortKItem", + "args": [] + } + ], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + "value": "a" + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "X", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'jnt'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Y", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + ] + } + ] + } + }, + "predicate": { + "format": "KORE", + "version": 1, + "term": { + "tag": "Equals", + "argSort": { + "tag": "SortApp", + "name": "SortBool", + "args": [] + }, + "sort": { + "tag": "SortApp", + "name": "SortGeneratedTopCell", + "args": [] + }, + "first": { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortBool", + "args": [] + }, + "value": "true" + }, + "second": { + "tag": "App", + "name": "Lbl'UndsEqlsEqls'Int'Unds'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "X", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + { + "tag": "EVar", + "name": "Y", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/test/rpc-integration/test-substitutions/response-symbolic-substitution.json b/test/rpc-integration/test-substitutions/response-symbolic-substitution.json index 6d10cc7e7..1e69dfe38 100644 --- a/test/rpc-integration/test-substitutions/response-symbolic-substitution.json +++ b/test/rpc-integration/test-substitutions/response-symbolic-substitution.json @@ -149,4 +149,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/rpc-integration/test-vacuous/response-vacuous-at-branch.json b/test/rpc-integration/test-vacuous/response-vacuous-at-branch.json index 2f8ac02ff..6632bfe85 100644 --- a/test/rpc-integration/test-vacuous/response-vacuous-at-branch.json +++ b/test/rpc-integration/test-vacuous/response-vacuous-at-branch.json @@ -3,151 +3,94 @@ "id": 1, "result": { "reason": "vacuous", - "depth": 1, + "depth": 0, "state": { "term": { "format": "KORE", "version": 1, "term": { - "tag": "And", - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "patterns": [ + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ { "tag": "App", - "name": "Lbl'-LT-'generatedTop'-GT-'", + "name": "Lbl'-LT-'k'-GT-'", "sorts": [], "args": [ { "tag": "App", - "name": "Lbl'-LT-'k'-GT-'", + "name": "kseq", "sorts": [], "args": [ { "tag": "App", - "name": "kseq", - "sorts": [], - "args": [ + "name": "inj", + "sorts": [ { - "tag": "App", - "name": "inj", - "sorts": [ - { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - { - "tag": "SortApp", - "name": "SortKItem", - "args": [] - } - ], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - "value": "a" - } - ] + "tag": "SortApp", + "name": "SortState", + "args": [] }, { - "tag": "App", - "name": "dotk", - "sorts": [], + "tag": "SortApp", + "name": "SortKItem", "args": [] } + ], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + "value": "init" + } ] - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'int'-GT-'", - "sorts": [], - "args": [ + }, { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] } ] - }, + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int'-GT-'", + "sorts": [], + "args": [ { - "tag": "App", - "name": "Lbl'-LT-'generatedCounter'-GT-'", - "sorts": [], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" - } - ] + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" } ] }, { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "42" - } - ] - } + "value": "0" + } + ] } ] } diff --git a/test/rpc-integration/test-vacuous/response-vacuous-var-at-branch.json b/test/rpc-integration/test-vacuous/response-vacuous-var-at-branch.json index 2b509341f..37650f5b8 100644 --- a/test/rpc-integration/test-vacuous/response-vacuous-var-at-branch.json +++ b/test/rpc-integration/test-vacuous/response-vacuous-var-at-branch.json @@ -3,211 +3,132 @@ "id": 1, "result": { "reason": "vacuous", - "depth": 1, + "depth": 0, "state": { "term": { "format": "KORE", "version": 1, "term": { - "tag": "And", - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "patterns": [ + "tag": "App", + "name": "Lbl'-LT-'generatedTop'-GT-'", + "sorts": [], + "args": [ { "tag": "App", - "name": "Lbl'-LT-'generatedTop'-GT-'", + "name": "Lbl'-LT-'k'-GT-'", "sorts": [], "args": [ { "tag": "App", - "name": "Lbl'-LT-'k'-GT-'", + "name": "kseq", "sorts": [], "args": [ { "tag": "App", - "name": "kseq", - "sorts": [], - "args": [ + "name": "inj", + "sorts": [ { - "tag": "App", - "name": "inj", - "sorts": [ - { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - { - "tag": "SortApp", - "name": "SortKItem", - "args": [] - } - ], - "args": [ - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortState", - "args": [] - }, - "value": "a" - } - ] + "tag": "SortApp", + "name": "SortState", + "args": [] }, { - "tag": "App", - "name": "dotk", - "sorts": [], + "tag": "SortApp", + "name": "SortKItem", "args": [] } + ], + "args": [ + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortState", + "args": [] + }, + "value": "init" + } ] - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'int'-GT-'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "N", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - } - ] - }, - { - "tag": "App", - "name": "Lbl'-LT-'generatedCounter'-GT-'", - "sorts": [], - "args": [ + }, { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] } ] } ] }, { - "tag": "And", - "sort": { - "tag": "SortApp", - "name": "SortGeneratedTopCell", - "args": [] - }, - "patterns": [ + "tag": "App", + "name": "Lbl'-LT-'int'-GT-'", + "sorts": [], + "args": [ { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, + "tag": "DV", "sort": { "tag": "SortApp", - "name": "SortGeneratedTopCell", + "name": "SortInt", "args": [] }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "N", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "0" - } - ] - } - }, + "value": "0" + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'generatedCounter'-GT-'", + "sorts": [], + "args": [ { - "tag": "Equals", - "argSort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, + "tag": "DV", "sort": { "tag": "SortApp", - "name": "SortGeneratedTopCell", + "name": "SortInt", "args": [] }, - "first": { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortBool", - "args": [] - }, - "value": "true" - }, - "second": { - "tag": "App", - "name": "Lbl'UndsEqlsEqls'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "N", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "42" - } - ] - } + "value": "0" } ] } ] } + }, + "substitution": { + "format": "KORE", + "version": 1, + "term": { + "tag": "Equals", + "argSort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "sort": { + "tag": "SortApp", + "name": "SortGeneratedTopCell", + "args": [] + }, + "first": { + "tag": "EVar", + "name": "N", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + "second": { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "0" + } + } } } } diff --git a/tools/booster/Server.hs b/tools/booster/Server.hs index f8846da40..4164698ad 100644 --- a/tools/booster/Server.hs +++ b/tools/booster/Server.hs @@ -29,6 +29,8 @@ import Data.InternedText (globalInternedTextCache) import Data.Map qualified as Map import Data.Maybe (fromMaybe, isJust, mapMaybe) import Data.Set qualified as Set +import Data.Text qualified as Text +import Data.Text.Encoding qualified as Text (decodeUtf8) import Options.Applicative import System.Clock ( Clock (..), @@ -40,9 +42,11 @@ import System.IO (hPutStrLn, stderr) import Booster.CLOptions import Booster.JsonRpc qualified as Booster import Booster.LLVM.Internal (mkAPI, withDLib) +import Booster.SMT.Base qualified as SMT (SExpr (..), SMTId (..)) +import Booster.SMT.Interface (SMTOptions (..)) import Booster.Syntax.ParsedKore (loadDefinition) import Booster.Trace -import Data.Text qualified as Text +import Data.Limit (Limit (..)) import GlobalMain qualified import Kore.Attribute.Symbol (StepperAttributes) import Kore.BugReport (BugReportOption (..), withBugReport) @@ -68,10 +72,10 @@ import Kore.Log.DebugSolver qualified as Log import Kore.Log.Registry qualified as Log import Kore.Rewrite.SMT.Lemma (declareSMTLemmas) import Kore.Syntax.Definition (ModuleName (ModuleName), SentenceAxiom) -import Options.SMT (KoreSolverOptions (..), parseKoreSolverOptions) +import Options.SMT as KoreSMT (KoreSolverOptions (..), Solver (..)) import Proxy (KoreServer (..), ProxyConfig (..)) import Proxy qualified -import SMT qualified +import SMT qualified as KoreSMT import Stats qualified main :: IO () @@ -89,9 +93,7 @@ main = do , smtOptions , eventlogEnabledUserEvents } - , koreSolverOptions - , proxyOptions = ProxyOptions{printStats, forceFallback} - , debugSolverOptions + , proxyOptions = ProxyOptions{printStats, forceFallback, boosterSMT} } = options (logLevel, customLevels) = adjustLogLevels logLevels levelFilter :: Logger.LogSource -> LogLevel -> Bool @@ -99,6 +101,7 @@ main = do lvl `elem` customLevels || lvl >= logLevel && lvl <= LevelError koreLogExtraLevels = Set.unions $ mapMaybe (`Map.lookup` koreExtraLogs) customLevels + koreSolverOptions = translateSMTOpts smtOptions Logger.runStderrLoggingT $ Logger.filterLogger levelFilter $ do liftIO $ forM_ eventlogEnabledUserEvents $ \t -> do @@ -122,13 +125,13 @@ main = do monadLogger <- askLoggerIO let coLogLevel = fromMaybe Log.Info $ toSeverity logLevel - koreLogOptions = (defaultKoreLogOptions (ExeName "") startTime) { Log.logLevel = coLogLevel , Log.logEntries = koreLogExtraLevels , Log.timestampsSwitch = TimestampsDisable - , Log.debugSolverOptions = debugSolverOptions + , Log.debugSolverOptions = + Log.DebugSolverOptions . fmap (<> ".kore") $ smtOptions >>= (.transcript) , Log.logType = LogSomeAction $ LogAction $ \txt -> liftIO $ monadLogger defaultLoc "kore" logLevel $ toLogStr txt } srvSettings = serverSettings port "*" @@ -138,9 +141,8 @@ main = do mvarLogAction <- newMVar actualLogAction let logAction = swappableLogger mvarLogAction - let defaultTactic = fromMaybe (SMT.List [SMT.Atom "check-sat-using", SMT.Atom "smt"]) koreSolverOptions.tactic kore@KoreServer{runSMT} <- - mkKoreServer Log.LoggerEnv{logAction} clOPts koreSolverOptions{tactic = Just defaultTactic} + mkKoreServer Log.LoggerEnv{logAction} clOPts koreSolverOptions withMDLib llvmLibraryFile $ \mdl -> do mLlvmLibrary <- maybe (pure Nothing) (fmap Just . mkAPI) mdl @@ -151,7 +153,7 @@ main = do { definitions , defaultMain = mainModuleName , mLlvmLibrary - , mSMTOptions = smtOptions + , mSMTOptions = if boosterSMT then smtOptions else Nothing } statsVar <- if printStats then Just <$> Stats.newStats else pure Nothing @@ -206,8 +208,6 @@ koreExtraLogs = data CLProxyOptions = CLProxyOptions { clOptions :: CLOptions , proxyOptions :: ProxyOptions - , koreSolverOptions :: !KoreSolverOptions - , debugSolverOptions :: !Log.DebugSolverOptions } data ProxyOptions = ProxyOptions @@ -215,6 +215,8 @@ data ProxyOptions = ProxyOptions -- ^ print timing statistics per request and on shutdown , forceFallback :: Maybe Depth -- ^ force fallback every n-steps + , boosterSMT :: Bool + -- ^ whether to use an SMT solver in booster code (but keeping kore-rpc's SMT solver) } parserInfoModifiers :: InfoMod options @@ -227,8 +229,6 @@ clProxyOptionsParser = CLProxyOptions <$> clOptionsParser <*> parseProxyOptions - <*> parseKoreSolverOptions - <*> Log.parseDebugSolverOptions where parseProxyOptions = ProxyOptions @@ -245,6 +245,38 @@ clProxyOptionsParser = <> showDefault ) ) + <*> flag + True + False + ( long "no-booster-smt" + <> help "Disable SMT solver for booster code (but keep enabled for legacy code)" + ) + +translateSMTOpts :: Maybe SMTOptions -> KoreSMT.KoreSolverOptions +translateSMTOpts = \case + Just smtOpts -> + defaultKoreSolverOptions + { timeOut = KoreSMT.TimeOut . Limit . fromIntegral $ smtOpts.timeout + , retryLimit = + KoreSMT.RetryLimit . maybe Unlimited (Limit . fromIntegral) $ smtOpts.retryLimit + , tactic = fmap translateSExpr smtOpts.tactic + } + Nothing -> + defaultKoreSolverOptions{solver = KoreSMT.None} + where + defaultKoreSolverOptions = + KoreSMT.KoreSolverOptions + { timeOut = KoreSMT.TimeOut Unlimited + , retryLimit = KoreSMT.RetryLimit Unlimited + , rLimit = KoreSMT.RLimit Unlimited + , resetInterval = KoreSMT.ResetInterval 100 + , prelude = KoreSMT.Prelude Nothing + , solver = KoreSMT.Z3 + , tactic = Nothing + } + translateSExpr :: SMT.SExpr -> KoreSMT.SExpr + translateSExpr (SMT.Atom (SMT.SMTId x)) = KoreSMT.Atom (Text.decodeUtf8 x) + translateSExpr (SMT.List ss) = KoreSMT.List $ map translateSExpr ss mkKoreServer :: Log.LoggerEnv IO -> CLOptions -> KoreSolverOptions -> IO KoreServer mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainModuleName} koreSolverOptions = @@ -273,14 +305,14 @@ mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainMo , loggerEnv } where - KoreSolverOptions{timeOut, rLimit, resetInterval, prelude, tactic} = koreSolverOptions + KoreSMT.KoreSolverOptions{timeOut, retryLimit, tactic} = koreSolverOptions + smtConfig :: KoreSMT.Config smtConfig = - SMT.defaultConfig - { SMT.timeOut = timeOut - , SMT.rLimit = rLimit - , SMT.resetInterval = resetInterval - , SMT.prelude = prelude - , SMT.tactic = tactic + KoreSMT.defaultConfig + { KoreSMT.executable = KoreSMT.defaultConfig.executable -- hack to shut up GHC field warning + , KoreSMT.timeOut = timeOut + , KoreSMT.retryLimit = retryLimit + , KoreSMT.tactic = tactic } -- SMT solver with user declared lemmas @@ -288,17 +320,17 @@ mkKoreServer loggerEnv@Log.LoggerEnv{logAction} CLOptions{definitionFile, mainMo forall a. SmtMetadataTools StepperAttributes -> [SentenceAxiom (TermLike VariableName)] -> - SMT.SMT a -> + KoreSMT.SMT a -> IO a runSMT metadataTools lemmas m = flip Log.runLoggerT logAction $ - bracket (SMT.newSolver smtConfig) SMT.stopSolver $ \refSolverHandle -> do - let userInit = SMT.runWithSolver $ declareSMTLemmas metadataTools lemmas + bracket (KoreSMT.newSolver smtConfig) KoreSMT.stopSolver $ \refSolverHandle -> do + let userInit = KoreSMT.runWithSolver $ declareSMTLemmas metadataTools lemmas solverSetup = - SMT.SolverSetup + KoreSMT.SolverSetup { userInit , refSolverHandle , config = smtConfig } - SMT.initSolver solverSetup - SMT.runWithSolver m solverSetup + KoreSMT.initSolver solverSetup + KoreSMT.runWithSolver m solverSetup diff --git a/unit-tests/Test/Booster/Pattern/ApplyEquations.hs b/unit-tests/Test/Booster/Pattern/ApplyEquations.hs index 160c2b47d..231f56c3a 100644 --- a/unit-tests/Test/Booster/Pattern/ApplyEquations.hs +++ b/unit-tests/Test/Booster/Pattern/ApplyEquations.hs @@ -96,7 +96,8 @@ test_evaluateFunction = eval BottomUp subj @?= Right result ] where - eval direction = unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluateTerm False direction funDef Nothing + eval direction = + unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluateTerm False direction funDef Nothing Nothing isTooManyIterations (Left (TooManyIterations _n _ _)) = pure () isTooManyIterations (Left err) = assertFailure $ "Unexpected error " <> show err @@ -123,7 +124,8 @@ test_simplify = simpl BottomUp subj @?= Right result ] where - simpl direction = unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluateTerm False direction simplDef Nothing + simpl direction = + unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluateTerm False direction simplDef Nothing Nothing a = var "A" someSort test_simplifyPattern :: TestTree @@ -149,7 +151,8 @@ test_simplifyPattern = simpl subj @?= Right result ] where - simpl = unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluatePattern False simplDef Nothing mempty + simpl = + unsafePerformIO . runNoLoggingT . (fst3 <$>) . evaluatePattern False simplDef Nothing Nothing mempty a = var "A" someSort test_simplifyConstraint :: TestTree @@ -219,7 +222,7 @@ test_simplifyConstraint = unsafePerformIO . runNoLoggingT . (fst3 <$>) - . simplifyConstraint False testDefinition Nothing mempty + . simplifyConstraint False testDefinition Nothing Nothing mempty test_errors :: TestTree test_errors = @@ -232,7 +235,7 @@ test_errors = loopTerms = [f $ app con1 [a], f $ app con2 [a], f $ app con3 [a, a], f $ app con1 [a]] isLoop loopTerms . unsafePerformIO . runNoLoggingT $ - fst3 <$> evaluateTerm False TopDown loopDef Nothing subj + fst3 <$> evaluateTerm False TopDown loopDef Nothing Nothing subj ] where isLoop ts (Left (EquationLoop ts')) = ts @?= ts' diff --git a/unit-tests/Test/Booster/SMT/LowLevel.hs b/unit-tests/Test/Booster/SMT/LowLevel.hs index 65f0c5256..6ddd1d88d 100644 --- a/unit-tests/Test/Booster/SMT/LowLevel.hs +++ b/unit-tests/Test/Booster/SMT/LowLevel.hs @@ -35,24 +35,24 @@ declTests :: TestTree declTests = testGroup "Tests for declarations" - [ testCase "declare-const" $ runsOK [Declare $ DeclareConst "x" smtInt] - , testCase "declare-fun(_)" $ runsOK [Declare $ DeclareFunc "f" [smtInt] smtInt] - , testCase "declare-fun(_, _)" $ runsOK [Declare $ DeclareFunc "g" [smtInt, smtInt] smtInt] - , testCase "declare simple sort" $ runsOK [Declare $ DeclareSort "SomeSort" 0] - , testCase "declare simple sort" $ runsOK [Declare $ DeclareSort "OtherSort" 1] + [ testCase "declare-const" $ runsOK [Declare $ DeclareConst "x" "x" smtInt] + , testCase "declare-fun(_)" $ runsOK [Declare $ DeclareFunc "f" "f" [smtInt] smtInt] + , testCase "declare-fun(_, _)" $ runsOK [Declare $ DeclareFunc "g" "g" [smtInt, smtInt] smtInt] + , testCase "declare simple sort" $ runsOK [Declare $ DeclareSort "" "SomeSort" 0] + , testCase "declare simple sort" $ runsOK [Declare $ DeclareSort "" "OtherSort" 1] , testCase "declare custom-sorted function" $ let sortName = "CustomSort" in runsOK - [ Declare $ DeclareSort sortName 1 - , Declare $ DeclareFunc "f" [SMTSort sortName [smtInt]] smtInt + [ Declare $ DeclareSort "" sortName 1 + , Declare $ DeclareFunc "" "f" [SMTSort sortName [smtInt]] smtInt ] - , testCase "declare assertion" $ runsOK [Declare $ Assert $ eq 0 0] + , testCase "declare assertion" $ runsOK [Declare $ Assert "0 = 0" $ eq 0 0] , testCase "declare a lemma with quantifiers" $ let x = Atom "x" y = Atom "y" intSorted v = List [List [v, Atom "Int"]] in runsOK - [ Declare . Assert $ + [ Declare . Assert "an additive inverse exists for all int" $ List [ Atom "forall" , intSorted x @@ -129,13 +129,13 @@ checkTests = "Smoke tests for the runCheck function" [ test "Empty declarations" `returns` Sat $ [] , test "Simple assertion" `returns` Sat $ - [ DeclareConst "X" smtInt - , Assert $ eq (Atom "X") 42 + [ DeclareConst "" "X" smtInt + , Assert "" $ eq (Atom "X") 42 ] , test "Contradicting assertions" `returns` Unsat $ - [ DeclareConst "X" smtInt - , Assert $ eq (Atom "X") 42 - , Assert $ neq (Atom "X") 42 + [ DeclareConst "" "X" smtInt + , Assert "" $ eq (Atom "X") 42 + , Assert "" $ neq (Atom "X") 42 ] ] where