From 893052f5fcba7f1ece640c73922654c8f5a8cb29 Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 11:19:43 +0200 Subject: [PATCH 01/14] Parse and internalise the syntactic attribute Fix unit tests --- .../Booster/Definition/Attributes/Base.hs | 6 ++++ .../Booster/Definition/Attributes/Reader.hs | 28 +++++++++++++++++++ .../Test/Booster/Pattern/ApplyEquations.hs | 1 + .../Test/Booster/Pattern/Rewrite.hs | 1 + 4 files changed, 36 insertions(+) diff --git a/booster/library/Booster/Definition/Attributes/Base.hs b/booster/library/Booster/Definition/Attributes/Base.hs index f248ddaea3..7a843ad973 100644 --- a/booster/library/Booster/Definition/Attributes/Base.hs +++ b/booster/library/Booster/Definition/Attributes/Base.hs @@ -35,6 +35,7 @@ module Booster.Definition.Attributes.Base ( Position (..), FileSource (..), Priority (..), + SyntacticClauses (..), pattern IsIdem, pattern IsNotIdem, pattern IsAssoc, @@ -97,6 +98,7 @@ data AxiomAttributes = AxiomAttributes , preserving :: Flag "preservingDefinedness" -- this will override the computed attribute , concreteness :: Concreteness , smtLemma :: Flag "isSMTLemma" + , syntacticClauses :: SyntacticClauses -- indices of conjuncts in rule.requires to be checked syntactically } deriving stock (Eq, Ord, Show, Generic) deriving anyclass (NFData) @@ -174,6 +176,10 @@ data SymbolType deriving stock (Eq, Ord, Show, Generic, Data, Lift) deriving anyclass (NFData, Hashable) +newtype SyntacticClauses = SyntacticClauses [Word8] + deriving stock (Eq, Ord, Read, Show) + deriving newtype (NFData) + pattern IsIdem, IsNotIdem :: Flag "isIdem" pattern IsIdem = Flag True pattern IsNotIdem = Flag False diff --git a/booster/library/Booster/Definition/Attributes/Reader.hs b/booster/library/Booster/Definition/Attributes/Reader.hs index 6b0bb8caf0..02109bd470 100644 --- a/booster/library/Booster/Definition/Attributes/Reader.hs +++ b/booster/library/Booster/Definition/Attributes/Reader.hs @@ -70,6 +70,7 @@ instance HasAttributes ParsedAxiom where <*> (attributes .! "preserves-definedness") <*> readConcreteness attributes <*> (attributes .! "smt-lemma") + <*> readSyntacticClauses attributes where -- Some rewrite rules are dynamically generated and injected into -- a running server using the RPC "add-module" endpoint. @@ -153,6 +154,33 @@ readConcreteness attributes = do [name, sort] -> Right (Text.encodeUtf8 name, Text.encodeUtf8 sort) _ -> Left "Invalid variable" +{- | Reads 'syntactic' attribute, returning the set of integer indices. + Reports an error if any of the integers are non-positive or there are duplicates. + Defaults to an empty set. +-} +readSyntacticClauses :: ParsedAttributes -> Except Text SyntacticClauses +readSyntacticClauses attributes = do + syntacticClauses <- + maybe (pure Nothing) ((Just <$>) . mapM (except . readWord8)) $ + getAttribute "syntactic" attributes + case syntacticClauses of + Nothing -> pure $ SyntacticClauses [] + Just [] -> pure $ SyntacticClauses [] + Just more -> pure $ SyntacticClauses more + where + readWord8 str + | all isDigit (Text.unpack str) = first Text.pack $ readEither (Text.unpack str) + | otherwise = Left $ "invalid syntactic clause" <> (Text.pack $ show str) + +-- where +-- readWord8 str = +-- readT [] = Right 50 -- HACK to accept `simplification()` from internal modules +-- readT [n] +-- | Text.null n = Right 50 -- HACK to accept `simplification("")` +-- | all isDigit (Text.unpack n) = Priority <$> readEither (Text.unpack n) +-- | otherwise = Left $ "invalid priority value " <> show n +-- readT ns = Left $ "invalid priority value " <> show ns + instance HasAttributes ParsedSymbol where type Attributes ParsedSymbol = SymbolAttributes diff --git a/booster/unit-tests/Test/Booster/Pattern/ApplyEquations.hs b/booster/unit-tests/Test/Booster/Pattern/ApplyEquations.hs index 0aac1a2696..8490e93491 100644 --- a/booster/unit-tests/Test/Booster/Pattern/ApplyEquations.hs +++ b/booster/unit-tests/Test/Booster/Pattern/ApplyEquations.hs @@ -374,6 +374,7 @@ equation ruleLabel lhs rhs priority = , concreteness = Unconstrained , uniqueId = mockUniqueId , smtLemma = Flag False + , syntacticClauses = SyntacticClauses [] } , computedAttributes = ComputedAxiomAttributes False [] , existentials = mempty diff --git a/booster/unit-tests/Test/Booster/Pattern/Rewrite.hs b/booster/unit-tests/Test/Booster/Pattern/Rewrite.hs index f5ea728fb0..7e085f0771 100644 --- a/booster/unit-tests/Test/Booster/Pattern/Rewrite.hs +++ b/booster/unit-tests/Test/Booster/Pattern/Rewrite.hs @@ -133,6 +133,7 @@ rule ruleLabel lhs rhs priority = , concreteness = Unconstrained , uniqueId = mockUniqueId , smtLemma = Flag False + , syntacticClauses = SyntacticClauses [] } , computedAttributes = ComputedAxiomAttributes False [] , existentials = mempty From a4985211d3008f0eb1989934fc51f78ff3dbbe59 Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 14:05:41 +0200 Subject: [PATCH 02/14] Add `-lsecp256k1` --- .../rpc-integration/resources/kompile-from-double-definition.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/booster/test/rpc-integration/resources/kompile-from-double-definition.sh b/booster/test/rpc-integration/resources/kompile-from-double-definition.sh index 7da3dedafa..7e547695b9 100755 --- a/booster/test/rpc-integration/resources/kompile-from-double-definition.sh +++ b/booster/test/rpc-integration/resources/kompile-from-double-definition.sh @@ -39,7 +39,7 @@ esac llvm-kompile ${NAME}.llvm.kore ./dt c -- \ -fPIC -std=c++17 -o interpreter \ $PLUGIN_LIBS $PLUGIN_INCLUDE $PLUGIN_CPP \ - -lcrypto -lssl $LPROCPS -lsecp256k1 + -lcrypto -lssl -lsecp256k1 $LPROCPS mv interpreter.* ${NAME}.dylib # remove temporary artefacts From 47966d4830cc0e30a2963a11d4bdebefb0909b46 Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 11:41:42 +0200 Subject: [PATCH 03/14] Add test-syntactic-simplification Run test-syntactic-simplification Fix test --- .../syntactic-simplification.haskell.kore | 3017 +++++++++++++++++ .../resources/syntactic-simplification.k | 38 + .../syntactic-simplification.kompile | 45 + .../syntactic-simplification.llvm.kore | 1 + .../test-syntactic-simplification/README.md | 7 + .../response-test1Init.json | 268 ++ .../state-test1Init.execute | 113 + scripts/booster-integration-tests.sh | 2 + 8 files changed, 3491 insertions(+) create mode 100644 booster/test/rpc-integration/resources/syntactic-simplification.haskell.kore create mode 100644 booster/test/rpc-integration/resources/syntactic-simplification.k create mode 100755 booster/test/rpc-integration/resources/syntactic-simplification.kompile create mode 120000 booster/test/rpc-integration/resources/syntactic-simplification.llvm.kore create mode 100644 booster/test/rpc-integration/test-syntactic-simplification/README.md create mode 100644 booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json create mode 100644 booster/test/rpc-integration/test-syntactic-simplification/state-test1Init.execute diff --git a/booster/test/rpc-integration/resources/syntactic-simplification.haskell.kore b/booster/test/rpc-integration/resources/syntactic-simplification.haskell.kore new file mode 100644 index 0000000000..4dcc9dc74d --- /dev/null +++ b/booster/test/rpc-integration/resources/syntactic-simplification.haskell.kore @@ -0,0 +1,3017 @@ +[topCellInitializer{}(LblinitGeneratedTopCell{}()), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.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 SYNTACTIC-SIMPLIFICATION + +// imports + import K [] + +// sorts + sort SortKCellOpt{} [] + sort SortKCell{} [] + sort SortIntYCellOpt{} [] + sort SortIntYCell{} [] + 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/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'Map{}())] + 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/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/kast.md)"), token{}()] + sort SortIntXCellOpt{} [] + hooked-sort SortInt{} [hasDomainValues{}(), hook{}("INT.Int"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1198,3,1198,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/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/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'Set{}())] + 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/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), unit{}(Lbl'Stop'List{}())] + sort SortGeneratedTopCell{} [] + sort SortGeneratedCounterCell{} [] + sort SortIntXCell{} [] + sort SortState{} [] + hooked-sort SortBool{} [hasDomainValues{}(), hook{}("BOOL.Bool"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1077,3,1077,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// symbols + hooked-symbol Lbl'Stop'List{}() : SortList{} [function{}(), functional{}(), hook{}("LIST.unit"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(937,19,937,113)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("smt_seq_nil"), symbol'Kywd'{}(".List"), total{}()] + hooked-symbol Lbl'Stop'Map{}() : SortMap{} [function{}(), functional{}(), hook{}("MAP.unit"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(248,18,248,96)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}(".Map"), total{}()] + hooked-symbol Lbl'Stop'Set{}() : SortSet{} [function{}(), functional{}(), hook{}("SET.unit"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(729,18,729,90)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}(".Set"), total{}()] + symbol Lbl'-LT-'generatedCounter'-GT-'{}(SortInt{}) : SortGeneratedCounterCell{} [cell{}(), constructor{}(), functional{}(), injective{}()] + symbol Lbl'-LT-'generatedTop'-GT-'{}(SortKCell{}, SortIntXCell{}, SortIntYCell{}, SortGeneratedCounterCell{}) : SortGeneratedTopCell{} [cell{}(), constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(9,17,11,46)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + symbol Lbl'-LT-'generatedTop'-GT-'-fragment{}(SortKCellOpt{}, SortIntXCellOpt{}, SortIntYCellOpt{}) : SortGeneratedTopCellFragment{} [constructor{}(), functional{}(), injective{}()] + symbol Lbl'-LT-'int-x'-GT-'{}(SortInt{}) : SortIntXCell{} [cell{}(), constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(10,17,10,46)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + symbol Lbl'-LT-'int-y'-GT-'{}(SortInt{}) : SortIntYCell{} [cell{}(), constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(11,17,11,46)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + symbol Lbl'-LT-'k'-GT-'{}(SortK{}) : SortKCell{} [cell{}(), constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(9,17,9,42)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + hooked-symbol LblList'Coln'get{}(SortList{}, SortInt{}) : SortKItem{} [function{}(), hook{}("LIST.get"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(965,20,965,91)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("List:get")] + hooked-symbol LblList'Coln'range{}(SortList{}, SortInt{}, SortInt{}) : SortList{} [function{}(), hook{}("LIST.range"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1012,19,1012,112)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("List:range")] + hooked-symbol LblList'Coln'set{}(SortList{}, SortInt{}, SortKItem{}) : SortList{} [function{}(), hook{}("LIST.update"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(974,19,974,108)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("List:set")] + hooked-symbol LblListItem{}(SortKItem{}) : SortList{} [function{}(), functional{}(), hook{}("LIST.element"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(945,19,945,124)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("smt_seq_elem"), symbol'Kywd'{}("ListItem"), total{}()] + hooked-symbol LblMap'Coln'choice{}(SortMap{}) : SortKItem{} [function{}(), hook{}("MAP.choice"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(393,20,393,101)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Map:choice")] + hooked-symbol LblMap'Coln'lookup{}(SortMap{}, SortKItem{}) : SortKItem{} [function{}(), hook{}("MAP.lookup"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(271,20,271,105)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Map:lookup")] + hooked-symbol LblMap'Coln'lookupOrDefault{}(SortMap{}, SortKItem{}, SortKItem{}) : SortKItem{} [function{}(), functional{}(), hook{}("MAP.lookupOrDefault"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(281,20,281,134)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Map:lookupOrDefault"), total{}()] + hooked-symbol LblMap'Coln'update{}(SortMap{}, SortKItem{}, SortKItem{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.update"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(290,18,290,132)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Map:update"), total{}()] + hooked-symbol LblSet'Coln'choice{}(SortSet{}) : SortKItem{} [function{}(), hook{}("SET.choice"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(804,20,804,95)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Set:choice")] + hooked-symbol LblSet'Coln'difference{}(SortSet{}, SortSet{}) : SortSet{} [function{}(), functional{}(), hook{}("SET.difference"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(769,18,769,106)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Set:difference"), total{}()] + hooked-symbol LblSet'Coln'in{}(SortKItem{}, SortSet{}) : SortBool{} [function{}(), functional{}(), hook{}("SET.in"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(777,19,777,94)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("Set:in"), total{}()] + hooked-symbol LblSetItem{}(SortKItem{}) : SortSet{} [function{}(), functional{}(), hook{}("SET.element"), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(737,18,737,111)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("SetItem"), total{}()] + hooked-symbol Lbl'UndsPerc'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.tmod"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1246,18,1246,112)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("mod"), symbol'Kywd'{}("_%Int_")] + hooked-symbol Lbl'UndsAnd-'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.and"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1257,18,1257,125)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("andInt"), symbol'Kywd'{}("_&Int_"), total{}()] + hooked-symbol Lbl'UndsStar'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.mul"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1242,18,1242,122)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("*"), symbol'Kywd'{}("_*Int_"), total{}()] + hooked-symbol Lbl'UndsPlus'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.add"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1251,18,1251,122)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("+"), symbol'Kywd'{}("_+Int_"), total{}()] + hooked-symbol Lbl'Unds'-Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.sub"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1252,18,1252,116)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("-"), symbol'Kywd'{}("_-Int_"), total{}()] + hooked-symbol Lbl'Unds'-Map'UndsUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(SortMap{}, SortMap{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.difference"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(311,18,311,88)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol Lbl'UndsSlsh'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.tdiv"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1245,18,1245,112)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("div"), symbol'Kywd'{}("_/Int_")] + hooked-symbol Lbl'Unds-LT--LT-'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.shl"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1255,18,1255,113)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("shlInt"), symbol'Kywd'{}("_<="), symbol'Kywd'{}("_>=Int_"), total{}()] + hooked-symbol Lbl'Unds-GT--GT-'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.shr"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1254,18,1254,113)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("shrInt"), symbol'Kywd'{}("_>>Int_")] + hooked-symbol Lbl'Unds-GT-'Int'Unds'{}(SortInt{}, SortInt{}) : SortBool{} [function{}(), functional{}(), hook{}("INT.gt"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1316,19,1316,103)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}(">"), symbol'Kywd'{}("_>Int_"), total{}()] + hooked-symbol Lbl'Unds'List'Unds'{}(SortList{}, SortList{}) : SortList{} [element{}(LblListItem{}()), function{}(), functional{}(), hook{}("LIST.concat"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(929,19,929,180)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("smt_seq_concat"), symbol'Kywd'{}("_List_"), total{}(), unit{}(Lbl'Stop'List{}())] + hooked-symbol Lbl'Unds'Map'Unds'{}(SortMap{}, SortMap{}) : SortMap{} [element{}(Lbl'UndsPipe'-'-GT-Unds'{}()), function{}(), hook{}("MAP.concat"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(240,18,240,165)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("_Map_"), unit{}(Lbl'Stop'Map{}())] + hooked-symbol Lbl'Unds'Set'Unds'{}(SortSet{}, SortSet{}) : SortSet{} [element{}(LblSetItem{}()), function{}(), hook{}("SET.concat"), idem{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(721,18,721,157)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("_Set_"), unit{}(Lbl'Stop'Set{}())] + hooked-symbol Lbl'UndsLSqBUnds-LT-'-undef'RSqB'{}(SortMap{}, SortKItem{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.remove"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(299,18,299,109)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("_[_<-undef]"), total{}()] + hooked-symbol Lbl'UndsXor-Perc'Int'UndsUnds'{}(SortInt{}, SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.powmod"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1240,18,1240,131)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("(mod (^ #1 #2) #3)"), symbol'Kywd'{}("_^%Int__")] + hooked-symbol Lbl'UndsXor-'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.pow"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1239,18,1239,109)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("^"), symbol'Kywd'{}("_^Int_")] + hooked-symbol Lbl'Unds'andBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.and"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1110,19,1110,138)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("and"), symbol'Kywd'{}("_andBool_"), total{}()] + hooked-symbol Lbl'Unds'andThenBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.andThen"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1111,19,1111,146)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("and"), symbol'Kywd'{}("_andThenBool_"), total{}()] + hooked-symbol Lbl'Unds'divInt'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.ediv"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1248,18,1248,114)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("div"), symbol'Kywd'{}("_divInt_")] + symbol Lbl'Unds'dividesInt'UndsUnds'INT-COMMON'Unds'Bool'Unds'Int'Unds'Int{}(SortInt{}, SortInt{}) : SortBool{} [function{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1327,19,1327,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol Lbl'Unds'impliesBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.implies"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1115,19,1115,145)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("=>"), symbol'Kywd'{}("_impliesBool_"), total{}()] + hooked-symbol Lbl'Unds'inList'Unds'{}(SortKItem{}, SortList{}) : SortBool{} [function{}(), functional{}(), hook{}("LIST.in"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1021,19,1021,97)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("_inList_"), total{}()] + hooked-symbol Lbl'Unds'in'Unds'keys'LParUndsRParUnds'MAP'Unds'Bool'Unds'KItem'Unds'Map{}(SortKItem{}, SortMap{}) : SortBool{} [function{}(), functional{}(), hook{}("MAP.in_keys"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(357,19,357,89)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol Lbl'Unds'modInt'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.emod"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1249,18,1249,114)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("mod"), symbol'Kywd'{}("_modInt_")] + hooked-symbol Lbl'Unds'orBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.or"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1113,19,1113,135)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("or"), symbol'Kywd'{}("_orBool_"), total{}()] + hooked-symbol Lbl'Unds'orElseBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.orElse"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1114,19,1114,143)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("or"), symbol'Kywd'{}("_orElseBool_"), total{}()] + hooked-symbol Lbl'Unds'xorBool'Unds'{}(SortBool{}, SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.xor"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1112,19,1112,138)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("xor"), symbol'Kywd'{}("_xorBool_"), total{}()] + hooked-symbol Lbl'Unds'xorInt'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.xor"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1259,18,1259,127)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("xorInt"), symbol'Kywd'{}("_xorInt_"), total{}()] + hooked-symbol Lbl'UndsPipe'-'-GT-Unds'{}(SortKItem{}, SortKItem{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.element"), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(257,18,257,119)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("_|->_"), total{}()] + hooked-symbol Lbl'UndsPipe'Int'Unds'{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.or"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1261,18,1261,123)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("orInt"), symbol'Kywd'{}("_|Int_"), total{}()] + hooked-symbol Lbl'UndsPipe'Set'UndsUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(SortSet{}, SortSet{}) : SortSet{} [function{}(), functional{}(), hook{}("SET.union"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(748,18,748,92)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol LblabsInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.abs"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1278,18,1278,119)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("(ite (< #1 0) (- 0 #1) #1)"), total{}()] + hooked-symbol LblbitRangeInt'LParUndsCommUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int'Unds'Int{}(SortInt{}, SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.bitRange"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1303,18,1303,103)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol LblfillList'LParUndsCommUndsCommUndsCommUndsRParUnds'LIST'Unds'List'Unds'List'Unds'Int'Unds'Int'Unds'KItem{}(SortList{}, SortInt{}, SortInt{}, SortKItem{}) : SortList{} [function{}(), hook{}("LIST.fill"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1002,19,1002,100)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + symbol LblfreshInt'LParUndsRParUnds'INT'Unds'Int'Unds'Int{}(SortInt{}) : SortInt{} [freshGenerator{}(), function{}(), functional{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1441,18,1441,77)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + symbol LblgetGeneratedCounterCell{}(SortGeneratedTopCell{}) : SortGeneratedCounterCell{} [function{}()] + symbol LblinitGeneratedCounterCell{}() : SortGeneratedCounterCell{} [function{}(), functional{}(), total{}()] + symbol LblinitGeneratedTopCell{}(SortMap{}) : SortGeneratedTopCell{} [function{}()] + symbol LblinitIntXCell{}() : SortIntXCell{} [function{}(), functional{}(), total{}()] + symbol LblinitIntYCell{}() : SortIntYCell{} [function{}(), functional{}(), total{}()] + symbol LblinitKCell{}(SortMap{}) : SortKCell{} [function{}()] + hooked-symbol LblintersectSet'LParUndsCommUndsRParUnds'SET'Unds'Set'Unds'Set'Unds'Set{}(SortSet{}, SortSet{}) : SortSet{} [function{}(), functional{}(), hook{}("SET.intersection"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(759,18,759,90)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + symbol LblisBool{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisGeneratedCounterCell{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisGeneratedTopCell{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisGeneratedTopCellFragment{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisInt{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisIntXCell{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisIntXCellOpt{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisIntYCell{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisIntYCellOpt{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisK{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisKCell{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisKCellOpt{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisKConfigVar{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisKItem{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisList{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisMap{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisSet{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + symbol LblisState{}(SortK{}) : SortBool{} [function{}(), functional{}(), total{}()] + hooked-symbol Lblite{SortSort}(SortBool{}, SortSort, SortSort) : SortSort [function{}(), functional{}(), hook{}("KEQUAL.ite"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2293,26,2293,132)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("ite"), symbol'Kywd'{}("ite"), total{}()] + hooked-symbol Lblkeys'LParUndsRParUnds'MAP'Unds'Set'Unds'Map{}(SortMap{}) : SortSet{} [function{}(), functional{}(), hook{}("MAP.keys"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(341,18,341,82)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol Lblkeys'Unds'list'LParUndsRParUnds'MAP'Unds'List'Unds'Map{}(SortMap{}) : SortList{} [function{}(), hook{}("MAP.keys_list"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(349,19,349,80)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol Lbllog2Int'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(SortInt{}) : SortInt{} [function{}(), hook{}("INT.log2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1289,18,1289,75)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol LblmakeList'LParUndsCommUndsRParUnds'LIST'Unds'List'Unds'Int'Unds'KItem{}(SortInt{}, SortKItem{}) : SortList{} [function{}(), hook{}("LIST.make"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(983,19,983,82)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol LblmaxInt'LParUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.max"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1270,18,1270,114)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("(ite (< #1 #2) #2 #1)"), total{}()] + hooked-symbol LblminInt'LParUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int{}(SortInt{}, SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.min"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1269,18,1269,114)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("(ite (< #1 #2) #1 #2)"), total{}()] + symbol LblnoIntXCell{}() : SortIntXCellOpt{} [constructor{}(), functional{}(), injective{}()] + symbol LblnoIntYCell{}() : SortIntYCellOpt{} [constructor{}(), functional{}(), injective{}()] + symbol LblnoKCell{}() : SortKCellOpt{} [constructor{}(), functional{}(), injective{}()] + hooked-symbol LblnotBool'Unds'{}(SortBool{}) : SortBool{} [function{}(), functional{}(), hook{}("BOOL.not"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1109,19,1109,131)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smt-hook{}("not"), symbol'Kywd'{}("notBool_"), total{}()] + symbol Lblproject'Coln'Bool{}(SortK{}) : SortBool{} [function{}()] + symbol Lblproject'Coln'GeneratedCounterCell{}(SortK{}) : SortGeneratedCounterCell{} [function{}()] + symbol Lblproject'Coln'GeneratedTopCell{}(SortK{}) : SortGeneratedTopCell{} [function{}()] + symbol Lblproject'Coln'GeneratedTopCellFragment{}(SortK{}) : SortGeneratedTopCellFragment{} [function{}()] + symbol Lblproject'Coln'Int{}(SortK{}) : SortInt{} [function{}()] + symbol Lblproject'Coln'IntXCell{}(SortK{}) : SortIntXCell{} [function{}()] + symbol Lblproject'Coln'IntXCellOpt{}(SortK{}) : SortIntXCellOpt{} [function{}()] + symbol Lblproject'Coln'IntYCell{}(SortK{}) : SortIntYCell{} [function{}()] + symbol Lblproject'Coln'IntYCellOpt{}(SortK{}) : SortIntYCellOpt{} [function{}()] + symbol Lblproject'Coln'K{}(SortK{}) : SortK{} [function{}()] + symbol Lblproject'Coln'KCell{}(SortK{}) : SortKCell{} [function{}()] + symbol Lblproject'Coln'KCellOpt{}(SortK{}) : SortKCellOpt{} [function{}()] + symbol Lblproject'Coln'KItem{}(SortK{}) : SortKItem{} [function{}()] + symbol Lblproject'Coln'List{}(SortK{}) : SortList{} [function{}()] + symbol Lblproject'Coln'Map{}(SortK{}) : SortMap{} [function{}()] + symbol Lblproject'Coln'Set{}(SortK{}) : SortSet{} [function{}()] + symbol Lblproject'Coln'State{}(SortK{}) : SortState{} [function{}()] + hooked-symbol LblpushList{}(SortKItem{}, SortList{}) : SortList{} [function{}(), functional{}(), hook{}("LIST.push"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(953,19,953,99)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("pushList"), total{}()] + hooked-symbol LblrandInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(SortInt{}) : SortInt{} [function{}(), hook{}("INT.rand"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1337,18,1337,65)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol LblremoveAll'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Set{}(SortMap{}, SortSet{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.removeAll"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(333,18,333,87)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol LblsignExtendBitRangeInt'LParUndsCommUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int'Unds'Int{}(SortInt{}, SortInt{}, SortInt{}) : SortInt{} [function{}(), hook{}("INT.signExtendBitRange"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1304,18,1304,113)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol Lblsize'LParUndsRParUnds'SET'Unds'Int'Unds'Set{}(SortSet{}) : SortInt{} [function{}(), functional{}(), hook{}("SET.size"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(794,18,794,76)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol LblsizeList{}(SortList{}) : SortInt{} [function{}(), functional{}(), hook{}("LIST.size"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1029,18,1029,116)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("smt_seq_len"), symbol'Kywd'{}("sizeList"), total{}()] + hooked-symbol LblsizeMap{}(SortMap{}) : SortInt{} [function{}(), functional{}(), hook{}("MAP.size"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(373,18,373,99)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), symbol'Kywd'{}("sizeMap"), total{}()] + hooked-symbol LblsrandInt'LParUndsRParUnds'INT-COMMON'Unds'K'Unds'Int{}(SortInt{}) : SortK{} [function{}(), hook{}("INT.srand"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1338,16,1338,65)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + symbol Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}() : SortState{} [constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(5,20,5,31)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + symbol Lbltest1State1'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}() : SortState{} [constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(6,20,6,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + symbol Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}() : SortState{} [constructor{}(), functional{}(), injective{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(7,20,7,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] + hooked-symbol LblupdateList'LParUndsCommUndsCommUndsRParUnds'LIST'Unds'List'Unds'List'Unds'Int'Unds'List{}(SortList{}, SortInt{}, SortList{}) : SortList{} [function{}(), hook{}("LIST.updateAll"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(993,19,993,97)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol LblupdateMap'LParUndsCommUndsRParUnds'MAP'Unds'Map'Unds'Map'Unds'Map{}(SortMap{}, SortMap{}) : SortMap{} [function{}(), functional{}(), hook{}("MAP.updateAll"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(324,18,324,87)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), total{}()] + hooked-symbol Lblvalues'LParUndsRParUnds'MAP'Unds'List'Unds'Map{}(SortMap{}) : SortList{} [function{}(), hook{}("MAP.values"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(365,19,365,77)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + hooked-symbol Lbl'Tild'Int'Unds'{}(SortInt{}) : SortInt{} [function{}(), functional{}(), hook{}("INT.not"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1237,18,1237,112)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), smtlib{}("notInt"), symbol'Kywd'{}("~Int_"), total{}()] + +// 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: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{SortIntYCellOpt{}, SortKItem{}} (From:SortIntYCellOpt{}))) [subsort{SortIntYCellOpt{}, 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{SortKCell{}, SortKItem{}} (From:SortKCell{}))) [subsort{SortKCell{}, SortKItem{}}()] // 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{SortList{}, SortKItem{}} (From:SortList{}))) [subsort{SortList{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortIntXCell{}, SortKItem{}} (From:SortIntXCell{}))) [subsort{SortIntXCell{}, 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:SortIntYCellOpt{}, \equals{SortIntYCellOpt{}, R} (Val:SortIntYCellOpt{}, inj{SortIntYCell{}, SortIntYCellOpt{}} (From:SortIntYCell{}))) [subsort{SortIntYCell{}, SortIntYCellOpt{}}()] // 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{SortIntXCellOpt{}, SortKItem{}} (From:SortIntXCellOpt{}))) [subsort{SortIntXCellOpt{}, 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{SortState{}, SortKItem{}} (From:SortState{}))) [subsort{SortState{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortIntXCellOpt{}, \equals{SortIntXCellOpt{}, R} (Val:SortIntXCellOpt{}, inj{SortIntXCell{}, SortIntXCellOpt{}} (From:SortIntXCell{}))) [subsort{SortIntXCell{}, SortIntXCellOpt{}}()] // 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{SortInt{}, SortKItem{}} (From:SortInt{}))) [subsort{SortInt{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortIntYCell{}, SortKItem{}} (From:SortIntYCell{}))) [subsort{SortIntYCell{}, SortKItem{}}()] // subsort + axiom{R} \exists{R} (Val:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, inj{SortKConfigVar{}, SortKItem{}} (From:SortKConfigVar{}))) [subsort{SortKConfigVar{}, SortKItem{}}()] // subsort + 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:SortIntXCell{}, K2:SortIntYCell{}, K3:SortGeneratedCounterCell{}))) [functional{}()] // functional + axiom{}\implies{SortGeneratedTopCell{}} (\and{SortGeneratedTopCell{}} (Lbl'-LT-'generatedTop'-GT-'{}(X0:SortKCell{}, X1:SortIntXCell{}, X2:SortIntYCell{}, X3:SortGeneratedCounterCell{}), Lbl'-LT-'generatedTop'-GT-'{}(Y0:SortKCell{}, Y1:SortIntXCell{}, Y2:SortIntYCell{}, Y3:SortGeneratedCounterCell{})), Lbl'-LT-'generatedTop'-GT-'{}(\and{SortKCell{}} (X0:SortKCell{}, Y0:SortKCell{}), \and{SortIntXCell{}} (X1:SortIntXCell{}, Y1:SortIntXCell{}), \and{SortIntYCell{}} (X2:SortIntYCell{}, Y2:SortIntYCell{}), \and{SortGeneratedCounterCell{}} (X3:SortGeneratedCounterCell{}, Y3: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:SortIntXCellOpt{}, K2:SortIntYCellOpt{}))) [functional{}()] // functional + axiom{}\implies{SortGeneratedTopCellFragment{}} (\and{SortGeneratedTopCellFragment{}} (Lbl'-LT-'generatedTop'-GT-'-fragment{}(X0:SortKCellOpt{}, X1:SortIntXCellOpt{}, X2:SortIntYCellOpt{}), Lbl'-LT-'generatedTop'-GT-'-fragment{}(Y0:SortKCellOpt{}, Y1:SortIntXCellOpt{}, Y2:SortIntYCellOpt{})), Lbl'-LT-'generatedTop'-GT-'-fragment{}(\and{SortKCellOpt{}} (X0:SortKCellOpt{}, Y0:SortKCellOpt{}), \and{SortIntXCellOpt{}} (X1:SortIntXCellOpt{}, Y1:SortIntXCellOpt{}), \and{SortIntYCellOpt{}} (X2:SortIntYCellOpt{}, Y2:SortIntYCellOpt{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortIntXCell{}, \equals{SortIntXCell{}, R} (Val:SortIntXCell{}, Lbl'-LT-'int-x'-GT-'{}(K0:SortInt{}))) [functional{}()] // functional + axiom{}\implies{SortIntXCell{}} (\and{SortIntXCell{}} (Lbl'-LT-'int-x'-GT-'{}(X0:SortInt{}), Lbl'-LT-'int-x'-GT-'{}(Y0:SortInt{})), Lbl'-LT-'int-x'-GT-'{}(\and{SortInt{}} (X0:SortInt{}, Y0:SortInt{}))) [constructor{}()] // no confusion same constructor + axiom{R} \exists{R} (Val:SortIntYCell{}, \equals{SortIntYCell{}, R} (Val:SortIntYCell{}, Lbl'-LT-'int-y'-GT-'{}(K0:SortInt{}))) [functional{}()] // functional + axiom{}\implies{SortIntYCell{}} (\and{SortIntYCell{}} (Lbl'-LT-'int-y'-GT-'{}(X0:SortInt{}), Lbl'-LT-'int-y'-GT-'{}(Y0:SortInt{})), Lbl'-LT-'int-y'-GT-'{}(\and{SortInt{}} (X0:SortInt{}, Y0:SortInt{}))) [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:SortKItem{}, \equals{SortKItem{}, R} (Val:SortKItem{}, LblMap'Coln'lookupOrDefault{}(K0:SortMap{}, K1:SortKItem{}, K2: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:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'UndsAnd-'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'UndsStar'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'UndsPlus'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'Unds'-Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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'Unds-LT-'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds-GT-Eqls'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, Lbl'Unds-GT-'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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: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'inList'Unds'{}(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:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'Unds'xorInt'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'UndsPipe'Int'Unds'{}(K0:SortInt{}, K1:SortInt{}))) [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:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblabsInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(K0:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblfreshInt'LParUndsRParUnds'INT'Unds'Int'Unds'Int{}(K0:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortGeneratedCounterCell{}, \equals{SortGeneratedCounterCell{}, R} (Val:SortGeneratedCounterCell{}, LblinitGeneratedCounterCell{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortIntXCell{}, \equals{SortIntXCell{}, R} (Val:SortIntXCell{}, LblinitIntXCell{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortIntYCell{}, \equals{SortIntYCell{}, R} (Val:SortIntYCell{}, LblinitIntYCell{}())) [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{}, 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{}, LblisIntXCell{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisIntXCellOpt{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisIntYCell{}(K0:SortK{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortBool{}, \equals{SortBool{}, R} (Val:SortBool{}, LblisIntYCellOpt{}(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, SortSort} \exists{R} (Val:SortSort, \equals{SortSort, R} (Val:SortSort, Lblite{SortSort}(K0:SortBool{}, K1:SortSort, K2:SortSort))) [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:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblmaxInt'LParUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblminInt'LParUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int{}(K0:SortInt{}, K1:SortInt{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortIntXCellOpt{}, \equals{SortIntXCellOpt{}, R} (Val:SortIntXCellOpt{}, LblnoIntXCell{}())) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortIntYCellOpt{}, \equals{SortIntYCellOpt{}, R} (Val:SortIntYCellOpt{}, LblnoIntYCell{}())) [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:SortList{}, \equals{SortList{}, R} (Val:SortList{}, LblpushList{}(K0:SortKItem{}, K1:SortList{}))) [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'SET'Unds'Int'Unds'Set{}(K0:SortSet{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblsizeList{}(K0:SortList{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, LblsizeMap{}(K0:SortMap{}))) [functional{}()] // functional + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [functional{}()] // functional + axiom{}\not{SortState{}} (\and{SortState{}} (Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), Lbltest1State1'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{}\not{SortState{}} (\and{SortState{}} (Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, Lbltest1State1'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [functional{}()] // functional + axiom{}\not{SortState{}} (\and{SortState{}} (Lbltest1State1'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [constructor{}()] // no confusion different constructors + axiom{R} \exists{R} (Val:SortState{}, \equals{SortState{}, R} (Val:SortState{}, Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}())) [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{R} \exists{R} (Val:SortInt{}, \equals{SortInt{}, R} (Val:SortInt{}, Lbl'Tild'Int'Unds'{}(K0:SortInt{}))) [functional{}()] // functional + axiom{} \or{SortBool{}} (\top{SortBool{}}(), \bottom{SortBool{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortGeneratedCounterCell{}} (\exists{SortGeneratedCounterCell{}} (X0:SortInt{}, Lbl'-LT-'generatedCounter'-GT-'{}(X0:SortInt{})), \bottom{SortGeneratedCounterCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortGeneratedTopCell{}} (\exists{SortGeneratedTopCell{}} (X0:SortKCell{}, \exists{SortGeneratedTopCell{}} (X1:SortIntXCell{}, \exists{SortGeneratedTopCell{}} (X2:SortIntYCell{}, \exists{SortGeneratedTopCell{}} (X3:SortGeneratedCounterCell{}, Lbl'-LT-'generatedTop'-GT-'{}(X0:SortKCell{}, X1:SortIntXCell{}, X2:SortIntYCell{}, X3:SortGeneratedCounterCell{}))))), \bottom{SortGeneratedTopCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortGeneratedTopCellFragment{}} (\exists{SortGeneratedTopCellFragment{}} (X0:SortKCellOpt{}, \exists{SortGeneratedTopCellFragment{}} (X1:SortIntXCellOpt{}, \exists{SortGeneratedTopCellFragment{}} (X2:SortIntYCellOpt{}, Lbl'-LT-'generatedTop'-GT-'-fragment{}(X0:SortKCellOpt{}, X1:SortIntXCellOpt{}, X2:SortIntYCellOpt{})))), \bottom{SortGeneratedTopCellFragment{}}()) [constructor{}()] // no junk + axiom{} \or{SortInt{}} (\top{SortInt{}}(), \bottom{SortInt{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortIntXCell{}} (\exists{SortIntXCell{}} (X0:SortInt{}, Lbl'-LT-'int-x'-GT-'{}(X0:SortInt{})), \bottom{SortIntXCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortIntXCellOpt{}} (LblnoIntXCell{}(), \exists{SortIntXCellOpt{}} (Val:SortIntXCell{}, inj{SortIntXCell{}, SortIntXCellOpt{}} (Val:SortIntXCell{})), \bottom{SortIntXCellOpt{}}()) [constructor{}()] // no junk + axiom{} \or{SortIntYCell{}} (\exists{SortIntYCell{}} (X0:SortInt{}, Lbl'-LT-'int-y'-GT-'{}(X0:SortInt{})), \bottom{SortIntYCell{}}()) [constructor{}()] // no junk + axiom{} \or{SortIntYCellOpt{}} (LblnoIntYCell{}(), \exists{SortIntYCellOpt{}} (Val:SortIntYCell{}, inj{SortIntYCell{}, SortIntYCellOpt{}} (Val:SortIntYCell{})), \bottom{SortIntYCellOpt{}}()) [constructor{}()] // no junk + 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{SortKConfigVar{}} (\top{SortKConfigVar{}}(), \bottom{SortKConfigVar{}}()) [constructor{}()] // no junk (TODO: fix bug with \dv) + axiom{} \or{SortKItem{}} (\exists{SortKItem{}} (Val:SortBool{}, inj{SortBool{}, SortKItem{}} (Val:SortBool{})), \exists{SortKItem{}} (Val:SortGeneratedCounterCell{}, inj{SortGeneratedCounterCell{}, SortKItem{}} (Val:SortGeneratedCounterCell{})), \exists{SortKItem{}} (Val:SortGeneratedTopCell{}, inj{SortGeneratedTopCell{}, SortKItem{}} (Val:SortGeneratedTopCell{})), \exists{SortKItem{}} (Val:SortGeneratedTopCellFragment{}, inj{SortGeneratedTopCellFragment{}, SortKItem{}} (Val:SortGeneratedTopCellFragment{})), \exists{SortKItem{}} (Val:SortInt{}, inj{SortInt{}, SortKItem{}} (Val:SortInt{})), \exists{SortKItem{}} (Val:SortIntXCell{}, inj{SortIntXCell{}, SortKItem{}} (Val:SortIntXCell{})), \exists{SortKItem{}} (Val:SortIntXCellOpt{}, inj{SortIntXCellOpt{}, SortKItem{}} (Val:SortIntXCellOpt{})), \exists{SortKItem{}} (Val:SortIntYCell{}, inj{SortIntYCell{}, SortKItem{}} (Val:SortIntYCell{})), \exists{SortKItem{}} (Val:SortIntYCellOpt{}, inj{SortIntYCellOpt{}, SortKItem{}} (Val:SortIntYCellOpt{})), \exists{SortKItem{}} (Val:SortKCell{}, inj{SortKCell{}, SortKItem{}} (Val:SortKCell{})), \exists{SortKItem{}} (Val:SortKCellOpt{}, inj{SortKCellOpt{}, SortKItem{}} (Val:SortKCellOpt{})), \exists{SortKItem{}} (Val:SortKConfigVar{}, inj{SortKConfigVar{}, SortKItem{}} (Val:SortKConfigVar{})), \exists{SortKItem{}} (Val:SortList{}, inj{SortList{}, SortKItem{}} (Val:SortList{})), \exists{SortKItem{}} (Val:SortMap{}, inj{SortMap{}, SortKItem{}} (Val:SortMap{})), \exists{SortKItem{}} (Val:SortSet{}, inj{SortSet{}, SortKItem{}} (Val:SortSet{})), \exists{SortKItem{}} (Val:SortState{}, inj{SortState{}, SortKItem{}} (Val:SortState{})), \bottom{SortKItem{}}()) [constructor{}()] // no junk + axiom{} \or{SortState{}} (Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), Lbltest1State1'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State{}(), \bottom{SortState{}}()) [constructor{}()] // no junk + +// rules +// rule #Ceil{Int,#SortParam}(`_%Int_`(@I1,@I2))=>#And{#SortParam}(#And{#SortParam}(#Equals{Bool,#SortParam}(`_=/=Int_`(@I2,#token("0","Int")),#token("true","Bool")),#Ceil{Int,#SortParam}(@I1)),#Ceil{Int,#SortParam}(@I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(b622ef8c085d310116190556667c6c40158e0d40940b72ca0f29d51edc8c18bf), org.kframework.attributes.Location(Location(1378,8,1378,102)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortInt{}, Q0}(Lbl'UndsPerc'Int'Unds'{}(@VarI1:SortInt{},@VarI2:SortInt{})), + \and{Q0} ( + \and{Q0}(\and{Q0}(\equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'Int'Unds'{}(@VarI2:SortInt{},\dv{SortInt{}}("0")),\dv{SortBool{}}("true")),\ceil{SortInt{}, Q0}(@VarI1:SortInt{})),\ceil{SortInt{}, Q0}(@VarI2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("b622ef8c085d310116190556667c6c40158e0d40940b72ca0f29d51edc8c18bf"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1378,8,1378,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Ceil{Int,#SortParam}(`_/Int_`(@I1,@I2))=>#And{#SortParam}(#And{#SortParam}(#Equals{Bool,#SortParam}(`_=/=Int_`(@I2,#token("0","Int")),#token("true","Bool")),#Ceil{Int,#SortParam}(@I1)),#Ceil{Int,#SortParam}(@I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9a1834b97b96dc4289d7216a5db5a19e9778a92140ee2d6d0ee6e7b9bb629f0b), org.kframework.attributes.Location(Location(1377,8,1377,102)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortInt{}, Q0}(Lbl'UndsSlsh'Int'Unds'{}(@VarI1:SortInt{},@VarI2:SortInt{})), + \and{Q0} ( + \and{Q0}(\and{Q0}(\equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'Int'Unds'{}(@VarI2:SortInt{},\dv{SortInt{}}("0")),\dv{SortBool{}}("true")),\ceil{SortInt{}, Q0}(@VarI1:SortInt{})),\ceil{SortInt{}, Q0}(@VarI2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("9a1834b97b96dc4289d7216a5db5a19e9778a92140ee2d6d0ee6e7b9bb629f0b"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1377,8,1377,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Ceil{Int,#SortParam}(`_<#And{#SortParam}(#And{#SortParam}(#Equals{Bool,#SortParam}(`_>=Int_`(@I2,#token("0","Int")),#token("true","Bool")),#Ceil{Int,#SortParam}(@I1)),#Ceil{Int,#SortParam}(@I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5f8bf32bc6d29b1dd564aafa53735ab4af7bfa889111514aa98c4fa723f7552f), org.kframework.attributes.Location(Location(1381,8,1381,102)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortInt{}, Q0}(Lbl'Unds-LT--LT-'Int'Unds'{}(@VarI1:SortInt{},@VarI2:SortInt{})), + \and{Q0} ( + \and{Q0}(\and{Q0}(\equals{SortBool{}, Q0}(Lbl'Unds-GT-Eqls'Int'Unds'{}(@VarI2:SortInt{},\dv{SortInt{}}("0")),\dv{SortBool{}}("true")),\ceil{SortInt{}, Q0}(@VarI1:SortInt{})),\ceil{SortInt{}, Q0}(@VarI2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("5f8bf32bc6d29b1dd564aafa53735ab4af7bfa889111514aa98c4fa723f7552f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1381,8,1381,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Ceil{Int,#SortParam}(`_>>Int_`(@I1,@I2))=>#And{#SortParam}(#And{#SortParam}(#Equals{Bool,#SortParam}(`_>=Int_`(@I2,#token("0","Int")),#token("true","Bool")),#Ceil{Int,#SortParam}(@I1)),#Ceil{Int,#SortParam}(@I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(c8752947aadc9d8ef2198aab097ebede2699aaac6eba9b2a816b0cdf19d318a3), org.kframework.attributes.Location(Location(1380,8,1380,102)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortInt{}, Q0}(Lbl'Unds-GT--GT-'Int'Unds'{}(@VarI1:SortInt{},@VarI2:SortInt{})), + \and{Q0} ( + \and{Q0}(\and{Q0}(\equals{SortBool{}, Q0}(Lbl'Unds-GT-Eqls'Int'Unds'{}(@VarI2:SortInt{},\dv{SortInt{}}("0")),\dv{SortBool{}}("true")),\ceil{SortInt{}, Q0}(@VarI1:SortInt{})),\ceil{SortInt{}, Q0}(@VarI2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("c8752947aadc9d8ef2198aab097ebede2699aaac6eba9b2a816b0cdf19d318a3"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1380,8,1380,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Ceil{Int,#SortParam}(`_modInt_`(@I1,@I2))=>#And{#SortParam}(#And{#SortParam}(#Equals{Bool,#SortParam}(`_=/=Int_`(@I2,#token("0","Int")),#token("true","Bool")),#Ceil{Int,#SortParam}(@I1)),#Ceil{Int,#SortParam}(@I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ed8563f7c10f7082e32e3ba09e833bcd2568d081fd7a65b525bcf5b05040035b), org.kframework.attributes.Location(Location(1379,8,1379,102)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \ceil{SortInt{}, Q0}(Lbl'Unds'modInt'Unds'{}(@VarI1:SortInt{},@VarI2:SortInt{})), + \and{Q0} ( + \and{Q0}(\and{Q0}(\equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'Int'Unds'{}(@VarI2:SortInt{},\dv{SortInt{}}("0")),\dv{SortBool{}}("true")),\ceil{SortInt{}, Q0}(@VarI1:SortInt{})),\ceil{SortInt{}, Q0}(@VarI2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("ed8563f7c10f7082e32e3ba09e833bcd2568d081fd7a65b525bcf5b05040035b"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1379,8,1379,102)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(`_=/=Int_`(K1,K2),#token("false","Bool"))=>#Equals{Int,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(795b359eb7defdb79755173ab8af1e9e2a1baa62035cef8bf05d869b4c9541c9), label(INT-KORE.neq-int-false-left), org.kframework.attributes.Location(Location(1396,31,1396,78)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("795b359eb7defdb79755173ab8af1e9e2a1baa62035cef8bf05d869b4c9541c9"), label{}("INT-KORE.neq-int-false-left"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1396,31,1396,78)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(`_=/=Int_`(K1,K2),#token("true","Bool"))=>#Not{#SortParam}(#Equals{Int,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(05a130417fde08afe4d6f16334376c84fc19905832dee217851085e64ad36565), label(INT-KORE.neq-int-true-left), org.kframework.attributes.Location(Location(1394,31,1394,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \not{Q0}(\equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("05a130417fde08afe4d6f16334376c84fc19905832dee217851085e64ad36565"), label{}("INT-KORE.neq-int-true-left"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1394,31,1394,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(9d66f4f4523150f66c090aecc98805e32e109e726f53d3eaf49d463bf591319d), org.kframework.attributes.Location(Location(2308,8,2308,53)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("9d66f4f4523150f66c090aecc98805e32e109e726f53d3eaf49d463bf591319d"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2308,8,2308,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(bbc468285d9d1c57b0a62e5e63bde86c5308370a10572c3deb33d03e13456727), org.kframework.attributes.Location(Location(2306,8,2306,58)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("bbc468285d9d1c57b0a62e5e63bde86c5308370a10572c3deb33d03e13456727"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2306,8,2306,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(`_==Int_`(K1,K2),#token("false","Bool"))=>#Not{#SortParam}(#Equals{Int,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(b47d1ffbd21dc81cf1b7fd21570adff9e4287eda0dfe26e863e672351d90f2cb), label(INT-KORE.eq-int-false-left), org.kframework.attributes.Location(Location(1392,31,1392,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{}),\dv{SortBool{}}("false")), + \and{Q0} ( + \not{Q0}(\equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("b47d1ffbd21dc81cf1b7fd21570adff9e4287eda0dfe26e863e672351d90f2cb"), label{}("INT-KORE.eq-int-false-left"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1392,31,1392,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(`_==Int_`(K1,K2),#token("true","Bool"))=>#Equals{Int,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(c41b0da7f1db6ae2f2fe6efb586d75a961c154ed1d6977cec362db971c1ac799), label(INT-KORE.eq-int-true-left), org.kframework.attributes.Location(Location(1390,31,1390,78)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(Lbl'UndsEqlsEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{}),\dv{SortBool{}}("true")), + \and{Q0} ( + \equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("c41b0da7f1db6ae2f2fe6efb586d75a961c154ed1d6977cec362db971c1ac799"), label{}("INT-KORE.eq-int-true-left"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1390,31,1390,78)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(fbb001dd1d8b9a3f8466f8188e21aaee68617e9bd3df6dc839b8cd337b34adcc), org.kframework.attributes.Location(Location(2304,8,2304,58)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("fbb001dd1d8b9a3f8466f8188e21aaee68617e9bd3df6dc839b8cd337b34adcc"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2304,8,2304,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(4f1df0fcbe5672da3e37bad79f0a8a2e8ac5474f49364d679a98e61b384a27ab), org.kframework.attributes.Location(Location(2302,8,2302,51)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("4f1df0fcbe5672da3e37bad79f0a8a2e8ac5474f49364d679a98e61b384a27ab"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2302,8,2302,51)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(9aad9b95f738d9a2205d9d25e4d74fe5383d9d760aeb20b454170cc72a594969), org.kframework.attributes.Location(Location(1171,8,1171,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("9aad9b95f738d9a2205d9d25e4d74fe5383d9d760aeb20b454170cc72a594969"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1171,8,1171,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(8e69004f8524a0ef78bb9772df04f4e2dda461cf1d1803ddddb00fecc679e561), org.kframework.attributes.Location(Location(1173,8,1173,86)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("8e69004f8524a0ef78bb9772df04f4e2dda461cf1d1803ddddb00fecc679e561"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1173,8,1173,86)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(f849e4d67d2a74b4cccc204cf2328d983402c10486394c6bb076c907351805ae), org.kframework.attributes.Location(Location(1168,8,1168,55)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("f849e4d67d2a74b4cccc204cf2328d983402c10486394c6bb076c907351805ae"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1168,8,1168,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(0ac934b762853d8a5da4819f1a56c44c9311a77e5297e48c54e61a9a08697107), org.kframework.attributes.Location(Location(1166,8,1166,55)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("0ac934b762853d8a5da4819f1a56c44c9311a77e5297e48c54e61a9a08697107"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1166,8,1166,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`_=/=Int_`(K1,K2))=>#Equals{Int,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9792bd7a5d2539a29ba29c1e32994d0f363d8d0ea982eb9090122b68c172e002), label(INT-KORE.neq-int-false-right), org.kframework.attributes.Location(Location(1397,31,1397,78)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{})), + \and{Q0} ( + \equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("9792bd7a5d2539a29ba29c1e32994d0f363d8d0ea982eb9090122b68c172e002"), label{}("INT-KORE.neq-int-false-right"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1397,31,1397,78)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(da8b62ee5fcd571267f5049d842316ff177fca6096d2d9cd356c72526a794fca), org.kframework.attributes.Location(Location(2309,8,2309,53)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("da8b62ee5fcd571267f5049d842316ff177fca6096d2d9cd356c72526a794fca"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2309,8,2309,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(#token("false","Bool"),`_==Int_`(K1,K2))=>#Not{#SortParam}(#Equals{Int,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(1079bc3ddec6c135ffdb2affa08dd6aa948cf49d75a5180e2c7ca82d0d1b8ce8), label(INT-KORE.eq-int-false-rigth), org.kframework.attributes.Location(Location(1393,31,1393,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("false"),Lbl'UndsEqlsEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{})), + \and{Q0} ( + \not{Q0}(\equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("1079bc3ddec6c135ffdb2affa08dd6aa948cf49d75a5180e2c7ca82d0d1b8ce8"), label{}("INT-KORE.eq-int-false-rigth"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1393,31,1393,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(45bfda34ee15d29f413561463c9921671249c5879697cc5fe1c5ba8365c011d0), org.kframework.attributes.Location(Location(2305,8,2305,58)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("45bfda34ee15d29f413561463c9921671249c5879697cc5fe1c5ba8365c011d0"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2305,8,2305,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(defa1852968a34529c2e1cf9e575104f4efa985725f1c8e0ee558a5eda315a9e), org.kframework.attributes.Location(Location(1172,8,1172,86)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("defa1852968a34529c2e1cf9e575104f4efa985725f1c8e0ee558a5eda315a9e"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1172,8,1172,86)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(3c3fe078896d0d71271c80ee4bf02a715d9103274cb4b3b613abdb99a362a323), org.kframework.attributes.Location(Location(1167,8,1167,55)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("3c3fe078896d0d71271c80ee4bf02a715d9103274cb4b3b613abdb99a362a323"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1167,8,1167,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`_=/=Int_`(K1,K2))=>#Not{#SortParam}(#Equals{Int,#SortParam}(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7c6945e9f9c097f33467f54fb43978a62371b48434726f253052176b905b885c), label(INT-KORE.neq-int-true-right), org.kframework.attributes.Location(Location(1395,31,1395,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{})), + \and{Q0} ( + \not{Q0}(\equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{})), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("7c6945e9f9c097f33467f54fb43978a62371b48434726f253052176b905b885c"), label{}("INT-KORE.neq-int-true-right"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1395,31,1395,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(fdc517cb9fb2fd5aedf681fc31fd3214b997bc9a717a0f978cd49cc24db6fe7c), org.kframework.attributes.Location(Location(2307,8,2307,58)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("fdc517cb9fb2fd5aedf681fc31fd3214b997bc9a717a0f978cd49cc24db6fe7c"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2307,8,2307,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule #Equals{Bool,#SortParam}(#token("true","Bool"),`_==Int_`(K1,K2))=>#Equals{Int,#SortParam}(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(435d5e3c9c81148294a952394bc0164963a226f169ab6175d7d1ebd4ec19c13e), label(INT-KORE.eq-int-true-rigth), org.kframework.attributes.Location(Location(1391,31,1391,78)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, sortParams({Q0})] + axiom{R,Q0} \implies{R} ( + \top{R}(), + \equals{Q0,R} ( + \equals{SortBool{}, Q0}(\dv{SortBool{}}("true"),Lbl'UndsEqlsEqls'Int'Unds'{}(VarK1:SortInt{},VarK2:SortInt{})), + \and{Q0} ( + \equals{SortInt{}, Q0}(VarK1:SortInt{},VarK2:SortInt{}), + \top{Q0}()))) + [UNIQUE'Unds'ID{}("435d5e3c9c81148294a952394bc0164963a226f169ab6175d7d1ebd4ec19c13e"), label{}("INT-KORE.eq-int-true-rigth"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1391,31,1391,78)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(9a4b74e345447735b5c093e8c87dc9950d0a498adcd67b709212e4b0ffc5c1ff), org.kframework.attributes.Location(Location(2303,8,2303,51)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("9a4b74e345447735b5c093e8c87dc9950d0a498adcd67b709212e4b0ffc5c1ff"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2303,8,2303,51)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(300cf41da7d529cc248e588cad6803b76fcbbb65e52839df4abc4bc96dbe0df7), org.kframework.attributes.Location(Location(1170,8,1170,84)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("300cf41da7d529cc248e588cad6803b76fcbbb65e52839df4abc4bc96dbe0df7"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1170,8,1170,84)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// 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(88327456f82448e5a8387e1b180240db11201dd91cad6b2086350a57ec6598c4), org.kframework.attributes.Location(Location(1165,8,1165,55)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("88327456f82448e5a8387e1b180240db11201dd91cad6b2086350a57ec6598c4"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1165,8,1165,55)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule ``(``(inj{State,KItem}(`test1Init()_SYNTACTIC-SIMPLIFICATION_State`(.KList))~>_DotVar1),``(_Gen0),``(_Gen1),_DotVar0)=>``(``(inj{State,KItem}(`test1State1()_SYNTACTIC-SIMPLIFICATION_State`(.KList))~>_DotVar1),``(?X),``(?Y),_DotVar0) requires #token("true","Bool") ensures `_andBool_`(`_andBool_`(`_`(``(inj{State,KItem}(`test1State1()_SYNTACTIC-SIMPLIFICATION_State`(.KList))~>_DotVar1),``(X) #as _Gen6,_Gen0,_Gen1)=>``(``(inj{State,KItem}(`test1State2()_SYNTACTIC-SIMPLIFICATION_State`(.KList))~>_DotVar1),_Gen6,_Gen0,_Gen1) requires `_X requires `_andBool_`(`_<=Int_`(#token("0","Int"),X),`_`_&Int_`(`_&Int_`(I1,I2),C) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9421412631227297d710a8a128250546172d603a3ba4ab733f0b457ab951b222), concrete(I1, I2), org.kframework.attributes.Location(Location(1413,8,1413,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsAnd-'Int'Unds'{}(VarI1:SortInt{},Lbl'UndsAnd-'Int'Unds'{}(VarI2:SortInt{},VarC:SortInt{})), + \and{SortInt{}} ( + Lbl'UndsAnd-'Int'Unds'{}(Lbl'UndsAnd-'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}),VarC:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("9421412631227297d710a8a128250546172d603a3ba4ab733f0b457ab951b222"), concrete{}(VarI1:SortInt{},VarI2:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1413,8,1413,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_+Int_`(I,B)=>`_+Int_`(B,I) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2e6bd1d3ddd7c597337b36e863b9ba7467879e84d355c4249c7ac49a7bc6994a), concrete(I), org.kframework.attributes.Location(Location(1400,8,1400,28)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification(51), symbolic(B)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(VarI:SortInt{},VarB:SortInt{}), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(VarB:SortInt{},VarI:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("2e6bd1d3ddd7c597337b36e863b9ba7467879e84d355c4249c7ac49a7bc6994a"), concrete{}(VarI:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1400,8,1400,28)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("51"), symbolic{}(VarB:SortInt{})] + +// rule `_+Int_`(I,#token("0","Int"))=>I requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(aabd26e6a15f1496fc7553673d4106436d66316bc405364e4e45307483e4abba), org.kframework.attributes.Location(Location(1358,8,1358,21)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(VarI:SortInt{},\dv{SortInt{}}("0")), + \and{SortInt{}} ( + VarI:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("aabd26e6a15f1496fc7553673d4106436d66316bc405364e4e45307483e4abba"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1358,8,1358,21)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_+Int_`(I1,`_+Int_`(B,I3))=>`_+Int_`(B,`_+Int_`(I1,I3)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7308565e50371e986b204a58ec60ca02ff2d988d32b932c40b04f3aeee3bd97c), concrete(I1, I3), org.kframework.attributes.Location(Location(1404,8,1404,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(B)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarB:SortInt{},VarI3:SortInt{})), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(VarB:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},VarI3:SortInt{})), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("7308565e50371e986b204a58ec60ca02ff2d988d32b932c40b04f3aeee3bd97c"), concrete{}(VarI1:SortInt{},VarI3:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1404,8,1404,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarB:SortInt{})] + +// rule `_+Int_`(I1,`_+Int_`(I2,C))=>`_+Int_`(`_+Int_`(I1,I2),C) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(c1ab8935c1473aad2156d430c77351ca90186ddcabc44e7f88b0d40d019eff6c), concrete(I1, I2), org.kframework.attributes.Location(Location(1406,8,1406,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarI2:SortInt{},VarC:SortInt{})), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}),VarC:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("c1ab8935c1473aad2156d430c77351ca90186ddcabc44e7f88b0d40d019eff6c"), concrete{}(VarI1:SortInt{},VarI2:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1406,8,1406,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_+Int_`(I1,`_-Int_`(I2,C))=>`_-Int_`(`_+Int_`(I1,I2),C) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(935f82fd8fdd7b6117b1e5133b5e9d7eb694bc4b7bca25656b679697465e9392), concrete(I1, I2), org.kframework.attributes.Location(Location(1407,8,1407,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},Lbl'Unds'-Int'Unds'{}(VarI2:SortInt{},VarC:SortInt{})), + \and{SortInt{}} ( + Lbl'Unds'-Int'Unds'{}(Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}),VarC:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("935f82fd8fdd7b6117b1e5133b5e9d7eb694bc4b7bca25656b679697465e9392"), concrete{}(VarI1:SortInt{},VarI2:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1407,8,1407,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_+Int_`(`_+Int_`(A,I2),I3)=>`_+Int_`(A,`_+Int_`(I2,I3)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(905f980f1bfa6646fa489ee8f1a217ce3516cb046d9bdb2c71aeac8af25bff94), concrete(I2, I3), org.kframework.attributes.Location(Location(1403,8,1403,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(A)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(Lbl'UndsPlus'Int'Unds'{}(VarA:SortInt{},VarI2:SortInt{}),VarI3:SortInt{}), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(VarA:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarI2:SortInt{},VarI3:SortInt{})), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("905f980f1bfa6646fa489ee8f1a217ce3516cb046d9bdb2c71aeac8af25bff94"), concrete{}(VarI2:SortInt{},VarI3:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1403,8,1403,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarA:SortInt{})] + +// rule `_+Int_`(`_-Int_`(I1,B),I3)=>`_-Int_`(`_+Int_`(I1,I3),B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(a05a3720b49f61f248c0054620ef36c21bfc387bc87ccadff8b25a64b516abaa), concrete(I1, I3), org.kframework.attributes.Location(Location(1408,8,1408,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(B)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'UndsPlus'Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},VarB:SortInt{}),VarI3:SortInt{}), + \and{SortInt{}} ( + Lbl'Unds'-Int'Unds'{}(Lbl'UndsPlus'Int'Unds'{}(VarI1:SortInt{},VarI3:SortInt{}),VarB:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("a05a3720b49f61f248c0054620ef36c21bfc387bc87ccadff8b25a64b516abaa"), concrete{}(VarI1:SortInt{},VarI3:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1408,8,1408,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarB:SortInt{})] + +// rule `_-Int_`(A,I)=>`_+Int_`(A,`_-Int_`(#token("0","Int"),I)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(d74a5051d6c5db6f1cd82d246016e530a2c889e65ad1871d4ef3c794a0ebbfdb), concrete(I), org.kframework.attributes.Location(Location(1401,8,1401,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification(51), symbolic(A)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(VarA:SortInt{},VarI:SortInt{}), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(VarA:SortInt{},Lbl'Unds'-Int'Unds'{}(\dv{SortInt{}}("0"),VarI:SortInt{})), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("d74a5051d6c5db6f1cd82d246016e530a2c889e65ad1871d4ef3c794a0ebbfdb"), concrete{}(VarI:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1401,8,1401,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("51"), symbolic{}(VarA:SortInt{})] + +// rule `_-Int_`(I,#token("0","Int"))=>I requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ce5b8e5bfd73c95b45c6910a804fef7292859a81b2a0b1cf7aceb97a42f68ea5), org.kframework.attributes.Location(Location(1359,8,1359,21)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(VarI:SortInt{},\dv{SortInt{}}("0")), + \and{SortInt{}} ( + VarI:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("ce5b8e5bfd73c95b45c6910a804fef7292859a81b2a0b1cf7aceb97a42f68ea5"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1359,8,1359,21)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_-Int_`(I1,`_+Int_`(B,I3))=>`_-Int_`(`_-Int_`(I1,I3),B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(65fc58d60e6d0a418216dd3bc1bcb0d69a4fe2d05ff984269e650ce61fe7ac57), concrete(I1, I3), org.kframework.attributes.Location(Location(1405,8,1405,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(B)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarB:SortInt{},VarI3:SortInt{})), + \and{SortInt{}} ( + Lbl'Unds'-Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},VarI3:SortInt{}),VarB:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("65fc58d60e6d0a418216dd3bc1bcb0d69a4fe2d05ff984269e650ce61fe7ac57"), concrete{}(VarI1:SortInt{},VarI3:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1405,8,1405,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarB:SortInt{})] + +// rule `_-Int_`(I1,`_+Int_`(I2,C))=>`_-Int_`(`_-Int_`(I1,I2),C) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(56750a45b2b2a148f36488eecc4e1f9b06a87aaf87f8d327a7d2ea64bb8e97a6), concrete(I1, I2), org.kframework.attributes.Location(Location(1409,8,1409,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarI2:SortInt{},VarC:SortInt{})), + \and{SortInt{}} ( + Lbl'Unds'-Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}),VarC:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("56750a45b2b2a148f36488eecc4e1f9b06a87aaf87f8d327a7d2ea64bb8e97a6"), concrete{}(VarI1:SortInt{},VarI2:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1409,8,1409,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_-Int_`(I1,`_-Int_`(I2,C))=>`_+Int_`(`_-Int_`(I1,I2),C) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(e2166a2b9e9f92c4a42d187b79cc7cfffd29e649f29e5b5a880ca4a3a47bc215), concrete(I1, I2), org.kframework.attributes.Location(Location(1410,8,1410,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},Lbl'Unds'-Int'Unds'{}(VarI2:SortInt{},VarC:SortInt{})), + \and{SortInt{}} ( + Lbl'UndsPlus'Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}),VarC:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("e2166a2b9e9f92c4a42d187b79cc7cfffd29e649f29e5b5a880ca4a3a47bc215"), concrete{}(VarI1:SortInt{},VarI2:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1410,8,1410,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_-Int_`(`_-Int_`(C,I2),I3)=>`_-Int_`(C,`_+Int_`(I2,I3)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(8f97bbde4900d5ebbd39edd662bb87c3dbc0934fbe1f4db06d9a2050bd7a9a82), concrete(I2, I3), org.kframework.attributes.Location(Location(1411,8,1411,50)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification, symbolic(C)] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds'-Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarC:SortInt{},VarI2:SortInt{}),VarI3:SortInt{}), + \and{SortInt{}} ( + Lbl'Unds'-Int'Unds'{}(VarC:SortInt{},Lbl'UndsPlus'Int'Unds'{}(VarI2:SortInt{},VarI3:SortInt{})), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("8f97bbde4900d5ebbd39edd662bb87c3dbc0934fbe1f4db06d9a2050bd7a9a82"), concrete{}(VarI2:SortInt{},VarI3:SortInt{}), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1411,8,1411,50)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}(""), symbolic{}(VarC:SortInt{})] + +// rule `_<X requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(8b63843b7b419179c23c249a139981f1190cf52ec41e7e453e6d5edd73ff8725), org.kframework.attributes.Location(Location(1365,8,1365,22)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds-LT--LT-'Int'Unds'{}(VarX:SortInt{},\dv{SortInt{}}("0")), + \and{SortInt{}} ( + VarX:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("8b63843b7b419179c23c249a139981f1190cf52ec41e7e453e6d5edd73ff8725"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1365,8,1365,22)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_<#token("0","Int") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7df97c560c3aec2963fa8634969e665cf56694fd7f3aa22fb29f055b3e6a6cfe), org.kframework.attributes.Location(Location(1366,8,1366,22)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds-LT--LT-'Int'Unds'{}(\dv{SortInt{}}("0"),Var'Unds'Gen0:SortInt{}), + \and{SortInt{}} ( + \dv{SortInt{}}("0"), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("7df97c560c3aec2963fa8634969e665cf56694fd7f3aa22fb29f055b3e6a6cfe"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1366,8,1366,22)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_#token("true","Bool") requires `_andBool_`(`_`notBool_`(`_==Bool_`(B1,B2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(31fe72efcfddcd8588a11d9d10c1b1a9f96ae3da46b647d4cb9d1e8b1bd1654f), org.kframework.attributes.Location(Location(1159,8,1159,57)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1159,8,1159,57)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_=/=Int_`(I1,I2)=>`notBool_`(`_==Int_`(I1,I2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4de6e05b11cdbed7ef5cb4c952127924661af4744c1e495370e1c8a962ba7be3), org.kframework.attributes.Location(Location(1438,8,1438,53)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortInt{}, R} ( + X0:SortInt{}, + VarI1:SortInt{} + ),\and{R} ( + \in{SortInt{}, R} ( + X1:SortInt{}, + VarI2:SortInt{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'UndsEqlsSlshEqls'Int'Unds'{}(X0:SortInt{},X1:SortInt{}), + \and{SortBool{}} ( + LblnotBool'Unds'{}(Lbl'UndsEqlsEqls'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{})), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("4de6e05b11cdbed7ef5cb4c952127924661af4744c1e495370e1c8a962ba7be3"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1438,8,1438,53)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_=/=K_`(K1,K2)=>`notBool_`(`_==K_`(K1,K2)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(bccaba7335e4cd77501a0667f2f7b3eb4a2105d5f60d804915dd4b1b08902c0c), org.kframework.attributes.Location(Location(2318,8,2318,45)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(2318,8,2318,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_==K_`(inj{Bool,KItem}(K1),inj{Bool,KItem}(K2))=>`_==Bool_`(K1,K2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2397e65cf548d4502dc45b4ec2578e036f0fbe6dadf1386d567be77e811975e2), org.kframework.attributes.Location(Location(2301,8,2301,43)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("2397e65cf548d4502dc45b4ec2578e036f0fbe6dadf1386d567be77e811975e2"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2301,8,2301,43)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_==K_`(inj{Int,KItem}(I1),inj{Int,KItem}(I2))=>`_==Int_`(I1,I2) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(d95370e01038361235da9cb6be0a627d07365d6fbb0db1cb2214912410fb11a0), label(INT-KORE.eq-k-to-eq-int), org.kframework.attributes.Location(Location(1389,31,1389,74)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortBool{},R} ( + Lbl'UndsEqlsEqls'K'Unds'{}(kseq{}(inj{SortInt{}, SortKItem{}}(VarI1:SortInt{}),dotk{}()),kseq{}(inj{SortInt{}, SortKItem{}}(VarI2:SortInt{}),dotk{}())), + \and{SortBool{}} ( + Lbl'UndsEqlsEqls'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("d95370e01038361235da9cb6be0a627d07365d6fbb0db1cb2214912410fb11a0"), label{}("INT-KORE.eq-k-to-eq-int"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1389,31,1389,74)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_>>Int_`(X,#token("0","Int"))=>X requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(afa10f58a41b4395b68f473579a1833eb2b310b16fa4bc45f363dd269b7f6088), org.kframework.attributes.Location(Location(1367,8,1367,22)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds-GT--GT-'Int'Unds'{}(VarX:SortInt{},\dv{SortInt{}}("0")), + \and{SortInt{}} ( + VarX:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("afa10f58a41b4395b68f473579a1833eb2b310b16fa4bc45f363dd269b7f6088"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1367,8,1367,22)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_>>Int_`(#token("0","Int"),_Gen0)=>#token("0","Int") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(a156c8612a9d4dd3439eb2df95a172243c4c7cf248ac791810f01138ae7c1fc9), org.kframework.attributes.Location(Location(1368,8,1368,22)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), simplification] + axiom{R} \implies{R} ( + \top{R}(), + \equals{SortInt{},R} ( + Lbl'Unds-GT--GT-'Int'Unds'{}(\dv{SortInt{}}("0"),Var'Unds'Gen0:SortInt{}), + \and{SortInt{}} ( + \dv{SortInt{}}("0"), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("a156c8612a9d4dd3439eb2df95a172243c4c7cf248ac791810f01138ae7c1fc9"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1368,8,1368,22)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), 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(1132,8,1132,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1132,8,1132,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_andBool_`(B,#token("true","Bool"))=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(72139ee1f2b9362a47514de6503329ccf3c27e74e3ebfa0c0fe26321ec13f281), org.kframework.attributes.Location(Location(1131,8,1131,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("72139ee1f2b9362a47514de6503329ccf3c27e74e3ebfa0c0fe26321ec13f281"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1131,8,1131,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_andBool_`(_Gen0,#token("false","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(fd61c826168aab115cd7f528702e8187ca16195bdcf29f42f33a32c83afebb12), org.kframework.attributes.Location(Location(1133,8,1133,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("fd61c826168aab115cd7f528702e8187ca16195bdcf29f42f33a32c83afebb12"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1133,8,1133,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_andBool_`(#token("true","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5b9db8dba12010819161cc42dadccd0adf0100a47c21f884ae66c0a3d5483a1f), org.kframework.attributes.Location(Location(1130,8,1130,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1130,8,1130,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// 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(1137,8,1137,36)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1137,8,1137,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_andThenBool_`(K,#token("true","Bool"))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2cfb33affb9c668d39a4a7267156085e1dbd3584fc7925b1aa9a1672bb9eab9f), org.kframework.attributes.Location(Location(1136,8,1136,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("2cfb33affb9c668d39a4a7267156085e1dbd3584fc7925b1aa9a1672bb9eab9f"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1136,8,1136,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_andThenBool_`(_Gen0,#token("false","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(198861009d03d8f5220000f16342962720be289ca0d49b12953fb2693e2fea01), org.kframework.attributes.Location(Location(1138,8,1138,36)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("198861009d03d8f5220000f16342962720be289ca0d49b12953fb2693e2fea01"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1138,8,1138,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_andThenBool_`(#token("true","Bool"),K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(78a3191cbbdec57b0f411f41291076c8124bb0d9b6b57905674b2c6858d78689), org.kframework.attributes.Location(Location(1135,8,1135,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1135,8,1135,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_divInt_`(I1,I2)=>`_/Int_`(`_-Int_`(I1,`_modInt_`(I1,I2)),I2) requires `_=/=Int_`(I2,#token("0","Int")) ensures #token("true","Bool") [UNIQUE_ID(83dcf9bc8c69f131715bc7a92d06c99b9a2b5f4c4fdafb69e6fdb2f1822712d4), org.kframework.attributes.Location(Location(1427,8,1428,23)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [symbol(#ruleRequires)])] + axiom{R} \implies{R} ( + \and{R}( + \equals{SortBool{},R}( + Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarI2:SortInt{},\dv{SortInt{}}("0")), + \dv{SortBool{}}("true")), + \and{R} ( + \in{SortInt{}, R} ( + X0:SortInt{}, + VarI1:SortInt{} + ),\and{R} ( + \in{SortInt{}, R} ( + X1:SortInt{}, + VarI2:SortInt{} + ), + \top{R} () + ))), + \equals{SortInt{},R} ( + Lbl'Unds'divInt'Unds'{}(X0:SortInt{},X1:SortInt{}), + \and{SortInt{}} ( + Lbl'UndsSlsh'Int'Unds'{}(Lbl'Unds'-Int'Unds'{}(VarI1:SortInt{},Lbl'Unds'modInt'Unds'{}(VarI1:SortInt{},VarI2:SortInt{})),VarI2:SortInt{}), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("83dcf9bc8c69f131715bc7a92d06c99b9a2b5f4c4fdafb69e6fdb2f1822712d4"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1427,8,1428,23)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_dividesInt__INT-COMMON_Bool_Int_Int`(I1,I2)=>`_==Int_`(`_%Int_`(I2,I1),#token("0","Int")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(fd8facae0061fe5bc5c406f7ad2ed5d8d21960bf1118c9b240451253064dadb5), org.kframework.attributes.Location(Location(1439,8,1439,58)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortInt{}, R} ( + X0:SortInt{}, + VarI1:SortInt{} + ),\and{R} ( + \in{SortInt{}, R} ( + X1:SortInt{}, + VarI2:SortInt{} + ), + \top{R} () + ))), + \equals{SortBool{},R} ( + Lbl'Unds'dividesInt'UndsUnds'INT-COMMON'Unds'Bool'Unds'Int'Unds'Int{}(X0:SortInt{},X1:SortInt{}), + \and{SortBool{}} ( + Lbl'UndsEqlsEqls'Int'Unds'{}(Lbl'UndsPerc'Int'Unds'{}(VarI2:SortInt{},VarI1:SortInt{}),\dv{SortInt{}}("0")), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("fd8facae0061fe5bc5c406f7ad2ed5d8d21960bf1118c9b240451253064dadb5"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1439,8,1439,58)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_impliesBool_`(B,#token("false","Bool"))=>`notBool_`(B) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(93b8d798abd6d9999e0e733384ad161e9a0bd2f074623a742afdc63964380aba), org.kframework.attributes.Location(Location(1157,8,1157,45)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("93b8d798abd6d9999e0e733384ad161e9a0bd2f074623a742afdc63964380aba"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1157,8,1157,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_impliesBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2b4994db7b40b72dc09ac8d5d036263b215c37d45f45d764251d8b607a7592ba), org.kframework.attributes.Location(Location(1156,8,1156,39)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("2b4994db7b40b72dc09ac8d5d036263b215c37d45f45d764251d8b607a7592ba"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1156,8,1156,39)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), 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(1155,8,1155,40)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1155,8,1155,40)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_impliesBool_`(#token("true","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(da818c43c21c5fb2cced7e02a74b6b4191d323de2967a671b961ad28550f3c7d), org.kframework.attributes.Location(Location(1154,8,1154,36)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1154,8,1154,36)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_modInt_`(I1,I2)=>`_%Int_`(`_+Int_`(`_%Int_`(I1,`absInt(_)_INT-COMMON_Int_Int`(I2)),`absInt(_)_INT-COMMON_Int_Int`(I2)),`absInt(_)_INT-COMMON_Int_Int`(I2)) requires `_=/=Int_`(I2,#token("0","Int")) ensures #token("true","Bool") [UNIQUE_ID(44257f63a99a0583c2d10058edbff90118966e30914b3a637b8315212c681bc4), concrete, org.kframework.attributes.Location(Location(1430,5,1433,23)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [symbol(#ruleRequires)]), simplification] + axiom{R} \implies{R} ( + \equals{SortBool{},R}( + Lbl'UndsEqlsSlshEqls'Int'Unds'{}(VarI2:SortInt{},\dv{SortInt{}}("0")), + \dv{SortBool{}}("true")), + \equals{SortInt{},R} ( + Lbl'Unds'modInt'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}), + \and{SortInt{}} ( + Lbl'UndsPerc'Int'Unds'{}(Lbl'UndsPlus'Int'Unds'{}(Lbl'UndsPerc'Int'Unds'{}(VarI1:SortInt{},LblabsInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(VarI2:SortInt{})),LblabsInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(VarI2:SortInt{})),LblabsInt'LParUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int{}(VarI2:SortInt{})), + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("44257f63a99a0583c2d10058edbff90118966e30914b3a637b8315212c681bc4"), concrete{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1430,5,1433,23)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_modInt_`(X,N)=>X requires `_andBool_`(`_<=Int_`(#token("0","Int"),X),`_B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(a5bb27ab54700cb845d17b12e0b0a4cbd5c8944272bcbe0d15ccc0b44d0049ff), org.kframework.attributes.Location(Location(1147,8,1147,32)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("a5bb27ab54700cb845d17b12e0b0a4cbd5c8944272bcbe0d15ccc0b44d0049ff"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1147,8,1147,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_orBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(942af273100b5a3c1fb3d0c8cc92b0bf845a7b34444c5a6c35b7d3fe72bef48e), org.kframework.attributes.Location(Location(1145,8,1145,34)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("942af273100b5a3c1fb3d0c8cc92b0bf845a7b34444c5a6c35b7d3fe72bef48e"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1145,8,1145,34)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_orBool_`(#token("false","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(991a3290bc7b6dca75d676a72a848ec6b2bd2827fb0e9626252aa1507394ca1b), org.kframework.attributes.Location(Location(1146,8,1146,32)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1146,8,1146,32)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// 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(1144,8,1144,34)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1144,8,1144,34)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_orElseBool_`(K,#token("false","Bool"))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(13cf42d440f9a7a360a8136ee4b35ae7b99501f515322d214c3b866691f4713b), org.kframework.attributes.Location(Location(1152,8,1152,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("13cf42d440f9a7a360a8136ee4b35ae7b99501f515322d214c3b866691f4713b"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1152,8,1152,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_orElseBool_`(_Gen0,#token("true","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(2459cad4fbb946a5c7f71565601afeeec79f05f41497b1f7ef547578c88f3158), org.kframework.attributes.Location(Location(1150,8,1150,33)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("2459cad4fbb946a5c7f71565601afeeec79f05f41497b1f7ef547578c88f3158"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1150,8,1150,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_orElseBool_`(#token("false","Bool"),K)=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(eb8c85dac19a5951f694b65269c2b17c80d6d126d6a367958e4a5d736a880ecf), org.kframework.attributes.Location(Location(1151,8,1151,37)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1151,8,1151,37)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// 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(1149,8,1149,33)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1149,8,1149,33)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_xorBool_`(B,B)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(9a6d91cd75cd777b0d4db536b3e4b20578e74fe650e644b55294da95fd2dba7f), org.kframework.attributes.Location(Location(1142,8,1142,38)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1142,8,1142,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_xorBool_`(B,#token("false","Bool"))=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(69f518203376930fb76ce51df5dd0c6c81d19f71eba3a1852afa5301d02eb4fa), org.kframework.attributes.Location(Location(1141,8,1141,38)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)]), 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{}("69f518203376930fb76ce51df5dd0c6c81d19f71eba3a1852afa5301d02eb4fa"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1141,8,1141,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)"), simplification{}("")] + +// rule `_xorBool_`(#token("false","Bool"),B)=>B requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(73513655c09a595907ab9d26d67e27f01d14a3435743b77000c02d10f35c05bf), org.kframework.attributes.Location(Location(1140,8,1140,38)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1140,8,1140,38)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `_|Set__SET_Set_Set_Set`(S1,S2)=>`_Set_`(S1,`Set:difference`(S2,S1)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(c384edb8f3875244a593dda6163c3dee1bce5485e4e1848892aebc2bab67d2e9), concrete, org.kframework.attributes.Location(Location(749,8,749,45)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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{}("c384edb8f3875244a593dda6163c3dee1bce5485e4e1848892aebc2bab67d2e9"), concrete{}(), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(749,8,749,45)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `bitRangeInt(_,_,_)_INT-COMMON_Int_Int_Int_Int`(I,IDX,LEN)=>`_modInt_`(`_>>Int_`(I,IDX),`_<I requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(cf2cb8f038b4bdc4edb1334a3b8ced9cd296a7af43f0a1916e082a4e1aefa08b), org.kframework.attributes.Location(Location(1442,8,1442,28)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortInt{}, R} ( + X0:SortInt{}, + VarI:SortInt{} + ), + \top{R} () + )), + \equals{SortInt{},R} ( + LblfreshInt'LParUndsRParUnds'INT'Unds'Int'Unds'Int{}(X0:SortInt{}), + \and{SortInt{}} ( + VarI:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("cf2cb8f038b4bdc4edb1334a3b8ced9cd296a7af43f0a1916e082a4e1aefa08b"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1442,8,1442,28)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule getGeneratedCounterCell(``(_Gen0,_Gen1,_Gen2,Cell))=>Cell requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(551c4ed64b8c5b44b3ddddd4b2894e61a7de367903c9212cbae5f0decc721c4d)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortGeneratedTopCell{}, R} ( + X0:SortGeneratedTopCell{}, + Lbl'-LT-'generatedTop'-GT-'{}(Var'Unds'Gen0:SortKCell{},Var'Unds'Gen1:SortIntXCell{},Var'Unds'Gen2:SortIntYCell{},VarCell:SortGeneratedCounterCell{}) + ), + \top{R} () + )), + \equals{SortGeneratedCounterCell{},R} ( + LblgetGeneratedCounterCell{}(X0:SortGeneratedTopCell{}), + \and{SortGeneratedCounterCell{}} ( + VarCell:SortGeneratedCounterCell{}, + \top{SortGeneratedCounterCell{}}()))) + [UNIQUE'Unds'ID{}("551c4ed64b8c5b44b3ddddd4b2894e61a7de367903c9212cbae5f0decc721c4d")] + +// 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")] + +// rule initGeneratedTopCell(Init)=>``(initKCell(Init),initIntXCell(.KList),initIntYCell(.KList),initGeneratedCounterCell(.KList)) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4232149edccc8495e18f573682395917e1960f39b6efa25efec026f9b1bc0eba), 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{}),LblinitIntXCell{}(),LblinitIntYCell{}(),LblinitGeneratedCounterCell{}()), + \top{SortGeneratedTopCell{}}()))) + [UNIQUE'Unds'ID{}("4232149edccc8495e18f573682395917e1960f39b6efa25efec026f9b1bc0eba")] + +// rule initIntXCell(.KList)=>``(#token("0","Int")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(a69b8aef1ab77538d677702ab0ca58caccfb6a2d74fff60408d9333d75fae8c5), initializer] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + + \top{R} () + ), + \equals{SortIntXCell{},R} ( + LblinitIntXCell{}(), + \and{SortIntXCell{}} ( + Lbl'-LT-'int-x'-GT-'{}(\dv{SortInt{}}("0")), + \top{SortIntXCell{}}()))) + [UNIQUE'Unds'ID{}("a69b8aef1ab77538d677702ab0ca58caccfb6a2d74fff60408d9333d75fae8c5")] + +// rule initIntYCell(.KList)=>``(#token("0","Int")) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(76d1bd39cb992e9623742475db6a8f6a1850d45d6c1cadde4480b4aaf286dd48), initializer] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + + \top{R} () + ), + \equals{SortIntYCell{},R} ( + LblinitIntYCell{}(), + \and{SortIntYCell{}} ( + Lbl'-LT-'int-y'-GT-'{}(\dv{SortInt{}}("0")), + \top{SortIntYCell{}}()))) + [UNIQUE'Unds'ID{}("76d1bd39cb992e9623742475db6a8f6a1850d45d6c1cadde4480b4aaf286dd48")] + +// 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")] + +// rule isBool(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(495da551d13b205c8648618471ccfca028707f98eff21e6b11d591515ed6f29a), 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{}("495da551d13b205c8648618471ccfca028707f98eff21e6b11d591515ed6f29a"), 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(b0c8eb86594a387398bf96f2dbf773cff29d14b8a45c5f6701f205bf3d2f33ba), 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{}("b0c8eb86594a387398bf96f2dbf773cff29d14b8a45c5f6701f205bf3d2f33ba"), 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 isGeneratedTopCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ccb9226d9e6c0e476485f098ef162c6c2206ed3af1d8336ea3ae859b86bc4a8b), 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{}("ccb9226d9e6c0e476485f098ef162c6c2206ed3af1d8336ea3ae859b86bc4a8b"), 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(98049f5819962c7ee2b01436957b6cf8460b106979fa2c24f4c606bbf6cb1592), 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{}("98049f5819962c7ee2b01436957b6cf8460b106979fa2c24f4c606bbf6cb1592"), 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(105572a4ac107eeb518b37c4d6ed3e28732b83afb0ba085d02d339c4fc2140a0), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortInt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortInt{}, SortKItem{}}(Var'Unds'Gen1: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{}("105572a4ac107eeb518b37c4d6ed3e28732b83afb0ba085d02d339c4fc2140a0"), 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 isIntXCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(16a7a122707ae0a1656eaea3868c810e42f1efa5b26ae14fb2ce35ba41982fee), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortIntXCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCell{}, SortKItem{}}(Var'Unds'Gen1:SortIntXCell{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisIntXCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("16a7a122707ae0a1656eaea3868c810e42f1efa5b26ae14fb2ce35ba41982fee"), owise{}()] + +// rule isIntXCell(inj{IntXCell,KItem}(IntXCell))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5b32df20bb585d6f120ff30c3e5c407a4fb890e664e763668f65e8098a78d9bc)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCell{}, SortKItem{}}(VarIntXCell:SortIntXCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisIntXCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("5b32df20bb585d6f120ff30c3e5c407a4fb890e664e763668f65e8098a78d9bc")] + +// rule isIntXCellOpt(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(4d100887632e109c4c9cde3f566aae1f77a9cbeb8a19c59d60b8597c5cf0d985), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortIntXCellOpt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCellOpt{}, SortKItem{}}(Var'Unds'Gen0:SortIntXCellOpt{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisIntXCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("4d100887632e109c4c9cde3f566aae1f77a9cbeb8a19c59d60b8597c5cf0d985"), owise{}()] + +// rule isIntXCellOpt(inj{IntXCellOpt,KItem}(IntXCellOpt))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(bf6aa9f4f1ba25c9fa7214a7559ec8386ca4eff0a93a278fbffee9d20657c363)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCellOpt{}, SortKItem{}}(VarIntXCellOpt:SortIntXCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisIntXCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("bf6aa9f4f1ba25c9fa7214a7559ec8386ca4eff0a93a278fbffee9d20657c363")] + +// rule isIntYCell(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(090cba62d91ee179d0b69455f06f42be0c3305752e1a9983de8212296a16f331), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortIntYCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCell{}, SortKItem{}}(Var'Unds'Gen1:SortIntYCell{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisIntYCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("090cba62d91ee179d0b69455f06f42be0c3305752e1a9983de8212296a16f331"), owise{}()] + +// rule isIntYCell(inj{IntYCell,KItem}(IntYCell))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(8f38cad7ca168c2634cce0d4005e3e920bf12f9a93de96e33fa0b75553835ed6)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCell{}, SortKItem{}}(VarIntYCell:SortIntYCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisIntYCell{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("8f38cad7ca168c2634cce0d4005e3e920bf12f9a93de96e33fa0b75553835ed6")] + +// rule isIntYCellOpt(K)=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(ed7e77897d262bcfc064aa10f83d8bd023868bb5de9545d90243b62eb6816165), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortIntYCellOpt{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCellOpt{}, SortKItem{}}(Var'Unds'Gen1:SortIntYCellOpt{}),dotk{}()) + ), + \top{R} () + ) + )), + \bottom{R}() + ) + ), + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + VarK:SortK{} + ), + \top{R} () + ) + )), + \equals{SortBool{},R} ( + LblisIntYCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("false"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("ed7e77897d262bcfc064aa10f83d8bd023868bb5de9545d90243b62eb6816165"), owise{}()] + +// rule isIntYCellOpt(inj{IntYCellOpt,KItem}(IntYCellOpt))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(64243344b5122bcf64e8d360ee58fe86554b85dba7cf78749f1a801663e9bdb7)] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCellOpt{}, SortKItem{}}(VarIntYCellOpt:SortIntYCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortBool{},R} ( + LblisIntYCellOpt{}(X0:SortK{}), + \and{SortBool{}} ( + \dv{SortBool{}}("true"), + \top{SortBool{}}()))) + [UNIQUE'Unds'ID{}("64243344b5122bcf64e8d360ee58fe86554b85dba7cf78749f1a801663e9bdb7")] + +// 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(d30be57718b4b3745eaf2e99f875cfec7d5be2ff76bacde8a89bd4ab659d857f), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortKCell{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKCell{}, SortKItem{}}(Var'Unds'Gen1: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{}("d30be57718b4b3745eaf2e99f875cfec7d5be2ff76bacde8a89bd4ab659d857f"), 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(9a3f84195242c98b432c7c63a4189f4276cc3189445c5cf37ce08d9a6547b1f7), 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{}("9a3f84195242c98b432c7c63a4189f4276cc3189445c5cf37ce08d9a6547b1f7"), 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(f68a616e301c35586f68e97b729ae274278c3ef8fe6634711cfd3e1746bc0bc2), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortKConfigVar{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortKConfigVar{}, SortKItem{}}(Var'Unds'Gen0: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{}("f68a616e301c35586f68e97b729ae274278c3ef8fe6634711cfd3e1746bc0bc2"), 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(83812b6b9e31a764d66d89fd1c7e65b9b162d52c5aebfe99b1536e200a9590c2), 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{}("83812b6b9e31a764d66d89fd1c7e65b9b162d52c5aebfe99b1536e200a9590c2"), 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(9a9489adcf0279eca74c012bb1130bb9d30372cfbebc8e4ab4b173656c4d6613), 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{}("9a9489adcf0279eca74c012bb1130bb9d30372cfbebc8e4ab4b173656c4d6613"), 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(6f30a2087d0b19640df005437bc3f4665f41282666a72821b17b16c99ed5afee), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen0:SortMap{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortMap{}, SortKItem{}}(Var'Unds'Gen0: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{}("6f30a2087d0b19640df005437bc3f4665f41282666a72821b17b16c99ed5afee"), 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(2b5aadccd9b89faba72816867187d48d279d8c27c8bda1a1b3b0658bd82bb783), owise] + axiom{R} \implies{R} ( + \and{R} ( + \not{R} ( + \or{R} ( + \exists{R} (Var'Unds'Gen1:SortSet{}, + \and{R} ( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortSet{}, SortKItem{}}(Var'Unds'Gen1: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{}("2b5aadccd9b89faba72816867187d48d279d8c27c8bda1a1b3b0658bd82bb783"), 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(315c6cb31df289ea7e1d1874dad0a4a5d0782d308613629ea2ebccfb260e5c1c), 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{}("315c6cb31df289ea7e1d1874dad0a4a5d0782d308613629ea2ebccfb260e5c1c"), 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 ite{K}(C,B1,_Gen0)=>B1 requires C ensures #token("true","Bool") [UNIQUE_ID(1ff8f4d71e4c13084eed473b08740da83c4cc7f1875d340d86dc72124c48b4a0), org.kframework.attributes.Location(Location(2320,8,2320,59)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [symbol(#ruleRequires)])] + 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} ( + Lblite{SortK{}}(X0:SortBool{},X1:SortK{},X2:SortK{}), + \and{SortK{}} ( + VarB1:SortK{}, + \top{SortK{}}()))) + [UNIQUE'Unds'ID{}("1ff8f4d71e4c13084eed473b08740da83c4cc7f1875d340d86dc72124c48b4a0"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2320,8,2320,59)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule ite{K}(C,_Gen0,B2)=>B2 requires `notBool_`(C) ensures #token("true","Bool") [UNIQUE_ID(2f3f58a93926913fc5ca147dfd8d3d612508bc8ff67412ef10935df7c09554d5), org.kframework.attributes.Location(Location(2321,8,2321,67)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [symbol(#ruleRequires)])] + 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} ( + Lblite{SortK{}}(X0:SortBool{},X1:SortK{},X2:SortK{}), + \and{SortK{}} ( + VarB2:SortK{}, + \top{SortK{}}()))) + [UNIQUE'Unds'ID{}("2f3f58a93926913fc5ca147dfd8d3d612508bc8ff67412ef10935df7c09554d5"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(2321,8,2321,67)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `minInt(_,_)_INT-COMMON_Int_Int_Int`(I1,I2)=>I1 requires `_I2 requires `_>=Int_`(I1,I2) ensures #token("true","Bool") [UNIQUE_ID(e1effeabf96bb3a3beffd5b679ad5df95c4f8bbf42872b0793331e52a8470fb3), org.kframework.attributes.Location(Location(1436,8,1436,57)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody "requires" Bool [symbol(#ruleRequires)])] + axiom{R} \implies{R} ( + \and{R}( + \equals{SortBool{},R}( + Lbl'Unds-GT-Eqls'Int'Unds'{}(VarI1:SortInt{},VarI2:SortInt{}), + \dv{SortBool{}}("true")), + \and{R} ( + \in{SortInt{}, R} ( + X0:SortInt{}, + VarI1:SortInt{} + ),\and{R} ( + \in{SortInt{}, R} ( + X1:SortInt{}, + VarI2:SortInt{} + ), + \top{R} () + ))), + \equals{SortInt{},R} ( + LblminInt'LParUndsCommUndsRParUnds'INT-COMMON'Unds'Int'Unds'Int'Unds'Int{}(X0:SortInt{},X1:SortInt{}), + \and{SortInt{}} ( + VarI2:SortInt{}, + \top{SortInt{}}()))) + [UNIQUE'Unds'ID{}("e1effeabf96bb3a3beffd5b679ad5df95c4f8bbf42872b0793331e52a8470fb3"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1436,8,1436,57)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `notBool_`(#token("false","Bool"))=>#token("true","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(17ebc68421572b8ebe609c068fb49cbb6cbbe3246e2142257ad8befdda38f415), org.kframework.attributes.Location(Location(1128,8,1128,29)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1128,8,1128,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `notBool_`(#token("true","Bool"))=>#token("false","Bool") requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(53fc758ece1ff16581673016dfacc556cc30fcf6b3c35b586f001d76a1f9336c), org.kframework.attributes.Location(Location(1127,8,1127,29)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + 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(1127,8,1127,29)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// rule `project:IntXCell`(inj{IntXCell,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f9e46f8f55f20c0450c27b2f55c027c21562bcad1c88c58fa7024be36407996d), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCell{}, SortKItem{}}(VarK:SortIntXCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortIntXCell{},R} ( + Lblproject'Coln'IntXCell{}(X0:SortK{}), + \and{SortIntXCell{}} ( + VarK:SortIntXCell{}, + \top{SortIntXCell{}}()))) + [UNIQUE'Unds'ID{}("f9e46f8f55f20c0450c27b2f55c027c21562bcad1c88c58fa7024be36407996d")] + +// rule `project:IntXCellOpt`(inj{IntXCellOpt,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(5a4283d0cb110a0e5f0659a321905ab22c576a11b64f6d521ae3497a398bbb94), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntXCellOpt{}, SortKItem{}}(VarK:SortIntXCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortIntXCellOpt{},R} ( + Lblproject'Coln'IntXCellOpt{}(X0:SortK{}), + \and{SortIntXCellOpt{}} ( + VarK:SortIntXCellOpt{}, + \top{SortIntXCellOpt{}}()))) + [UNIQUE'Unds'ID{}("5a4283d0cb110a0e5f0659a321905ab22c576a11b64f6d521ae3497a398bbb94")] + +// rule `project:IntYCell`(inj{IntYCell,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(7cf8ccaf45d40a83d0fd2dcc3f1fdd763946c995f9ac254de51ae762516d08e8), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCell{}, SortKItem{}}(VarK:SortIntYCell{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortIntYCell{},R} ( + Lblproject'Coln'IntYCell{}(X0:SortK{}), + \and{SortIntYCell{}} ( + VarK:SortIntYCell{}, + \top{SortIntYCell{}}()))) + [UNIQUE'Unds'ID{}("7cf8ccaf45d40a83d0fd2dcc3f1fdd763946c995f9ac254de51ae762516d08e8")] + +// rule `project:IntYCellOpt`(inj{IntYCellOpt,KItem}(K))=>K requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(af6087e91f1d959fadcb210843f9cba2b4cb67a928d13d39d97ccacd53f7ee56), projection] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortK{}, R} ( + X0:SortK{}, + kseq{}(inj{SortIntYCellOpt{}, SortKItem{}}(VarK:SortIntYCellOpt{}),dotk{}()) + ), + \top{R} () + )), + \equals{SortIntYCellOpt{},R} ( + Lblproject'Coln'IntYCellOpt{}(X0:SortK{}), + \and{SortIntYCellOpt{}} ( + VarK:SortIntYCellOpt{}, + \top{SortIntYCellOpt{}}()))) + [UNIQUE'Unds'ID{}("af6087e91f1d959fadcb210843f9cba2b4cb67a928d13d39d97ccacd53f7ee56")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// 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")] + +// rule pushList(K,L1)=>`_List_`(`ListItem`(K),L1) requires #token("true","Bool") ensures #token("true","Bool") [UNIQUE_ID(f6967050cc4ec32c2d34d52f5577e09120f730420d2c5dc838cba81d04c57adf), org.kframework.attributes.Location(Location(954,8,954,54)), org.kframework.attributes.Source(Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)), org.kframework.definition.Production(syntax #RuleContent ::= #RuleBody [symbol(#ruleNoConditions)])] + axiom{R} \implies{R} ( + \and{R}( + \top{R}(), + \and{R} ( + \in{SortKItem{}, R} ( + X0:SortKItem{}, + VarK:SortKItem{} + ),\and{R} ( + \in{SortList{}, R} ( + X1:SortList{}, + VarL1:SortList{} + ), + \top{R} () + ))), + \equals{SortList{},R} ( + LblpushList{}(X0:SortKItem{},X1:SortList{}), + \and{SortList{}} ( + Lbl'Unds'List'Unds'{}(LblListItem{}(VarK:SortKItem{}),VarL1:SortList{}), + \top{SortList{}}()))) + [UNIQUE'Unds'ID{}("f6967050cc4ec32c2d34d52f5577e09120f730420d2c5dc838cba81d04c57adf"), org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(954,8,954,54)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/nix/store/j8rpqwcid6j2f946ajlvvhriqiyb6cla-k-7.1.99-7dfd927dc1a7a590576303f8527ed2a68f4b3691/include/kframework/builtin/domains.md)")] + +// rule `signExtendBitRangeInt(_,_,_)_INT-COMMON_Int_Int_Int_Int`(I,IDX,LEN)=>`_-Int_`(`_modInt_`(`_+Int_`(`bitRangeInt(_,_,_)_INT-COMMON_Int_Int_Int_Int`(I,IDX,LEN),`_<_`(@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{}("")] + +endmodule [org'Stop'kframework'Stop'attributes'Stop'Location{}("Location(1,1,38,10)"), org'Stop'kframework'Stop'attributes'Stop'Source{}("Source(/home/geo2a/Workspace/RV/haskell-backend/other-pr/booster/test/rpc-integration/resources/syntactic-simplification.k)")] diff --git a/booster/test/rpc-integration/resources/syntactic-simplification.k b/booster/test/rpc-integration/resources/syntactic-simplification.k new file mode 100644 index 0000000000..f76435cf94 --- /dev/null +++ b/booster/test/rpc-integration/resources/syntactic-simplification.k @@ -0,0 +1,38 @@ +module SYNTACTIC-SIMPLIFICATION + imports INT + imports BOOL + + syntax State ::= test1Init() + | test1State1() + | test1State2() + + configuration $PGM:State ~> .K + 0:Int + 0:Int + + //////////////////////////////////////////////////////////////////////////////// + // + //////////////////////////////////////////////////////////////////////////////// + rule [test1-init]: test1Init() => test1State1() ... + _ => ?X + _ => ?Y + ensures ?X test1State1() => test1State2() ... + X + requires X true + requires X state-test1Init.json +// then edit state-test1Init.json to substitute test1State1() for test1Init() + +endmodule diff --git a/booster/test/rpc-integration/resources/syntactic-simplification.kompile b/booster/test/rpc-integration/resources/syntactic-simplification.kompile new file mode 100755 index 0000000000..daf7a3c4f9 --- /dev/null +++ b/booster/test/rpc-integration/resources/syntactic-simplification.kompile @@ -0,0 +1,45 @@ +set -eux + +SCRIPT_DIR=$(dirname $0) +PLUGIN_DIR=${PLUGIN_DIR:-""} + +if [ -z "$PLUGIN_DIR" ]; then + echo "PLUGIN_DIR required to link in a crypto plugin dependency" + exit 1 +else + for lib in libff libcryptopp blake2; do + LIBFILE=$(find ${PLUGIN_DIR} -name "${lib}.a" | head -1) + [ -z "$LIBFILE" ] && (echo "[Error] Unable to locate ${lib}.a"; exit 1) + PLUGIN_LIBS+="$LIBFILE " + PLUGIN_INCLUDE+="-I$(dirname $LIBFILE) -I$(dirname $LIBFILE)/../include " + done + #PLUGIN_CPP=$(find ${PLUGIN_DIR}/plugin-c -name "*.cpp") + PLUGIN_CPP="${PLUGIN_DIR}/include/plugin-c/crypto.cpp ${PLUGIN_DIR}/include/plugin-c/plugin_util.cpp" +fi + +NAME=$(basename ${0%.kompile}) +NAMETGZ=$(basename ${0%.kompile}) + + +# provide haskell definition +cp ${NAME}.haskell.kore ${NAME}.kore + +# Regenerate llvm backend decision tree +mkdir -p ./dt +llvm-kompile-matching ${NAME}.llvm.kore qbaL ./dt 0 + +# kompile llvm-definition to interpreter + +case "$OSTYPE" in + linux*) LPROCPS="-lprocps" ;; + *) LPROCPS="" ;; +esac + +llvm-kompile ${NAME}.llvm.kore ./dt c -- \ + -fPIC -std=c++17 -o interpreter \ + $PLUGIN_LIBS $PLUGIN_INCLUDE $PLUGIN_CPP \ + -lcrypto -lssl -lsecp256k1 $LPROCPS +mv interpreter.* ${NAME}.dylib + +# remove temporary artefacts +rm -r dt diff --git a/booster/test/rpc-integration/resources/syntactic-simplification.llvm.kore b/booster/test/rpc-integration/resources/syntactic-simplification.llvm.kore new file mode 120000 index 0000000000..60a762564d --- /dev/null +++ b/booster/test/rpc-integration/resources/syntactic-simplification.llvm.kore @@ -0,0 +1 @@ +3934-smt.llvm.kore \ No newline at end of file diff --git a/booster/test/rpc-integration/test-syntactic-simplification/README.md b/booster/test/rpc-integration/test-syntactic-simplification/README.md new file mode 100644 index 0000000000..c591bfa865 --- /dev/null +++ b/booster/test/rpc-integration/test-syntactic-simplification/README.md @@ -0,0 +1,7 @@ +# Test application of syntactic simplification rules + +See `../resourses/syntactic-simplification.k`. + +We have to keep `../resourses/syntactic-simplification.haskell.kore`, the K front-end does not yet support the `syntactic` attribute. The Kore encoding of the simplification rule `test1-simplify` is manually modified to contain the attribute `syntactic{}("1")`. `../resourses/syntactic-simplification.haskell.kore` should be removed from Git once the compiler supports this feature. + +We also need an LLVM definition, and we are re-using ``../resourses/3934-smt.llvm.kore` as it is checked-in, but any definition with `INT` and `BOOL` would work. diff --git a/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json b/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json new file mode 100644 index 0000000000..ba5096f774 --- /dev/null +++ b/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json @@ -0,0 +1,268 @@ +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "reason": "stuck", + "depth": 2, + "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": "Lbltest1State2'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State", + "sorts": [], + "args": [] + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int-x'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'X0", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int-y'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'Y0", + "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'Unds-LT-'Int'Unds'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'X0", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "100" + } + ] + } + }, + { + "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'Unds-LT-'Int'Unds'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'X0", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + { + "tag": "EVar", + "name": "Var'Ques'Y0", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + } + }, + { + "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'Unds-LT-'Int'Unds'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'Y0", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + }, + { + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + }, + "value": "50" + } + ] + } + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/booster/test/rpc-integration/test-syntactic-simplification/state-test1Init.execute b/booster/test/rpc-integration/test-syntactic-simplification/state-test1Init.execute new file mode 100644 index 0000000000..dea9402c12 --- /dev/null +++ b/booster/test/rpc-integration/test-syntactic-simplification/state-test1Init.execute @@ -0,0 +1,113 @@ +{ + "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-'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": "Lbltest1Init'LParRParUnds'SYNTACTIC-SIMPLIFICATION'Unds'State", + "sorts": [], + "args": [] + } + ] + }, + { + "tag": "App", + "name": "dotk", + "sorts": [], + "args": [] + } + ] + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int-x'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'X", + "sort": { + "tag": "SortApp", + "name": "SortInt", + "args": [] + } + } + ] + }, + { + "tag": "App", + "name": "Lbl'-LT-'int-y'-GT-'", + "sorts": [], + "args": [ + { + "tag": "EVar", + "name": "Var'Ques'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" + } + ] + } + ] + } + ] + } +} diff --git a/scripts/booster-integration-tests.sh b/scripts/booster-integration-tests.sh index 3a24d3db64..73c3c9c86b 100755 --- a/scripts/booster-integration-tests.sh +++ b/scripts/booster-integration-tests.sh @@ -43,6 +43,8 @@ for dir in $(ls -d test-*); do ;; "condition-filtering") SERVER=$KORE_RPC_BOOSTER ./runDirectoryTest.sh test-$name $@ + ;; + "syntactic-simplification") SERVER=$BOOSTER_DEV SERVER_OPTS="--no-smt" ./runDirectoryTest.sh test-$name $@ ;; "questionmark-vars" | "simplify-smt") From f17af8a325b04a8902339fc3af7e9d967d807a74 Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 12:16:13 +0200 Subject: [PATCH 04/14] Add matchTermsWithSubst --- booster/library/Booster/Pattern/Match.hs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/booster/library/Booster/Pattern/Match.hs b/booster/library/Booster/Pattern/Match.hs index dd8d82caa0..0f1e0dd15a 100644 --- a/booster/library/Booster/Pattern/Match.hs +++ b/booster/library/Booster/Pattern/Match.hs @@ -10,6 +10,7 @@ module Booster.Pattern.Match ( FailReason (..), Substitution, matchTerms, + matchTermsWithSubst, checkSubsort, SortError (..), ) where @@ -121,6 +122,10 @@ instance FromModifiersT mods => Pretty (PrettyWithModifiers mods FailReason) whe type Substitution = Map Variable Term +-- | Specialisation of @matchTermsWithSubst@ to an empty initial substitution +matchTerms :: MatchType -> KoreDefinition -> Term -> Term -> MatchResult +matchTerms matchType def = matchTermsWithSubst matchType def mempty + {- | Attempts to find a simple unifying substitution for the given terms. @@ -131,8 +136,9 @@ type Substitution = Map Variable Term to ensure that we always produce a matching substitution without having to check after running the matcher -} -matchTerms :: MatchType -> KoreDefinition -> Term -> Term -> MatchResult -matchTerms matchType KoreDefinition{sorts} term1 term2 = +matchTermsWithSubst :: + MatchType -> KoreDefinition -> Substitution -> Term -> Term -> MatchResult +matchTermsWithSubst matchType KoreDefinition{sorts} knownSubst term1 term2 = let runMatch :: MatchState -> MatchResult runMatch = fromEither @@ -153,7 +159,7 @@ matchTerms matchType KoreDefinition{sorts} term1 term2 = else runMatch State - { mSubstitution = Map.empty + { mSubstitution = knownSubst , mQueue = Seq.singleton (term1, term2) -- PriorityQueue.singleton (term1, term2) RegularTerm () , mMapQueue = mempty , mIndeterminate = [] From 8c571c10b6f200d2f69881d123690ddec4350605 Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 12:19:33 +0200 Subject: [PATCH 05/14] Add CtxSyntactic --- kore-rpc-types/src/Kore/JsonRpc/Types/ContextLog.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/kore-rpc-types/src/Kore/JsonRpc/Types/ContextLog.hs b/kore-rpc-types/src/Kore/JsonRpc/Types/ContextLog.hs index 7d382a5261..b47b6da606 100644 --- a/kore-rpc-types/src/Kore/JsonRpc/Types/ContextLog.hs +++ b/kore-rpc-types/src/Kore/JsonRpc/Types/ContextLog.hs @@ -38,6 +38,7 @@ data SimpleContext | CtxUnify | CtxDefinedness | CtxConstraint + | CtxSyntactic | CtxSMT | CtxLlvm | -- results From 3ca61d1ecc4529559345f62f5f680b57a720e9ff Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 13 Aug 2024 12:28:03 +0200 Subject: [PATCH 06/14] Refactor requires check, use syntactic clauses --- .../library/Booster/Pattern/ApplyEquations.hs | 354 +++++++++++++----- 1 file changed, 252 insertions(+), 102 deletions(-) diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index a410afebe0..7109b14633 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -842,10 +842,25 @@ applyEquation term rule = -- check required constraints from lhs. -- Reaction on false/indeterminate varies depending on the equation's type (function/simplification), -- see @handleSimplificationEquation@ and @handleFunctionEquation@ - checkRequires subst - -- check ensured conditions, filter any true ones, prune if any is false - ensuredConditions <- checkEnsures subst + -- instantiate the requires clause with the obtained substitution + let rawRequired = + concatMap + splitBoolPredicates + rule.requires + -- required = map (coerce . substituteInTerm subst . coerce) rawRequired + knownPredicates <- (.predicates) <$> lift getState + + let (syntacticRequires, restRequires) = case rule.attributes.syntacticClauses of + SyntacticClauses [] -> ([], rawRequired) + SyntacticClauses _syntactic -> ([head rawRequired], tail rawRequired) -- TODO should use _syntactic to select + + -- check required conditions + withContext CtxConstraint $ + checkRequires subst (Set.toList knownPredicates) syntacticRequires restRequires + + -- check all ensured conditions together with the path condition + ensuredConditions <- checkEnsures rule subst lift $ pushConstraints $ Set.fromList ensuredConditions -- when a new path condition is added, invalidate the equation cache @@ -856,46 +871,9 @@ applyEquation term rule = \s -> s{cache = s.cache{equations = mempty}} pure $ substituteInTerm subst rule.rhs where - filterOutKnownConstraints :: Set Predicate -> [Predicate] -> EquationT io [Predicate] - filterOutKnownConstraints priorKnowledge constraitns = do - let (knownTrue, toCheck) = partition (`Set.member` priorKnowledge) constraitns - unless (null knownTrue) $ - getPrettyModifiers >>= \case - ModifiersRep (_ :: FromModifiersT mods => Proxy mods) -> - logMessage $ - renderOneLineText $ - "Known true side conditions (won't check):" - <+> hsep (intersperse "," $ map (pretty' @mods) knownTrue) - pure toCheck - - -- Simplify given predicate in a nested EquationT execution. - -- Call 'whenBottom' if it is Bottom, return Nothing if it is Top, - -- otherwise return the simplified remaining predicate. - checkConstraint whenBottom (Predicate p) = withContext CtxConstraint $ do - let fallBackToUnsimplifiedOrBottom :: EquationFailure -> EquationT io Term - fallBackToUnsimplifiedOrBottom = \case - UndefinedTerm{} -> pure FalseBool - _ -> pure p - -- exceptions need to be handled differently in the recursion, - -- falling back to the unsimplified constraint instead of aborting. - simplified <- - lift $ simplifyConstraint' True p `catch_` fallBackToUnsimplifiedOrBottom - case simplified of - FalseBool -> do - throwE . whenBottom $ coerce p - TrueBool -> pure Nothing - other -> pure . Just $ coerce other - allMustBeConcrete (AllConstrained Concrete) = True allMustBeConcrete _ = False - checkConcreteness :: - Concreteness -> - Map Variable Term -> - ExceptT - ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) - (EquationT io) - () checkConcreteness Unconstrained _ = pure () checkConcreteness (AllConstrained constrained) subst = mapM_ (\(var, t) -> mkCheck (toPair var) constrained t) $ Map.assocs subst @@ -942,74 +920,246 @@ applyEquation term rule = check $ Map.lookup Variable{variableSort = SortApp sortName [], variableName} subst - checkRequires :: - Substitution -> - ExceptT - ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) - (EquationT io) - () - checkRequires matchingSubst = do - ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers - -- instantiate the requires clause with the obtained substitution - let required = - concatMap - (splitBoolPredicates . coerce . substituteInTerm matchingSubst . coerce) - rule.requires - -- If the required condition is _syntactically_ present in - -- the prior (known constraints), we don't check it. - knownPredicates <- (.predicates) <$> lift getState - toCheck <- lift $ filterOutKnownConstraints knownPredicates required +filterOutKnownConstraints :: + forall io. + LoggerMIO io => + Set Predicate -> + [Predicate] -> + EquationT io [Predicate] +filterOutKnownConstraints priorKnowledge constraitns = do + let (knownTrue, toCheck) = partition (`Set.member` priorKnowledge) constraitns + unless (null knownTrue) $ + getPrettyModifiers >>= \case + ModifiersRep (_ :: FromModifiersT mods => Proxy mods) -> + logMessage $ + renderOneLineText $ + "Known true side conditions (won't check):" + <+> hsep (intersperse "," $ map (pretty' @mods) knownTrue) + pure toCheck - -- check the filtered requires clause conditions - unclearConditions <- - catMaybes - <$> mapM - ( checkConstraint $ \p -> (\ctxt -> ctxt $ logMessage ("Condition simplified to #Bottom." :: Text), ConditionFalse p) +checkRequires :: + forall io. + LoggerMIO io => + Substitution -> + [Predicate] -> + [Predicate] -> + [Predicate] -> + ExceptT + ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) + (EquationT io) + () +checkRequires currentSubst knownPredicates syntacticRequires restRequires' = do + ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers + case syntacticRequires of + [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires' + _ -> + withContext CtxSyntactic $ + checkRequiresSyntactically + syntacticRequires + currentSubst + knownPredicates + restRequires' + +checkRequiresSyntactically :: + forall io. + LoggerMIO io => + [Predicate] -> + Substitution -> + [Predicate] -> + [Predicate] -> + ExceptT + ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) + (EquationT io) + () +checkRequiresSyntactically syntacticRequires currentSubst knownPredicates restRequires' = do + ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers + case syntacticRequires of + [] -> + unless (null restRequires') $ + -- no more @syntacticRequires@, but unresolved conditions remain: abort + throwRemainingRequires currentSubst restRequires' + (headSyntacticRequires : restSyntacticRequires) -> do + koreDef <- (.definition) <$> lift getConfig + case knownPredicates of + [] -> + unless (null restRequires') $ + -- no more @knownPredicates@, but unresolved conditions remain: abort + throwRemainingRequires currentSubst restRequires' + (c : cs) -> case matchTermsWithSubst Eval koreDef currentSubst (coerce headSyntacticRequires) (coerce c) of + MatchFailed{} -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' + MatchIndeterminate{} -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' + MatchSuccess newSubst -> + -- we got a substitution from matching @headSyntacticRequires@ against the clause @c@ of the path condition, + -- try applying it to @syntacticRequires <> restRequires'@, simplifying that with LLVM, + -- and filtering from the path condition + ( do + withContext CtxSubstitution + $ logMessage + $ WithJsonMessage + (object ["substitution" .= (bimap (externaliseTerm . Var) externaliseTerm <$> Map.toList newSubst)]) + $ renderOneLineText + $ "Substitution:" + <+> ( hsep $ + intersperse "," $ + map (\(k, v) -> pretty' @mods k <+> "->" <+> pretty' @mods v) $ + Map.toList newSubst + ) + + let substitited = map (coerce . substituteInTerm newSubst . coerce) (syntacticRequires <> restRequires') + simplified <- coerce <$> mapM simplifyWithLLVM substitited + stillUnclear <- lift $ filterOutKnownConstraints (Set.fromList knownPredicates) simplified + case stillUnclear of + [] -> pure () -- done + _ -> do + logMessage $ + renderOneLineText + ( "Uncertain about conditions in syntactic simplification rule: " + <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) + ) + -- @newSubst@ does not solve the conditions completely, repeat the process for @restSyntacticRequires@ + -- using the learned @newSubst@ + checkRequiresSyntactically restSyntacticRequires newSubst knownPredicates restRequires' + ) + `catchE` ( \case + (_, IndeterminateCondition{}) -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' + (_, ConditionFalse{}) -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' + err -> throwE err + ) + where + simplifyWithLLVM term = do + simplified <- + lift $ + simplifyConstraint' False term + `catch_` ( \case + UndefinedTerm{} -> pure FalseBool + _ -> pure term + ) + case simplified of + FalseBool -> do + throwE + ( \ctxt -> ctxt $ logMessage ("Condition simplified to #Bottom." :: Text) + , ConditionFalse . coerce $ term ) - toCheck + other -> pure other - -- unclear conditions may have been simplified and - -- could now be syntactically present in the path constraints, filter again - stillUnclear <- lift $ filterOutKnownConstraints knownPredicates unclearConditions + throwRemainingRequires subst preds = do + ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers + let substintuted = map (substituteInPredicate subst) preds + throwE + ( \ctx -> + ctx . logMessage $ + WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) preds]) $ + renderOneLineText + ( "Uncertain about conditions in syntactic simplification rule: " + <+> hsep (intersperse "," $ map (pretty' @mods) substintuted) + ) + , IndeterminateCondition restRequires' + ) - solver :: SMT.SMTContext <- (.smtSolver) <$> lift getConfig +checkRequiresSemantically :: + forall io. + LoggerMIO io => + Substitution -> + Set Predicate -> + [Predicate] -> + ExceptT + ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) + (EquationT io) + () +checkRequiresSemantically currentSubst knownPredicates restRequires' = do + ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers + + -- apply current substitution to restRequires + let restRequires = map (coerce . substituteInTerm currentSubst . coerce) restRequires' + toCheck <- lift $ filterOutKnownConstraints knownPredicates restRequires + unclearRequires <- + catMaybes + <$> mapM + ( checkConstraint $ \p -> (\ctxt -> ctxt $ logMessage ("Condition simplified to #Bottom." :: Text), ConditionFalse p) + ) + toCheck - -- check any conditions that are still unclear with the SMT solver - -- (or abort if no solver is being used), abort if still unclear after - unless (null stillUnclear) $ - lift (SMT.checkPredicates solver knownPredicates mempty (Set.fromList stillUnclear)) >>= \case - SMT.IsUnknown{} -> do - -- no solver or still unclear: abort - throwE - ( \ctx -> - ctx . logMessage $ - WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) stillUnclear]) $ - renderOneLineText - ( "Uncertain about conditions in rule: " <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) - ) - , IndeterminateCondition stillUnclear - ) - SMT.IsInvalid -> do - -- actually false given path condition: fail - let failedP = Predicate $ foldl1' AndTerm $ map coerce stillUnclear - throwE - ( \ctx -> - ctx . logMessage $ - WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) stillUnclear]) $ - renderOneLineText ("Required condition found to be false: " <> pretty' @mods failedP) - , ConditionFalse failedP - ) - SMT.IsValid{} -> do - -- can proceed - pure () + -- unclear conditions may have been simplified and + -- could now be syntactically present in the path constraints, filter again + stillUnclear <- lift $ filterOutKnownConstraints knownPredicates unclearRequires - checkEnsures :: - Substitution -> - ExceptT - ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) - (EquationT io) - [Predicate] - checkEnsures matchingSubst = do + -- check unclear requires-clauses in the context of known constraints (prior) + solver :: SMT.SMTContext <- (.smtSolver) <$> lift getConfig + + -- check any conditions that are still unclear with the SMT solver + -- (or abort if no solver is being used), abort if still unclear after + unless (null stillUnclear) $ + lift (SMT.checkPredicates solver knownPredicates mempty (Set.fromList stillUnclear)) >>= \case + SMT.IsUnknown{} -> do + -- no solver or still unclear: abort + throwE + ( \ctx -> + ctx . logMessage $ + WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) stillUnclear]) $ + renderOneLineText + ( "Uncertain about conditions in rule: " <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) + ) + , IndeterminateCondition stillUnclear + ) + SMT.IsInvalid -> do + -- actually false given path condition: fail + let failedP = Predicate $ foldl1' AndTerm $ map coerce stillUnclear + throwE + ( \ctx -> + ctx . logMessage $ + WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) stillUnclear]) $ + renderOneLineText ("Required condition found to be false: " <> pretty' @mods failedP) + , ConditionFalse failedP + ) + SMT.IsValid{} -> do + -- can proceed + pure () + +-- Simplify given predicate in a nested EquationT execution. +-- Call 'whenBottom' if it is Bottom, return Nothing if it is Top, +-- otherwise return the simplified remaining predicate. +checkConstraint :: + forall io. + LoggerMIO io => + ( Predicate -> + ( (EquationT io () -> EquationT io ()) -> EquationT io () + , ApplyEquationFailure + ) + ) -> + Predicate -> + ExceptT + ( (EquationT io () -> EquationT io ()) -> EquationT io () + , ApplyEquationFailure + ) + (EquationT io) + (Maybe Predicate) +checkConstraint whenBottom (Predicate p) = withContext CtxConstraint $ do + let fallBackToUnsimplifiedOrBottom :: EquationFailure -> EquationT io Term + fallBackToUnsimplifiedOrBottom = \case + UndefinedTerm{} -> pure FalseBool + _ -> pure p + -- exceptions need to be handled differently in the recursion, + -- falling back to the unsimplified constraint instead of aborting. + simplified <- + lift $ simplifyConstraint' True p `catch_` fallBackToUnsimplifiedOrBottom + case simplified of + FalseBool -> do + throwE . whenBottom $ coerce p + TrueBool -> pure Nothing + other -> pure . Just $ coerce other + +checkEnsures :: + forall io tag. + LoggerMIO io => + RewriteRule tag -> + Substitution -> + ExceptT + ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) + (EquationT io) + [Predicate] +checkEnsures + rule + matchingSubst = do ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers let ensured = concatMap From 908ddf6a4a6e70f0dfd7472df74881eb3ec61bde Mon Sep 17 00:00:00 2001 From: Georgy Lukyanov Date: Tue, 20 Aug 2024 14:40:40 +0200 Subject: [PATCH 07/14] Remove commented-out code --- booster/library/Booster/Definition/Attributes/Reader.hs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/booster/library/Booster/Definition/Attributes/Reader.hs b/booster/library/Booster/Definition/Attributes/Reader.hs index 02109bd470..dcec066542 100644 --- a/booster/library/Booster/Definition/Attributes/Reader.hs +++ b/booster/library/Booster/Definition/Attributes/Reader.hs @@ -172,15 +172,6 @@ readSyntacticClauses attributes = do | all isDigit (Text.unpack str) = first Text.pack $ readEither (Text.unpack str) | otherwise = Left $ "invalid syntactic clause" <> (Text.pack $ show str) --- where --- readWord8 str = --- readT [] = Right 50 -- HACK to accept `simplification()` from internal modules --- readT [n] --- | Text.null n = Right 50 -- HACK to accept `simplification("")` --- | all isDigit (Text.unpack n) = Priority <$> readEither (Text.unpack n) --- | otherwise = Left $ "invalid priority value " <> show n --- readT ns = Left $ "invalid priority value " <> show ns - instance HasAttributes ParsedSymbol where type Attributes ParsedSymbol = SymbolAttributes From 6bb4f96690c44d1b6e63e3363818c34de47e1862 Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Mon, 2 Sep 2024 14:51:47 +0100 Subject: [PATCH 08/14] loop over syntactic side-conditions before applying semantically --- .../library/Booster/Pattern/ApplyEquations.hs | 135 ++++++++---------- 1 file changed, 56 insertions(+), 79 deletions(-) diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index 7109b14633..f168eb0e3b 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -851,13 +851,10 @@ applyEquation term rule = -- required = map (coerce . substituteInTerm subst . coerce) rawRequired knownPredicates <- (.predicates) <$> lift getState - let (syntacticRequires, restRequires) = case rule.attributes.syntacticClauses of - SyntacticClauses [] -> ([], rawRequired) - SyntacticClauses _syntactic -> ([head rawRequired], tail rawRequired) -- TODO should use _syntactic to select - + let (syntacticRequires, restRequires) = partitionClauses rawRequired rule.attributes.syntacticClauses -- check required conditions - withContext CtxConstraint $ - checkRequires subst (Set.toList knownPredicates) syntacticRequires restRequires + withContext CtxConstraint $ withContext CtxSyntactic $ + checkRequiresSyntactically subst (Set.toList knownPredicates) syntacticRequires restRequires -- check all ensured conditions together with the path condition ensuredConditions <- checkEnsures rule subst @@ -937,94 +934,74 @@ filterOutKnownConstraints priorKnowledge constraitns = do <+> hsep (intersperse "," $ map (pretty' @mods) knownTrue) pure toCheck -checkRequires :: - forall io. - LoggerMIO io => - Substitution -> - [Predicate] -> - [Predicate] -> - [Predicate] -> - ExceptT - ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) - (EquationT io) - () -checkRequires currentSubst knownPredicates syntacticRequires restRequires' = do - ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers - case syntacticRequires of - [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires' - _ -> - withContext CtxSyntactic $ - checkRequiresSyntactically - syntacticRequires - currentSubst - knownPredicates - restRequires' +partitionClauses :: [a] -> SyntacticClauses -> ([a], [a]) +partitionClauses required (SyntacticClauses cs') = + let cs = Set.fromList cs' in + bimap (map snd) (map snd) $ + partition (\(idx, _elem) -> idx `Set.member` cs) $ zip [0..] required checkRequiresSyntactically :: forall io. LoggerMIO io => - [Predicate] -> Substitution -> [Predicate] -> [Predicate] -> + [Predicate] -> ExceptT ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) (EquationT io) () -checkRequiresSyntactically syntacticRequires currentSubst knownPredicates restRequires' = do +checkRequiresSyntactically currentSubst knownPredicates restRequires' syntacticRequires = do ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers case syntacticRequires of - [] -> - unless (null restRequires') $ - -- no more @syntacticRequires@, but unresolved conditions remain: abort - throwRemainingRequires currentSubst restRequires' + [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires' (headSyntacticRequires : restSyntacticRequires) -> do koreDef <- (.definition) <$> lift getConfig - case knownPredicates of - [] -> - unless (null restRequires') $ - -- no more @knownPredicates@, but unresolved conditions remain: abort + let loopOver = \case + [] -> + -- no more @knownPredicates@, but unresolved syntactic condition remains: abort throwRemainingRequires currentSubst restRequires' - (c : cs) -> case matchTermsWithSubst Eval koreDef currentSubst (coerce headSyntacticRequires) (coerce c) of - MatchFailed{} -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' - MatchIndeterminate{} -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' - MatchSuccess newSubst -> - -- we got a substitution from matching @headSyntacticRequires@ against the clause @c@ of the path condition, - -- try applying it to @syntacticRequires <> restRequires'@, simplifying that with LLVM, - -- and filtering from the path condition - ( do - withContext CtxSubstitution - $ logMessage - $ WithJsonMessage - (object ["substitution" .= (bimap (externaliseTerm . Var) externaliseTerm <$> Map.toList newSubst)]) - $ renderOneLineText - $ "Substitution:" - <+> ( hsep $ - intersperse "," $ - map (\(k, v) -> pretty' @mods k <+> "->" <+> pretty' @mods v) $ - Map.toList newSubst - ) - - let substitited = map (coerce . substituteInTerm newSubst . coerce) (syntacticRequires <> restRequires') - simplified <- coerce <$> mapM simplifyWithLLVM substitited - stillUnclear <- lift $ filterOutKnownConstraints (Set.fromList knownPredicates) simplified - case stillUnclear of - [] -> pure () -- done - _ -> do - logMessage $ - renderOneLineText - ( "Uncertain about conditions in syntactic simplification rule: " - <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) + (c : cs) -> case matchTermsWithSubst Eval koreDef currentSubst (coerce headSyntacticRequires) (coerce c) of + MatchFailed{} -> loopOver cs + MatchIndeterminate{} -> loopOver cs + MatchSuccess newSubst -> + -- we got a substitution from matching @headSyntacticRequires@ against the clause @c@ of the path condition, + -- try applying it to @syntacticRequires <> restRequires'@, simplifying that with LLVM, + -- and filtering from the path condition + ( do + withContext CtxSubstitution + $ logMessage + $ WithJsonMessage + (object ["substitution" .= (bimap (externaliseTerm . Var) externaliseTerm <$> Map.toList newSubst)]) + $ renderOneLineText + $ "Substitution:" + <+> ( hsep $ + intersperse "," $ + map (\(k, v) -> pretty' @mods k <+> "->" <+> pretty' @mods v) $ + Map.toList newSubst ) - -- @newSubst@ does not solve the conditions completely, repeat the process for @restSyntacticRequires@ - -- using the learned @newSubst@ - checkRequiresSyntactically restSyntacticRequires newSubst knownPredicates restRequires' - ) - `catchE` ( \case - (_, IndeterminateCondition{}) -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' - (_, ConditionFalse{}) -> checkRequiresSyntactically syntacticRequires currentSubst cs restRequires' - err -> throwE err - ) + + let substitited = map (coerce . substituteInTerm newSubst . coerce) (syntacticRequires <> restRequires') + simplified <- coerce <$> mapM simplifyWithLLVM substitited + stillUnclear <- lift $ filterOutKnownConstraints (Set.fromList knownPredicates) simplified + case stillUnclear of + [] -> pure () -- done + _ -> do + logMessage $ + renderOneLineText + ( "Uncertain about conditions in syntactic simplification rule: " + <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) + ) + -- @newSubst@ does not solve the conditions completely, repeat the process for @restSyntacticRequires@ + -- using the learned @newSubst@ + checkRequiresSyntactically newSubst knownPredicates restRequires' restSyntacticRequires + ) + `catchE` ( \case + (_, IndeterminateCondition{}) -> loopOver cs + (_, ConditionFalse{}) -> loopOver cs + err -> throwE err + ) + in loopOver knownPredicates where simplifyWithLLVM term = do simplified <- @@ -1044,14 +1021,14 @@ checkRequiresSyntactically syntacticRequires currentSubst knownPredicates restRe throwRemainingRequires subst preds = do ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers - let substintuted = map (substituteInPredicate subst) preds + let substituted = map (substituteInPredicate subst) preds throwE ( \ctx -> ctx . logMessage $ WithJsonMessage (object ["conditions" .= map (externaliseTerm . coerce) preds]) $ renderOneLineText ( "Uncertain about conditions in syntactic simplification rule: " - <+> hsep (intersperse "," $ map (pretty' @mods) substintuted) + <+> hsep (intersperse "," $ map (pretty' @mods) substituted) ) , IndeterminateCondition restRequires' ) From 263c8a713bf77e9e93dcdf43a6023306e0a999c0 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 2 Sep 2024 13:53:02 +0000 Subject: [PATCH 09/14] Format with fourmolu --- .../library/Booster/Pattern/ApplyEquations.hs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index f168eb0e3b..f6906f0451 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -853,8 +853,9 @@ applyEquation term rule = let (syntacticRequires, restRequires) = partitionClauses rawRequired rule.attributes.syntacticClauses -- check required conditions - withContext CtxConstraint $ withContext CtxSyntactic $ - checkRequiresSyntactically subst (Set.toList knownPredicates) syntacticRequires restRequires + withContext CtxConstraint $ + withContext CtxSyntactic $ + checkRequiresSyntactically subst (Set.toList knownPredicates) syntacticRequires restRequires -- check all ensured conditions together with the path condition ensuredConditions <- checkEnsures rule subst @@ -935,10 +936,11 @@ filterOutKnownConstraints priorKnowledge constraitns = do pure toCheck partitionClauses :: [a] -> SyntacticClauses -> ([a], [a]) -partitionClauses required (SyntacticClauses cs') = - let cs = Set.fromList cs' in - bimap (map snd) (map snd) $ - partition (\(idx, _elem) -> idx `Set.member` cs) $ zip [0..] required +partitionClauses required (SyntacticClauses cs') = + let cs = Set.fromList cs' + in bimap (map snd) (map snd) $ + partition (\(idx, _elem) -> idx `Set.member` cs) $ + zip [0 ..] required checkRequiresSyntactically :: forall io. @@ -1000,8 +1002,8 @@ checkRequiresSyntactically currentSubst knownPredicates restRequires' syntacticR (_, IndeterminateCondition{}) -> loopOver cs (_, ConditionFalse{}) -> loopOver cs err -> throwE err - ) - in loopOver knownPredicates + ) + in loopOver knownPredicates where simplifyWithLLVM term = do simplified <- From f03ad95befb6e2d65956abc78fe0cbad8e311d7e Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Mon, 2 Sep 2024 15:13:23 +0100 Subject: [PATCH 10/14] syntactic attribute should index starting with 1, not 0 --- booster/library/Booster/Pattern/ApplyEquations.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index f6906f0451..04c72aaf26 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -940,7 +940,7 @@ partitionClauses required (SyntacticClauses cs') = let cs = Set.fromList cs' in bimap (map snd) (map snd) $ partition (\(idx, _elem) -> idx `Set.member` cs) $ - zip [0 ..] required + zip [1 ..] required checkRequiresSyntactically :: forall io. From ef7343ee6a206355715b7d06746cfc5e4a30a07d Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Tue, 3 Sep 2024 11:56:35 +0100 Subject: [PATCH 11/14] add more logging --- .../library/Booster/Pattern/ApplyEquations.hs | 76 ++++++++++++++----- 1 file changed, 55 insertions(+), 21 deletions(-) diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index 04c72aaf26..0efd364bfe 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -853,9 +853,17 @@ applyEquation term rule = let (syntacticRequires, restRequires) = partitionClauses rawRequired rule.attributes.syntacticClauses -- check required conditions - withContext CtxConstraint $ - withContext CtxSyntactic $ - checkRequiresSyntactically subst (Set.toList knownPredicates) syntacticRequires restRequires + withContext CtxConstraint $ do + unless (null syntacticRequires) $ + withContext CtxSyntactic $ + logMessage $ + renderOneLineText $ + "Checking the following syntactically:" + <+> ( hsep $ + intersperse "," $ + map (pretty' @mods) syntacticRequires + ) + checkRequiresSyntactically subst (Set.toList knownPredicates) restRequires syntacticRequires -- check all ensured conditions together with the path condition ensuredConditions <- checkEnsures rule subst @@ -953,25 +961,47 @@ checkRequiresSyntactically :: ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) (EquationT io) () -checkRequiresSyntactically currentSubst knownPredicates restRequires' syntacticRequires = do +checkRequiresSyntactically currentSubst knownPredicates restRequires syntacticRequires = do ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers case syntacticRequires of - [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires' + [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires (headSyntacticRequires : restSyntacticRequires) -> do koreDef <- (.definition) <$> lift getConfig let loopOver = \case [] -> -- no more @knownPredicates@, but unresolved syntactic condition remains: abort - throwRemainingRequires currentSubst restRequires' - (c : cs) -> case matchTermsWithSubst Eval koreDef currentSubst (coerce headSyntacticRequires) (coerce c) of - MatchFailed{} -> loopOver cs - MatchIndeterminate{} -> loopOver cs + throwRemainingRequires currentSubst restRequires + ((c :: Predicate) : cs) -> case matchTermsWithSubst Eval koreDef currentSubst (coerce headSyntacticRequires) (coerce c) of + MatchFailed failReason -> do + withContext CtxSyntactic $ + withTermContext (coerce c) $ + withContext CtxMatch $ + withContext CtxFailure $ + logPretty' @mods failReason + loopOver cs + MatchIndeterminate remainder -> do + withContext CtxSyntactic $ + withTermContext (coerce c) $ + withContext CtxMatch $ + withContext CtxFailure $ + logMessage $ + WithJsonMessage (object ["remainder" .= (bimap externaliseTerm externaliseTerm <$> remainder)]) $ + renderOneLineText $ + "Uncertain about match with rule. Remainder:" + <+> ( hsep $ + punctuate comma $ + map (\(t1, t2) -> pretty' @mods t1 <+> "==" <+> pretty' @mods t2) $ + NonEmpty.toList remainder + ) + + loopOver cs MatchSuccess newSubst -> -- we got a substitution from matching @headSyntacticRequires@ against the clause @c@ of the path condition, -- try applying it to @syntacticRequires <> restRequires'@, simplifying that with LLVM, -- and filtering from the path condition ( do - withContext CtxSubstitution + withContext CtxSyntactic + $ withContext CtxSubstitution $ logMessage $ WithJsonMessage (object ["substitution" .= (bimap (externaliseTerm . Var) externaliseTerm <$> Map.toList newSubst)]) @@ -983,20 +1013,24 @@ checkRequiresSyntactically currentSubst knownPredicates restRequires' syntacticR Map.toList newSubst ) - let substitited = map (coerce . substituteInTerm newSubst . coerce) (syntacticRequires <> restRequires') - simplified <- coerce <$> mapM simplifyWithLLVM substitited - stillUnclear <- lift $ filterOutKnownConstraints (Set.fromList knownPredicates) simplified + let substitited = map (coerce . substituteInTerm newSubst . coerce) (syntacticRequires <> restRequires) + simplified <- withContext CtxSyntactic $ coerce <$> mapM simplifyWithLLVM substitited + stillUnclear <- + withContext CtxSyntactic $ + lift $ + filterOutKnownConstraints (Set.fromList knownPredicates) simplified case stillUnclear of [] -> pure () -- done _ -> do - logMessage $ - renderOneLineText - ( "Uncertain about conditions in syntactic simplification rule: " - <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) - ) + withContext CtxSyntactic $ + logMessage $ + renderOneLineText + ( "Uncertain about conditions in syntactic simplification rule: " + <+> hsep (intersperse "," $ map (pretty' @mods) stillUnclear) + ) -- @newSubst@ does not solve the conditions completely, repeat the process for @restSyntacticRequires@ -- using the learned @newSubst@ - checkRequiresSyntactically newSubst knownPredicates restRequires' restSyntacticRequires + checkRequiresSyntactically newSubst knownPredicates restRequires restSyntacticRequires ) `catchE` ( \case (_, IndeterminateCondition{}) -> loopOver cs @@ -1032,7 +1066,7 @@ checkRequiresSyntactically currentSubst knownPredicates restRequires' syntacticR ( "Uncertain about conditions in syntactic simplification rule: " <+> hsep (intersperse "," $ map (pretty' @mods) substituted) ) - , IndeterminateCondition restRequires' + , IndeterminateCondition restRequires ) checkRequiresSemantically :: @@ -1112,7 +1146,7 @@ checkConstraint :: ) (EquationT io) (Maybe Predicate) -checkConstraint whenBottom (Predicate p) = withContext CtxConstraint $ do +checkConstraint whenBottom (Predicate p) = do let fallBackToUnsimplifiedOrBottom :: EquationFailure -> EquationT io Term fallBackToUnsimplifiedOrBottom = \case UndefinedTerm{} -> pure FalseBool From 30106fbaedbeddf9dd41a4429eab39b4e8a73f87 Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Tue, 3 Sep 2024 15:11:57 +0100 Subject: [PATCH 12/14] make checkConcreteness less strict to accomodate for initially missing variables that only appear in the requires clause with syntactic --- booster/library/Booster/JsonRpc.hs | 2 +- .../library/Booster/Pattern/ApplyEquations.hs | 56 ++++++++++--------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/booster/library/Booster/JsonRpc.hs b/booster/library/Booster/JsonRpc.hs index 12a493738b..0a00d20d3e 100644 --- a/booster/library/Booster/JsonRpc.hs +++ b/booster/library/Booster/JsonRpc.hs @@ -269,7 +269,7 @@ respond stateVar request = (Left (ApplyEquations.EquationLoop _terms), _) -> pure . Left . RpcError.backendError $ RpcError.Aborted "equation loop detected" (Left other, _) -> - pure . Left . RpcError.backendError $ RpcError.Aborted (Text.pack . constructorName $ other) + pure . Left . RpcError.backendError $ RpcError.Aborted (Text.pack . show $ other) -- predicate only Right (Predicates ps) | null ps.boolPredicates && null ps.ceilPredicates && null ps.substitution && null ps.unsupported -> diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index 0efd364bfe..74c9224bd5 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -863,7 +863,11 @@ applyEquation term rule = intersperse "," $ map (pretty' @mods) syntacticRequires ) - checkRequiresSyntactically subst (Set.toList knownPredicates) restRequires syntacticRequires + finalSubstWithSyntacticPredicates <- + checkRequiresSyntactically subst (Set.toList knownPredicates) restRequires syntacticRequires + -- check concreteness again, in case we have matched an argument which nonetheless violates a concrete/symbolic constraint + checkConcretenessStrict rule.attributes.concreteness finalSubstWithSyntacticPredicates + checkRequiresSemantically finalSubstWithSyntacticPredicates knownPredicates restRequires -- check all ensured conditions together with the path condition ensuredConditions <- checkEnsures rule subst @@ -880,26 +884,36 @@ applyEquation term rule = allMustBeConcrete (AllConstrained Concrete) = True allMustBeConcrete _ = False - checkConcreteness Unconstrained _ = pure () - checkConcreteness (AllConstrained constrained) subst = - mapM_ (\(var, t) -> mkCheck (toPair var) constrained t) $ Map.assocs subst - checkConcreteness (SomeConstrained mapping) subst = - void $ Map.traverseWithKey (verifyVar subst) (Map.mapWithKey mkCheck mapping) - - toPair Variable{variableSort, variableName} = - case variableSort of - SortApp sortName _ -> (variableName, sortName) - SortVar varName -> (variableName, varName) + checkConcreteness' _ Unconstrained _ = pure () + checkConcreteness' _ (AllConstrained constrained) subst = + forM_ (Map.assocs subst) $ \(Variable{variableName}, t) -> + mkCheck variableName constrained t + checkConcreteness' throwOnVarNotFound (SomeConstrained mapping) subst = + forM_ (Map.assocs mapping) $ \((variableName, sortName), constrained) -> + case Map.lookup Variable{variableSort = SortApp sortName [], variableName} subst of + Nothing -> when throwOnVarNotFound $ do + logMessage $ Text.pack $ "Variable not found: " <> show (variableName, sortName) + lift . throw . InternalError . Text.pack $ "Variable not found: " <> show (variableName, sortName) + Just t -> mkCheck variableName constrained t + + -- strictly check concreteness of variables in the substitution, throwing an error if the variable is not found + checkConcretenessStrict = checkConcreteness' True + -- ignore missing variables. This may be necessary with a rule such as + -- rule A <=Int B => true requires C <=IntB andBool A <=Int C [concrete(A, C)] + -- where checking concretenes after mattching on the LHS would throw an error on C + -- hence, we have to call this check twice, once non-strictly after the inital match to prune + -- any obvious non-applicable rules and second time strictly, when we matched on C in the path condition + checkConcreteness = checkConcreteness' False mkCheck :: - (VarName, SortName) -> + VarName -> Constrained -> Term -> ExceptT ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) (EquationT io) () - mkCheck (varName, _) constrained (Term attributes _) + mkCheck varName constrained (Term attributes _) | not test = throwE ( \ctxt -> @@ -908,7 +922,7 @@ applyEquation term rule = renderOneLineText $ hsep [ "Concreteness constraint violated: " - , pretty $ show constrained <> " variable " <> show varName + , pretty $ "variable " <> BS.unpack varName <> " should map to a " <> show constrained <> " term" ] , MatchConstraintViolated constrained varName ) @@ -918,14 +932,6 @@ applyEquation term rule = Concrete -> attributes.isConstructorLike Symbolic -> not attributes.isConstructorLike - verifyVar subst (variableName, sortName) check = - maybe - ( lift . throw . InternalError . Text.pack $ - "Variable not found: " <> show (variableName, sortName) - ) - check - $ Map.lookup Variable{variableSort = SortApp sortName [], variableName} subst - filterOutKnownConstraints :: forall io. LoggerMIO io => @@ -960,11 +966,11 @@ checkRequiresSyntactically :: ExceptT ((EquationT io () -> EquationT io ()) -> EquationT io (), ApplyEquationFailure) (EquationT io) - () + Substitution checkRequiresSyntactically currentSubst knownPredicates restRequires syntacticRequires = do ModifiersRep (_ :: FromModifiersT mods => Proxy mods) <- getPrettyModifiers case syntacticRequires of - [] -> checkRequiresSemantically currentSubst (Set.fromList knownPredicates) restRequires + [] -> pure currentSubst (headSyntacticRequires : restSyntacticRequires) -> do koreDef <- (.definition) <$> lift getConfig let loopOver = \case @@ -1020,7 +1026,7 @@ checkRequiresSyntactically currentSubst knownPredicates restRequires syntacticRe lift $ filterOutKnownConstraints (Set.fromList knownPredicates) simplified case stillUnclear of - [] -> pure () -- done + [] -> pure newSubst -- done _ -> do withContext CtxSyntactic $ logMessage $ From 37653abf7e757086f257eea0c4e4cb530666ed2a Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Mon, 9 Sep 2024 10:36:24 +0100 Subject: [PATCH 13/14] fix typos and unused import --- booster/library/Booster/JsonRpc.hs | 2 +- booster/library/Booster/Pattern/ApplyEquations.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/booster/library/Booster/JsonRpc.hs b/booster/library/Booster/JsonRpc.hs index 0a00d20d3e..1e929815fb 100644 --- a/booster/library/Booster/JsonRpc.hs +++ b/booster/library/Booster/JsonRpc.hs @@ -83,7 +83,7 @@ import Booster.Syntax.ParsedKore.Internalise ( addToDefinitions, definitionErrorToRpcError, ) -import Booster.Util (Flag (..), constructorName) +import Booster.Util (Flag (..)) import Kore.JsonRpc.Error qualified as RpcError import Kore.JsonRpc.Server (ErrorObj (..), JsonRpcHandler (..), Respond) import Kore.JsonRpc.Types qualified as RpcTypes diff --git a/booster/library/Booster/Pattern/ApplyEquations.hs b/booster/library/Booster/Pattern/ApplyEquations.hs index 74c9224bd5..437440160f 100644 --- a/booster/library/Booster/Pattern/ApplyEquations.hs +++ b/booster/library/Booster/Pattern/ApplyEquations.hs @@ -899,7 +899,7 @@ applyEquation term rule = -- strictly check concreteness of variables in the substitution, throwing an error if the variable is not found checkConcretenessStrict = checkConcreteness' True -- ignore missing variables. This may be necessary with a rule such as - -- rule A <=Int B => true requires C <=IntB andBool A <=Int C [concrete(A, C)] + -- rule A <=Int B => true requires C <=Int B andBool A <=Int C [concrete(A, C)] -- where checking concretenes after mattching on the LHS would throw an error on C -- hence, we have to call this check twice, once non-strictly after the inital match to prune -- any obvious non-applicable rules and second time strictly, when we matched on C in the path condition From fc5776ef6694b6f3067786b73dd5bfcc77ce3921 Mon Sep 17 00:00:00 2001 From: Sam Balco Date: Mon, 9 Sep 2024 10:36:48 +0100 Subject: [PATCH 14/14] update integration test --- .../response-test1Init.json | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json b/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json index ba5096f774..3b3105a7cd 100644 --- a/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json +++ b/booster/test/rpc-integration/test-syntactic-simplification/response-test1Init.json @@ -141,29 +141,13 @@ "value": "true" }, "second": { - "tag": "App", - "name": "Lbl'Unds-LT-'Int'Unds'", - "sorts": [], - "args": [ - { - "tag": "EVar", - "name": "Var'Ques'X0", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - } - }, - { - "tag": "DV", - "sort": { - "tag": "SortApp", - "name": "SortInt", - "args": [] - }, - "value": "100" - } - ] + "tag": "DV", + "sort": { + "tag": "SortApp", + "name": "SortBool", + "args": [] + }, + "value": "true" } }, {