diff --git a/.gitignore b/.gitignore index 30eed9a..615b220 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ target .idea - +/z3 +.DS_Store +/src/test/scala/org/kframework/test.sc +/npm-debug.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md new file mode 100644 index 0000000..5e0893f --- /dev/null +++ b/DEVELOPER_GUIDE.md @@ -0,0 +1,50 @@ +## Building + +Clone the repository (recursively to include submodules) and then build using +`sbt`. Use the `develop` branch if you intend to create pull requests: + +``` +git clone --recurse-submodules https://github.com/kframework/kale --branch develop +sbt compile +``` + +These git configuration settings smoothen out working with submodules: + +``` +git config --global push.recurseSubmodules check +git config --global fetch.recurseSubmodules true +``` + +If you intend to push to the `kore` repository too, using you SSH adding: + +``` +[url "git@github.com.:"] + pushInsteadOf = https://github.com/ +``` + +to your `~/.gitconfig` will let you do that. + + +## Guide on adding a new feature to terms/labels + +In an `if-then-elseif-...` style: + +#### Is it very specific to your use/project? + +Leave it in your project / out of the Scala backend. + +#### It it only invoked occasionally, performance is not critical? + +Put it in Rich* (`org.kframework.kale` package object) + +#### Performance is important? + +Create an `Environment` `Mixin` and use `Unary` or `Binary`. + +#### Do you think the feature is extremely important and should be in the main trait hierarchy, not a mixin? + +**Talk with a few other developers before putting it there!!!** + +#### Do you an idea of how we could move functionality out of the main trait hierarchy into a Mixin? + +**Let's talk about it!** diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0d205ce --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,61 @@ + +============================================================================== +The K Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2015 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + K Team + + University of Illinois at Urbana-Champaign + Runtime Verification, Inc. + Iuvo AI, Inc. + + http://kframework.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + +* Neither the names of the K Team, the University of Illinois at + Urbana-Champaign, the University Alexandru-Ioan Cuza, nor the names of + its contributors may be used to endorse or promote products derived from + this Software without specific prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with K: +============================================================================== +The K software contains code written by third parties. Such software will have +its own individual LICENSE file in the directory in which it appears. This +file will describe the copyrights, license, and restrictions which apply to +that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the K Distribution, and nothing in any of the other +licenses gives permission to use the names of the K Team, the +University of Illinois, or the University Alexandru-Ioan Cuza to endorse or +promote products derived from this Software. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..7012bd6 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +[ ![Codeship Status for kframework/kale](https://app.codeship.com/projects/8a5162d0-1588-0135-d42f-6a6f9a84ad3f/status?branch=develop)](https://app.codeship.com/projects/217943) + +# K Scala Backend + +# Install + +# Use + +# Contribute diff --git a/build.sbt b/build.sbt index fb9b064..cffb489 100644 --- a/build.sbt +++ b/build.sbt @@ -3,18 +3,37 @@ organization := "org.kframework" name := "kale" -scalaVersion := "2.12.2" +scalaVersion := "2.12.4" resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" -resolvers += "Local Maven Repository" at "file://" + Path.userHome.absolutePath + "/.m2/repository" +resolvers += Resolver.mavenLocal + +lazy val kale = project.in(file(".")) libraryDependencies ++= Seq( - "org.scalatest" %% "scalatest" % "3.0.1" % "test", + "org.typelevel" %% "discipline" % "0.7.+" % "test", + "org.scalatest" %% "scalatest" % "3.0.+" % "test", + + "org.typelevel" %% "cats-core" % "1.0.+", + "org.typelevel" %% "cats-laws" % "1.0.+" % "test", + "org.typelevel" %% "kittens" % "1.0.+", - "io.circe" %% "circe-core" % "0.7.0", - "io.circe" %% "circe-generic" % "0.7.0", - "io.circe" %% "circe-parser" % "0.7.0", + "org.typelevel" %% "squants" % "1.3.0", - "org.kframework.k" %% "kore" % "1.0-SNAPSHOT" + "org.roaringbitmap" % "RoaringBitmap" % "0.6.+", + + "io.circe" %% "circe-core" % "0.9.+", + "io.circe" %% "circe-parser" % "0.9.+" ) + +lazy val installZ3 = taskKey[Unit]("Install Z3 theorem prover") + +installZ3 := { + "./installZ3.sh" ! +} + +(test in Test) := (test in Test).dependsOn(installZ3).value + +// Your profile name of the sonatype account. The default is the same with the organization value +sonatypeProfileName := "org.kframework.kale" diff --git a/docs/graphs.graffle b/docs/graphs.graffle index 14f3849..197b4b0 100644 Binary files a/docs/graphs.graffle and b/docs/graphs.graffle differ diff --git a/installZ3.sh b/installZ3.sh new file mode 100755 index 0000000..43ec7d8 --- /dev/null +++ b/installZ3.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ ! -d ./z3 ]; then + + URL="https://github.com/Z3Prover/z3/releases/download/z3-4.5.0/" + FORMAT=".zip" + + if [ `uname` = "Linux" ]; then + EXECUTABLE="z3-4.5.0-x64-ubuntu-14.04" + + + elif [ `uname` = "Darwin" ]; then + EXECUTABLE="z3-4.5.0-x64-osx-10.11.6" + fi + + curl -OL $URL$EXECUTABLE$FORMAT && unzip $EXECUTABLE$FORMAT && mv $EXECUTABLE"/" z3 && rm $EXECUTABLE$FORMAT + +fi \ No newline at end of file diff --git a/project/Build.scala b/project/Build.scala deleted file mode 100644 index 8b13789..0000000 --- a/project/Build.scala +++ /dev/null @@ -1 +0,0 @@ - diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..64317fd --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.15 diff --git a/sonatype.sbt b/sonatype.sbt index d0014b0..00e84a1 100644 --- a/sonatype.sbt +++ b/sonatype.sbt @@ -1,5 +1,3 @@ -// Your profile name of the sonatype account. The default is the same with the organization value -sonatypeProfileName := "org.kframework.kale" // To sync with Maven central, you need to supply the following information: pomExtra in Global := { diff --git a/src/main/scala/org/kframework/kale/Environment.scala b/src/main/scala/org/kframework/kale/Environment.scala index a8c8563..3dc5c78 100644 --- a/src/main/scala/org/kframework/kale/Environment.scala +++ b/src/main/scala/org/kframework/kale/Environment.scala @@ -1,30 +1,50 @@ package org.kframework.kale -import org.kframework.kale.standard.{Bottomize, Name, Sort} -import org.kframework.kore +import org.kframework.kale.highcats.LiftedCatsMixin +import org.kframework.kale.standard.BottomizeMixin +import org.kframework.kale.transformer.Binary.{Apply, ProcessingFunctions} +import org.kframework.kale.transformer.{Binary, Unary} -import scala.collection._ +trait Environment extends Foundation with RoaringMixin with HasMatcher with MatchingLogicMixin with LiftedCatsMixin with BottomizeMixin -trait Environment extends KORELabels with Bottomize { +trait Foundation { + _: Environment => - trait HasEnvironment { - val env = Environment.this - } + implicit protected val env: this.type = this - val uniqueLabels = mutable.Map[String, Label]() + val uniqueLabels = collection.mutable.Map[String, Label]() - def labels = uniqueLabels.values.toSet + def labels: Set[Label] = if (isSealed) { + labelSet + } else { + uniqueLabels.values.toSet + } + private lazy val labelSet = uniqueLabels.values.toSet private var pisSealed = false - def seal(): Unit = pisSealed = true + var _matcher: Binary.Apply = _ + + def seal(): Unit = { + pisSealed = true + } def isSealed = pisSealed + def unaryProcessingFunctions: Unary.ProcessingFunctions = Unary.processingFunctions + val substitutionMaker: Substitution => SubstitutionApply + final val unify: Label2 = lift("unify", { + (a: Term, b: Term) => + assert(this.isSealed) + unifier(a, b) + }) + + def unifier: Binary.Apply + def register(label: Label): Int = { - assert(!isSealed, "The environment is sealed") + assert(!isSealed, "Cannot register label " + label + " because the environment is sealed") assert(label != null) if (uniqueLabels.contains(label.name)) @@ -36,29 +56,52 @@ trait Environment extends KORELabels with Bottomize { def label(labelName: String): Label = uniqueLabels(labelName) - def sort(l: Label, children: Seq[Term]): Sort - - def sortArgs(l: Label): Seq[Sort] - - def sortTarget(l: Label): Sort + lazy val labelForIndex: Map[Int, Label] = labels map { l => (l.id, l) } toMap override def toString = { "nextId: " + uniqueLabels.size + "\n" + uniqueLabels.mkString("\n") } -} -trait KORELabels { - // Constants - val Bottom: Truth with kore.Bottom - val Top: Truth with Substitution with kore.Top - - // Labels - val Variable: VariableLabel - val And: AndLabel - val Or: OrLabel - val Rewrite: RewriteLabel - val Equality: EqualityLabel - val Truth: TruthLabel - val Not: NotLabel + def rewrite(rule: Term, obj: Term): Term + } +trait HasMatcher extends Mixin { + env: Environment => + + case class NoMatch(solver: Apply) extends Binary.F({ (a: Term, b: Term) => Bottom }) + + case class LeaveAlone(solver: Apply) extends Binary.F({ (a: Term, b: Term) => And(a, b) }) + + case class AssertNotPossible(solver: Apply) extends Binary.F({ (a: Term, b: Term) => throw new AssertionError("Should not try to match " + a + " with " + b) }) + + private var _registeredMatchers: Map[Binary.ProcessingFunctions, Int] = collection.immutable.ListMap() + + object Priority { + val low = 30 + val medium = 50 + val high = 80 + val ultimate = 200 + } + + def registeredMatchers = _registeredMatchers + + def registerInner(matcher: Binary.ProcessingFunctions, priority: Int) { + _registeredMatchers = _registeredMatchers + (matcher -> priority) + } + + def registerMatcher[Process <: Apply, A <: Term, B <: Term](f: PartialFunction[(Label, Label), Process => (A, B) => Term], priority: Int) = { + registerInner(Binary.definePartialFunction(f), priority) + } + + final lazy val makeMatcher: Binary.ProcessingFunctions = { + registeredMatchers + .groupBy(_._2) + .mapValues(_.keySet) + .toList + .sortBy(-_._1) + .map(_._2) + .map(_.reduce(_ orElse _)) + .reduceLeft(_ orElse _) + } +} diff --git a/src/main/scala/org/kframework/kale/MatcherOrUnifier.scala b/src/main/scala/org/kframework/kale/MatcherOrUnifier.scala deleted file mode 100644 index f60d20a..0000000 --- a/src/main/scala/org/kframework/kale/MatcherOrUnifier.scala +++ /dev/null @@ -1,83 +0,0 @@ -package org.kframework.kale - -import org.kframework.kale.standard._ -import org.kframework.kale.transformer.Binary - -trait MatcherOrUnifier extends transformer.Binary.Apply { - val env: DNFEnvironment - - import Binary._ - import env._ - - def shortCircuitAnd(solver: Apply)(toEqual: (Term, Term)*): Term = { - toEqual.foldLeft(Top: Term)({ - case (Bottom, _) => Bottom - case (soFar, (l, r)) => - val results = Or.asSet(soFar) map { - case soFarVariant@And.substitutionAndTerms(sub, _) => - And(soFarVariant: Term, solver(sub(l), sub(r))) - } - Or(results) - }) - } - - def FreeNode0FreeNode0(solver: Apply)(a: Node0, b: Node0) = Top - - def FreeNode1FreeNode1(solver: Apply)(a: Node1, b: Node1): Term = shortCircuitAnd(solver)((a._1, b._1)) - - def FreeNode2FreeNode2(solver: Apply)(a: Node2, b: Node2): Term = shortCircuitAnd(solver)((a._1, b._1), (a._2, b._2)) - - def FreeNode3FreeNode3(solver: Apply)(a: Node3, b: Node3): Term = shortCircuitAnd(solver)((a._1, b._1), (a._2, b._2), (a._3, b._3)) - - def FreeNode4FreeNode4(solver: Apply)(a: Node4, b: Node4): Term = shortCircuitAnd(solver)((a._1, b._1), (a._2, b._2), (a._3, b._3), (a._4, b._4)) - - def FreeNode5FreeNode5(solver: Apply)(a: Node5, b: Node5): Term = shortCircuitAnd(solver)((a._1, b._1), (a._2, b._2), (a._3, b._3), (a._4, b._4), (a._5, b._5)) - - def FreeNode6FreeNode6(solver: Apply)(a: Node6, b: Node6): Term = shortCircuitAnd(solver)((a._1, b._1), (a._2, b._2), (a._3, b._3), (a._4, b._4), (a._5, b._5), (a._6, b._6)) - - def VarLeft(solver: Apply)(a: Variable, b: Term) = Equality(a.asInstanceOf[Variable], b) - - def VarRight(solver: Apply)(a: Term, b: Variable): Term = VarLeft(solver)(b, a) // Equality(b.asInstanceOf[Variable], a) - - def Constants(solver: Apply)(a: DomainValue[_], b: DomainValue[_]) = - Truth(a.data == b.data) - - def AndTerm(solver: Apply)(a: And, b: Term): Term = { - val solution = solver(a.nonPredicates.get, b) - And(a.predicates, solution) - } - - def TermAnd(solver: Apply)(a: Term, b: And): Term = { - val solution = solver(a, b.nonPredicates.get) - And(solution, b.predicates) - } - - def OrTerm(solver: Apply)(a: Or, b: Term) = { - val sol = a.asSet map (solver(_, b)) - Or(sol) - } - - def TermOr(solver: Apply)(a: Term, b: Or) = { - val sol = b.asSet map (solver(a, _)) - Or(sol) - } - - def NoMatch(solver: Apply)(a: Term, b: Term): Term = Bottom - - val freeLabelProcessing = definePartialFunction({ - case (l1: FreeLabel, l2: FreeLabel) if l1 != l2 => NoMatch _ - case (_: FreeLabel0, _: FreeLabel0) => FreeNode0FreeNode0 _ - case (_: FreeLabel1, _: FreeLabel1) => FreeNode1FreeNode1 _ - case (_: FreeLabel2, _: FreeLabel2) => FreeNode2FreeNode2 _ - case (_: FreeLabel3, _: FreeLabel3) => FreeNode3FreeNode3 _ - case (_: FreeLabel4, _: FreeLabel4) => FreeNode4FreeNode4 _ - }) - - val functionDefinedByRewritingProcessing = definePartialFunction({ - case (_: FunctionDefinedByRewritingLabel0, _: FunctionDefinedByRewritingLabel0) => FreeNode0FreeNode0 _ - case (_: FunctionDefinedByRewritingLabel1, _: FunctionDefinedByRewritingLabel1) => FreeNode1FreeNode1 _ - case (_: FunctionDefinedByRewritingLabel2, _: FunctionDefinedByRewritingLabel2) => FreeNode2FreeNode2 _ - case (_: FunctionDefinedByRewritingLabel3, _: FunctionDefinedByRewritingLabel3) => FreeNode3FreeNode3 _ - case (_: FunctionDefinedByRewritingLabel4, _: FunctionDefinedByRewritingLabel4) => FreeNode4FreeNode4 _ - }) -} diff --git a/src/main/scala/org/kframework/kale/POSet.scala b/src/main/scala/org/kframework/kale/POSet.scala new file mode 100644 index 0000000..5dc7d13 --- /dev/null +++ b/src/main/scala/org/kframework/kale/POSet.scala @@ -0,0 +1,149 @@ +// Copyright (c) 2015 K Team. All Rights Reserved. +package org.kframework.kale + +import java.util.Optional + +import scala.collection.JavaConverters._ +import scala.collection._ + +case class CircularityException[T](cycle: Seq[T]) extends Exception(cycle.mkString(" < ")) + +/** + * A partially ordered set based on an initial set of direct relations. + */ +class POSet[T](directRelations: Set[(T, T)]) extends Serializable { + + // convert the input set of relations to Map form for performance + private val directRelationsMap: Map[T, Set[T]] = directRelations groupBy { _._1 } mapValues { _ map { _._2 } toSet } map identity + + /** + * Internal private method. Computes the transitive closer of the initial relations. + * It also checks for cycles during construction and throws an exception if it finds any. + * + * The implementation is simple. It links each element to the successors of its successors. + * TODO: there may be a more efficient algorithm (low priority) + */ + private def transitiveClosure(relations: Map[T, Set[T]]): Map[T, Set[T]] = { + val newRelations = relations map { + case (start, succ) => + val newSucc = succ flatMap { relations.getOrElse(_, Set()) } + if (newSucc.contains(start)) + constructAndThrowCycleException(start, start, Seq()) + (start, succ | newSucc) + } + if (relations != newRelations) transitiveClosure(newRelations) else relations + } + + /** + * Recursive method constructing and throwing and the cycle exception. + * + * @param start (or tail) element to look for when constructing the cycle + * @param current element + * @param path so far + */ + private def constructAndThrowCycleException(start: T, current: T, path: Seq[T]) { + val currentPath = path :+ current + val succs = directRelationsMap.getOrElse(current, Set()) + if (succs.contains(start)) + throw new CircularityException(currentPath :+ start) + + succs foreach { constructAndThrowCycleException(start, _, currentPath) } + } + + /** + * All the relations of the POSet, including the transitive ones. + */ + val relations = transitiveClosure(directRelationsMap) + + def <(x: T, y: T): Boolean = relations.get(x).exists(_.contains(y)) + def <=(x: T, y: T): Boolean = <(x, y) || x == y + def >(x: T, y: T): Boolean = relations.get(y).exists(_.contains(x)) + def >=(x: T, y: T): Boolean = >(x, y) || x == y + def ~(x: T, y: T) = <(x, y) || <(y, x) + + /** + * Returns true if x < y + */ + def lessThan(x: T, y: T): Boolean = <(x, y) + def lessThanEq(x: T, y: T): Boolean = <=(x, y) + def directlyLessThan(x: T, y: T): Boolean = directRelationsMap.get(x).exists(_.contains(y)) + /** + * Returns true if y < x + */ + def greaterThan(x: T, y: T): Boolean = >(x, y) + def greaterThanEq(x: T, y: T): Boolean = >=(x, y) + def directlyGreaterThan(x: T, y: T): Boolean = directRelationsMap.get(y).exists(_.contains(x)) + /** + * Returns true if y < x or y < x + */ + def inSomeRelation(x: T, y: T) = this.~(x, y) + def inSomeRelationEq(x: T, y: T) = this.~(x, y) || x == y + + /** + * Returns an Optional of the least upper bound if it exists, or an empty Optional otherwise. + */ + lazy val leastUpperBound: Optional[T] = lub match { + case Some(x) => Optional.of(x) + case None => Optional.empty() + } + + lazy val lub: Option[T] = { + val candidates = relations.values reduce { (a, b) => a & b } + + if (candidates.size == 0) + None + else if (candidates.size == 1) + Some(candidates.head) + else { + val allPairs = for (a <- candidates; b <- candidates) yield { (a, b) } + if (allPairs exists { case (a, b) => ! ~(a, b) }) + None + else + Some( + candidates.min(new Ordering[T]() { + def compare(x: T, y: T) = if (x < y) -1 else if (x > y) 1 else 0 + })) + } + } + + lazy val asOrdering: Ordering[T] = (x: T, y: T) => if (lessThanEq(x, y)) -1 else if (lessThanEq(y, x)) 1 else 0 + + /** + * Return the subset of items from the argument which are not + * less than any other item. + */ + def maximal(sorts: Iterable[T]): Set[T] = + sorts.filter(s1 => !sorts.exists(s2 => lessThan(s1, s2))).toSet + + /** + * Return the subset of items from the argument which are not + * greater than any other item. + */ + def minimal(sorts: Iterable[T]): Set[T] = + sorts.filter(s1 => !sorts.exists(s2 => >(s1, s2))).toSet + + override def toString() = { + "POSet(" + (relations flatMap { case (from, tos) => tos map { case to => from + "<" + to } }).mkString(",") + ")" + } + + override def hashCode = relations.hashCode() + + override def equals(that: Any) = that match { + case that: POSet[_] => relations == that.relations + case _ => false + } +} + +object POSet { + def apply[T](relations: (T, T)*) = new POSet(relations.toSet) + def apply[T](s: Set[(T, T)]) = new POSet(s) + + /** + * Import this for Scala syntactic sugar. + */ + implicit class PO[T](x: T)(implicit val po: POSet[T]) { + def <(y: T) = po.<(x, y) + def >(y: T) = po.>(x, y) + } +} + diff --git a/src/main/scala/org/kframework/kale/Rewriter.scala b/src/main/scala/org/kframework/kale/Rewriter.scala index 0b295a5..1fd9287 100644 --- a/src/main/scala/org/kframework/kale/Rewriter.scala +++ b/src/main/scala/org/kframework/kale/Rewriter.scala @@ -1,30 +1,50 @@ package org.kframework.kale -import org.kframework.kale.transformer.Binary +import org.kframework.kale.km.{MultisortedMixin, Z3Mixin} +import org.kframework.kale.standard.StandardEnvironment import scala.collection.immutable.TreeSet -import scala.collection.{Set, mutable} +import scala.collection.mutable +@Deprecated object Rewriter { - def apply(substitutioner: Substitution => (Term => Term), matcher: MatcherOrUnifier) = new { - def apply(rules: Set[_ <: Rewrite]): Rewriter = new Rewriter(substitutioner, matcher, rules, matcher.env) - def apply(rule: Term): Rewriter = { - implicit val e = matcher.env - apply(Set(rule.moveRewriteToTop)) - } + def apply(env: StandardEnvironment) = new { + def apply(rules: Set[_ <: Term]): Rewriter = new Rewriter(env)(rules) } } -class Rewriter(substitutioner: Substitution => (Term => Term), doMatch: Binary.Apply, val rules: Set[_ <: Rewrite], val env: Environment) extends (Term => Stream[Term]) { +@Deprecated +class Rewriter(val env: StandardEnvironment)(val inputRules: Set[_ <: Term]) extends (Term => Option[Term]) { assert(env.isSealed) - assert(rules != null) + assert(inputRules != null) + + private def lowerForAll(keep: Set[Variable]): Term => Term = { + case v: Variable => + if (keep.contains(v)) + v + else + env.ForAll(v, v) + + case t => + val newKeep: Set[Variable] = t.variables filter (v => t.children.count(_.contains(v)) > 1) + val kill = newKeep &~ keep + + val newLowerForAll = lowerForAll(keep | newKeep) + val solvedChildren = t map0 newLowerForAll + + val withKill: Term = kill.foldLeft(solvedChildren) { (tt, v) => env.ForAll(v, tt) } + withKill + } - val ruleHits = mutable.Map[Rewrite, Int]() + + val rules = inputRules map lowerForAll(Set()) + + val ruleHits = mutable.Map[Term, Int]() for (r <- rules) - ruleHits += (r -> 0) + ruleHits += (r -> (Math.random() * 20).toInt) - var sortedRules = TreeSet[Rewrite]()({ (r1, r2) => + var sortedRules = TreeSet[Term]()({ (r1, r2) => if (r1 == r2) 0 else { @@ -41,54 +61,120 @@ class Rewriter(substitutioner: Substitution => (Term => Term), doMatch: Binary.A } }) + // def index(t: Term) = t findTD { + // kseq(ForAll(_, )) + // } + sortedRules ++= rules - val z3 = new z3(env, Seq(Seq())) + // TODO: clean this + val z3 = env match { + case e: Environment with MultisortedMixin with Z3Mixin => new z3(e, Seq(Seq())) + case _ => null + } + + import env._ + + // val kseq = label("#KSequence").asInstanceOf[Label2] + // val topCell = label("").asInstanceOf[Label2] + // val kCell = label("").asInstanceOf[Label1] + // + // def indexTerm(t: Term): Option[Label] = (t findTD { + // case kseq(a, _) => true + // case _ => false + // }).map(_.asInstanceOf[Node2]._1.label) + // + // def index(t: Term): Option[Label] = t match { + // case topCell(x, _) => index(x) + // case kCell(x) => index(x) + // case env.ForAll(_, x) => index(x) + // case kseq(x, _) => index(x) + // case Rewrite(x, _) => index(x) + // case v: Variable => None + // case x => Some(x.label) + // } + // + // val indexedRules = sortedRules.groupBy(index).filterKeys(_.isDefined).map({ case (k, v) => (k.get, v) }) import env._ - def apply(t: Term): Stream[Term] = step(t) + def apply(t: Term): Option[Term] = step(t) + + var indexHits = 0 + var sortedHits = 0 - def step(obj: Term): Stream[Term] = { + def step(obj: Term): Option[Term] = { var tries = 0 - val res = (sortedRules.toStream map { r => - val m = doMatch(r._1, obj) + + // val indexed = indexTerm(obj).flatMap(indexedRules.get).getOrElse(Set()) + // + // val res0 = indexed.view map { r => + // val m = unify(r, obj) + // tries += 1 + // m match { + // case Or.set(ands) => + // val afterSubstitution = env match { + // case env: StandardEnvironment => + // import env._ + // ands.view.collect({ + // case And.withNext(_: Substitution, Some(Next(next))) => next + // }).headOption.getOrElse(Bottom) + // } + // if (afterSubstitution != Bottom) { + // indexHits += 1 + // } + // afterSubstitution + // case Bottom => Bottom + // } + // } + + val res = sortedRules.view map { r => + val m = unify(r, obj) tries += 1 m match { case Or.set(ands) => - val oneGoodSub = (ands collect { case s: Substitution => s }).headOption - val afterSubstitution = oneGoodSub.map(substitutioner(_).apply(r._2)).getOrElse(Bottom) - // if (afterSubstitution != Bottom) { - // println(" " + r) - // println(" " + oneGoodSub) - // } + val afterSubstitution = env match { + case env: StandardEnvironment => + import env._ + ands.view.map(STRATEGY.anytimeIsNow).collect({ + case And.SPN(_, _, next) => + next + }).headOption.getOrElse(Bottom) + } if (afterSubstitution != Bottom) { val prev = ruleHits(r) sortedRules -= r - ruleHits.update(r, prev + 1) + ruleHits.update(r, prev + (Math.random() * 3).toInt) sortedRules += r + sortedHits += 1 } afterSubstitution case Bottom => Bottom } - }).filterNot(_ == Bottom) - res + } + + // res0.find(_ != Bottom).orElse() + res.find(_ != Bottom) } def searchStep(obj: Term): Term = { - Or(rules.map(r => (doMatch(r._1, obj), r._2)).flatMap({ - case (Bottom, _) => Set[Term]() - case (or, rhs) => + val unificationRes: Set[Term] = rules.map(r => unify(r, obj)) + Or(unificationRes.flatMap({ + case Bottom => Set[Term]() + case or => val res = Or.asSet(or).flatMap(u => { - val (sub, terms) = And.asSubstitutionAndTerms(u) - val constraints = And(terms) - if (z3.sat(constraints)) { - Set(And(substitutioner(sub)(rhs), constraints)) // TODO: consider when rhs.predicates is not satisfiable with constraints - } else { + val And.SPN(sub, pred@And.set(unresolvedConstraints), Next(next)) = And.nextOnly(u) + + val allConstraints = And(sub, pred) + + if (unresolvedConstraints.nonEmpty && env.isInstanceOf[Z3Mixin] && !z3.sat(allConstraints)) { Set[Term]() + } else { + Set(And(next, allConstraints)) } }) res })) } } + diff --git a/src/main/scala/org/kframework/kale/SubstitutionApply.scala b/src/main/scala/org/kframework/kale/SubstitutionApply.scala index 96c9ff7..6ddcd97 100644 --- a/src/main/scala/org/kframework/kale/SubstitutionApply.scala +++ b/src/main/scala/org/kframework/kale/SubstitutionApply.scala @@ -2,23 +2,29 @@ package org.kframework.kale import org.kframework.kale.transformer.Unary -object Var { +object Var { def apply(solver: SubstitutionApply)(v: Variable): Term = solver.substitution.get(v).getOrElse(v) } -class SubstitutionApply(val substitution: Substitution)(implicit env: Environment) extends Unary.Apply(env) { +class SubstitutionApply(val substitution: Substitution)(implicit penv: Environment) extends Unary.Apply() { - import env._ + import penv._ - override def processingFunctions: ProcessingFunctions = definePartialFunction({ + def ExistsSub(solver: SubstitutionApply)(v: Exists): Term = + substitutionMaker(solver.substitution.remove(v.v))(v.p) + + override def processingFunctions = definePartialFunction[Term, this.type]({ case `Variable` => Var.apply _ - }) orElse super.processingFunctions + case Exists => ExistsSub _ + }) orElse env.unaryProcessingFunctions override def apply(t: Term): Term = { - if (t.isGround) + if (t.isGround) { t - else { + } else if ((t.variables & substitution.boundVariables).nonEmpty) { arr(t.label.id)(t) + } else { + t } } } diff --git a/src/main/scala/org/kframework/kale/ac.scala b/src/main/scala/org/kframework/kale/ac.scala index 0970f83..c1dbf47 100644 --- a/src/main/scala/org/kframework/kale/ac.scala +++ b/src/main/scala/org/kframework/kale/ac.scala @@ -1,61 +1,104 @@ package org.kframework.kale -import scala.collection._ +trait ACMixin extends Mixin { + _: Environment => + def AssocWithIdLabel(name: String, id: Term): NonPrimitiveMonoidLabel +} trait HasId { val identity: Term + lazy val empty = identity } -trait AssocLabel extends Label2 { - override def apply(l: Iterable[Term]): Term - - private val thisthis = this - - def asIterable(t: Term): Iterable[Term] = t.label match { - case `thisthis` => t.asInstanceOf[Assoc].assocIterable - case _ => List(t) - } +trait CollectionLabel extends Label2 { + def asIterable(t: Term): Iterable[Term] object iterable { def unapply(t: Term): Option[Iterable[Term]] = Some(asIterable(t)) } + def map(f: Term => Term): Term => Term = { t: Term => + env.strongBottomize(t) { + this (asIterable(t) map f) + } + } + + def filter(f: Term => Boolean): Term => Term = { t: Term => + env.strongBottomize(t) { + this (asIterable(t) filter f) + } + } } -trait AssocWithIdLabel extends AssocLabel with HasId { +trait SemigroupLabel extends CollectionLabel with cats.Semigroup[Term] { + override def apply(list: Iterable[Term]): Term = list reduce apply - // normalizing - def apply(_1: Term, _2: Term): Term = { - val l1 = asIterable(_1) - val l2 = asIterable(_2) - construct(l1 ++ l2) + private val thisthis = this + + def combine(a: Term, b: Term) = apply(a, b) + + def asIterable(t: Term): Iterable[Term] = t.label match { + case `thisthis` => t match { + case t: Assoc => t.assocIterable + case _ => throw new AssertionError(t + " is not Assoc") + } + case _ => List(t) } +} - val self = this +trait MonoidLabel extends SemigroupLabel with HasId with cats.Monoid[Term] { + @Normalizing + override def apply(list: Iterable[Term]): Term = (list fold identity) (apply) override def asIterable(t: Term): Iterable[Term] = t match { case `identity` => List[Term]() case x if x.label == this => x.asInstanceOf[Assoc].assocIterable case y => List(y) } +} + +trait NonPrimitiveMonoidLabel extends MonoidLabel { - // normalizing - override def apply(list: Iterable[Term]): Term = list filterNot (_ == identity) match { - case l if l.isEmpty => identity - case l if l.size == 1 => l.head - case l => (l fold identity) ((a, b) => apply(a, b)) + @Normalizing + def apply(_1: Term, _2: Term): Term = { + val l1 = asIterable(_1) + val l2 = asIterable(_2) + l1 ++ l2 filterNot (_ == identity) match { + case l if l.isEmpty => identity + case l if l.size == 1 => l.head + case l => construct(l) + } } - def construct(l: Iterable[Term]): Term + val self = this + + @NonNormalizing + protected def construct(l: Iterable[Term]): Term } -trait AssocWithoutIdLabel extends AssocLabel { +trait AssocWithoutIdLabel extends SemigroupLabel { // todo } -trait Assoc extends Node2 with BinaryInfix { - override val label: AssocLabel +trait Assoc extends Node2 { + override val label: SemigroupLabel val assocIterable: Iterable[Term] + + override def map0(f: (Term) => Term): Term = label(assocIterable map f) + + override def equals(obj: Any): Boolean = obj match { + case that: Assoc => that.label == this.label && that.assocIterable == this.assocIterable + case _ => false + } + + override def toString: String = label.name + "(" + assocIterable.map(_.toString).mkString(", ") + ")" +} + +object Assoc { + def unapply(t: Term): Option[(SemigroupLabel, Iterable[Term])] = t.label match { + case l: SemigroupLabel => Some(l, l.asIterable(t)) + case _ => None + } } trait Comm @@ -64,11 +107,15 @@ trait AssocComm extends Assoc with Comm { override val label: AssocCommLabel def asSet: Set[Term] + + override val assocIterable: Set[Term] = asSet + + override def toString: String = label.name + "(" + assocIterable.toList.map(_.toString).sorted.mkString(", ") + ")" } trait CommLabel -trait AssocCommLabel extends AssocLabel with CommLabel { +trait AssocCommLabel extends SemigroupLabel with CommLabel { def asSet(t: Term): Set[Term] = t match { case t: AssocComm if t.label == this => t.asSet case _ => Set(t) @@ -80,8 +127,8 @@ trait AssocCommLabel extends AssocLabel with CommLabel { } -trait AssocCommWithIdLabel extends AssocCommLabel with HasId { - override def asSet(t: Term): Set[Term] = +trait CommutativeMonoid extends AssocCommLabel with MonoidLabel { + override final def asSet(t: Term): Set[Term] = if (t == identity) { Set() } else { diff --git a/src/main/scala/org/kframework/kale/builtin/BOOLEAN.scala b/src/main/scala/org/kframework/kale/builtin/BOOLEAN.scala index 0395eb6..b1670be 100644 --- a/src/main/scala/org/kframework/kale/builtin/BOOLEAN.scala +++ b/src/main/scala/org/kframework/kale/builtin/BOOLEAN.scala @@ -1,12 +1,50 @@ package org.kframework.kale.builtin -import org.kframework.kale.Environment +import org.kframework.kale +import org.kframework.kale._ import org.kframework.kale.standard.ReferenceLabel +import org.kframework.kale.util.LabelNamed -trait HasBOOLEAN { - self: Environment => - val BOOLEAN = new ReferenceLabel[Boolean]("Boolean")(this) { - override protected[this] def internalInterpret(s: String): Boolean = s.toBoolean +trait BooleanMixin extends kale.BooleanMixin { + _: Environment => + + override val BOOLEAN = new BOOLEAN { + implicit val Boolean: ReferenceLabel[Boolean] = define[Boolean]("Bool@BOOL-SYNTAX")(_.toBoolean) + + val not = define("notBool_", !(_: Boolean)) + val and = define("_andBool_", (_: Boolean) && (_: Boolean)) + val or = define("_orBool_", (_: Boolean) || (_: Boolean)) + + /** + * ifThenElse(c, t, e) is semantically equivalent to Or(And(c = True, t), And(c = False, t)) but evaluated lazily + * i.e., the t and e are only touched when we know whether the condition is True or False + * see also STRATEGY.ifThenElse + */ + val ifThenElse = new LabelNamed("BOOLEAN.ifThenElse") with FunctionLabel3 { + override val isPredicate: Option[Boolean] = None + + override def f(condition: Term, thenTerm: Term, elseTerm: Term) = condition match { + case True => Some(thenTerm) + case False => Some(elseTerm) + case _ => None + } + } + + val isTrue = new LabelNamed("IsTrue") with FunctionLabel1 { + + override val isPredicate: Option[Boolean] = Some(true) + + override def f(_1: Term): Option[Term] = _1 match { + case Boolean(true) => Some(Top) + case Boolean(false) => Some(Bottom) + case _ => None + } + } + + val True = Boolean(true) + val False = Boolean(false) } + + implicit val upBoolean = BOOLEAN.Boolean } diff --git a/src/main/scala/org/kframework/kale/builtin/DOUBLE.scala b/src/main/scala/org/kframework/kale/builtin/DOUBLE.scala index 550ab15..7240616 100644 --- a/src/main/scala/org/kframework/kale/builtin/DOUBLE.scala +++ b/src/main/scala/org/kframework/kale/builtin/DOUBLE.scala @@ -1,27 +1,28 @@ package org.kframework.kale.builtin +import org.kframework.kale import org.kframework.kale.standard.ReferenceLabel -import org.kframework.kale.{Environment, FunctionLabel2, Term} +import org.kframework.kale.util.LabelNamed +import org.kframework.kale.{FunctionLabel2, _} -trait HasDOUBLE { - self: Environment => +trait DoubleMixin extends kale.DoubleMixin { + _: Environment => - val DOUBLE = new ReferenceLabel[Double]("Double")(this) { - override protected[this] def internalInterpret(s: String): Double = s.toDouble - } -} + override val DOUBLE = new { + val Double = define[Double]("Double")(_.toDouble) -trait HasDOUBLEdiv { - self: Environment with HasDOUBLE => + val div = new LabelNamed("_/Double_") with FunctionLabel2 { + override val isPredicate: Option[Boolean] = Some(false) - val DOUBLEdiv = new HasEnvironment with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (_, DOUBLE(0)) => None - case (DOUBLE(0), b) if b.isGround => Some(DOUBLE(0)) - case (DOUBLE(a), DOUBLE(b)) => Some(DOUBLE(a / b)) - case _ => None + def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { + case (_, Double(0)) => None + case (Double(0), b) if b.isGround => Some(Double(0)) + case (Double(a), Double(b)) => Some(Double(a / b)) + case _ => None + } } - - override val name: String = "_/Double_" } + + implicit val upDouble = DOUBLE.Double + } diff --git a/src/main/scala/org/kframework/kale/builtin/ID.scala b/src/main/scala/org/kframework/kale/builtin/ID.scala index 84e4e64..f76c562 100644 --- a/src/main/scala/org/kframework/kale/builtin/ID.scala +++ b/src/main/scala/org/kframework/kale/builtin/ID.scala @@ -1,12 +1,15 @@ package org.kframework.kale.builtin +import org.kframework.kale import org.kframework.kale.Environment -import org.kframework.kale.standard.ReferenceLabel -trait HasID { - self: Environment => - val ID = new ReferenceLabel[String]("ID")(this) { - override protected[this] def internalInterpret(s: String): String = s +trait IdMixin extends kale.IdMixin { + env: Environment => + + override val ID = new { + val Id = define[Symbol]("Id@ID")(Symbol(_)) } + + implicit val upSymbol = ID.Id } diff --git a/src/main/scala/org/kframework/kale/builtin/INT.scala b/src/main/scala/org/kframework/kale/builtin/INT.scala index 206ea1e..b905416 100644 --- a/src/main/scala/org/kframework/kale/builtin/INT.scala +++ b/src/main/scala/org/kframework/kale/builtin/INT.scala @@ -1,109 +1,31 @@ package org.kframework.kale.builtin +import org.kframework.kale +import org.kframework.kale._ import org.kframework.kale.standard.ReferenceLabel -import org.kframework.kale.util.Named -import org.kframework.kale.{Environment, FunctionLabel2, Term, Z3Builtin} -trait HasINT { - self: Environment => +trait IntMixin extends kale.IntMixin { + _: Environment with kale.BooleanMixin => - val INT = new ReferenceLabel[Int]("Int")(this) { - override protected[this] def internalInterpret(s: String): Int = s.toInt - } -} + override val INT = new INT { + implicit val Int = define[Int]("Int@INT-SYNTAX")(_.toInt) -trait HasINTbop extends HasINTplus with HasINTminus with HasINTmult with HasINTdiv with HasINTmod { self: Environment => } + import BOOLEAN.Boolean -trait HasINTplus extends HasINT { self: Environment => - val intPlus = new Named("_+Int_")(self) with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(INT(a + b)) - case _ => None - } - override def smtName: String = "+" - } -} + val plus = define("_+Int_", (_: Int) + (_: Int)) + val minus = define("_-Int_", (_: Int) - (_: Int)) + val mult = define("_*Int_", (_: Int) * (_: Int)) + val div = define("_/Int_", (_: Int) / (_: Int)) + val mod = define("_%Int_", (_: Int) % (_: Int)) + val lt = define("_Int_", (_: Int) > (_: Int)) + val ge = define("_>=Int_", (_: Int) >= (_: Int)) + val neq = define("_=/=Int_", (_: Int) != (_: Int)) + val eq = define("_==Int_", (_: Int) == (_: Int)) -trait HasINTminus extends HasINT { self: Environment => - val intMinus = new Named("_-Int_")(self) with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(INT(a + b)) - case _ => None - } - override def smtName: String = "-" + lazy val all = Set(Int, plus, minus, mult, div, mod, lt, le, gt, ge, neq, eq) } -} -trait HasINTmult extends HasINT { self: Environment => - val intMult = new Named("_*Int_")(self) with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(INT(a * b)) - case _ => None - } - override def smtName: String = "*" - } -} - -trait HasINTdiv extends HasINT { self: Environment => - val intDiv = new Named("_/Int_")(self) with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - //case (_, INT(0)) => None - //case (INT(0), b) if b.isGround => Some(INT(0)) - case (INT(a), INT(b)) => Some(INT(a / b)) - case _ => None - } - override def smtName: String = "div" // integer division, while "/" is real division. - } -} - -trait HasINTmod extends HasINT { self: Environment => - val intMod = new Named("_%Int_")(self) with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(INT(a % b)) - case _ => None - } - override def smtName: String = "mod" // z3 also has "rem", remainder. - } -} - -trait HasINTcmp extends HasINTlt with HasINTle with HasINTgt with HasINTge { self: Environment => } - -trait HasINTlt extends HasINT with HasBOOLEAN { self: Environment => - val intLt = new Named("_ Some(BOOLEAN(a < b)) - case _ => None - } - override def smtName: String = "<" - } -} - -trait HasINTle extends HasINT with HasBOOLEAN { self: Environment => - val intLe = new Named("_<=Int_")(self) with FunctionLabel2 with Z3Builtin { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(BOOLEAN(a <= b)) - case _ => None - } - override def smtName: String = "<=" - } -} - -trait HasINTgt extends HasINT with HasBOOLEAN { self: Environment => - val intGt = new Named("_>Int_")(self) with FunctionLabel2 with Z3Builtin { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(BOOLEAN(a > b)) - case _ => None - } - override def smtName: String = ">" - } -} - -trait HasINTge extends HasINT with HasBOOLEAN { self: Environment => - val intGe = new Named("_>=Int_")(self) with FunctionLabel2 with Z3Builtin { - def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (INT(a), INT(b)) => Some(BOOLEAN(a >= b)) - case _ => None - } - override def smtName: String = ">=" - } + implicit val updownInt = INT.Int } diff --git a/src/main/scala/org/kframework/kale/builtin/MAP.scala b/src/main/scala/org/kframework/kale/builtin/MAP.scala new file mode 100644 index 0000000..c4baee0 --- /dev/null +++ b/src/main/scala/org/kframework/kale/builtin/MAP.scala @@ -0,0 +1,203 @@ +package org.kframework.kale.builtin + +import org.kframework.kale._ +import org.kframework.kale.standard.{MatchNotSupporteredError, Solved, Task} +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.{Apply, ProcessingFunctions} + +import scala.collection.{Iterable, Map, Set} + +trait MapMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin with HasMatcher => + + registerMatcher({ + case (_: MapLabel, right) if !right.isInstanceOf[Variable] => MapTerm + }, Priority.medium) + + case class MapTerm(solver: Apply) extends Binary.F({ (a: Term, b: Term) => + a.label match { + case mapLabel: MapLabel => + val mapLabel.indexedAndUnindexed(leftMap, leftUnindexed) = a + val mapLabel.indexedAndUnindexed(rightMap, rightUnindexed) = b + + assert(leftMap.size + leftUnindexed.size > 1, "There is some bug in the Piece registration") + + + if (rightUnindexed.nonEmpty) { + throw MatchNotSupporteredError(a, b, "Unindexed on the rhs.") + } else if (leftMap.nonEmpty && rightMap.isEmpty && rightUnindexed.isEmpty) { + Bottom + } else if ( + leftMap.isEmpty + && leftUnindexed.exists({ case ForAll(v1, v2) => v1 == v2; case v: Variable => true; case _ => false }) + && leftUnindexed.exists({ case Rewrite(mapLabel.identity, _) => true; case _ => false })) { + val leftVar = leftUnindexed.find({ case ForAll(v1, v2) => v1 == v2; case v: Variable => true; case _ => false }).get + val rhs = leftUnindexed.collect({ case Rewrite(mapLabel.identity, r) => r }).head + + val nextTerm = if (rightMap.size + rightUnindexed.size == 0) { + Next(rhs) + } else { + if (mapLabel.isIndexable(rhs)) { + Next(MapImplementation(mapLabel, rightMap + (mapLabel.indexFunction(rhs) -> rhs), rightUnindexed)) + } else { + Next(MapImplementation(mapLabel, rightMap, rightUnindexed + rhs)) + } + } + And(And.onlyPredicate(solver(leftVar, b)), nextTerm) + + } else if (leftMap.nonEmpty && rightMap.nonEmpty && leftUnindexed.size <= 1 && rightUnindexed.isEmpty) { + val leftKeys = leftMap.keys.toSet + val rightKeys = rightMap.keys.toSet + + + if (!rightKeys.forall(_.isGround)) { + throw MatchNotSupporteredError(a, b) + } + + if (!(leftKeys filter (_.isGround) forall rightKeys.contains)) { + Bottom + } else if (leftKeys.size - (leftKeys & rightKeys).size <= 1) { + + val commonKeys = leftKeys & rightKeys + import mapLabel._ + + val valueMatchesTasks: Term = if (commonKeys.nonEmpty) + And.combine(mapLabel)(commonKeys map (k => Task(leftMap(k), rightMap(k))) toSeq: _*) + else + identity + + val lookupByKeyVariableAndValueMatch = if (leftKeys.size - commonKeys.size == 1) { + val v = (leftKeys -- rightKeys).head + val rightValue = (rightKeys -- leftKeys).head + + And(Equality(v, rightValue), leftMap(v), rightMap(rightValue)) + ??? + } else { + Top + } + + val freeLeftVariableEqualityTask = if (leftUnindexed.size == 1) { + val value = mapLabel((rightKeys -- leftKeys).map(rightMap)) + And(And.onlyPredicate(solver(leftUnindexed.head, value)), value) + } else { + mapLabel.identity + } + + if (And.onlyPredicate(lookupByKeyVariableAndValueMatch) != Top && And.onlyPredicate(freeLeftVariableEqualityTask) != Top) { + throw MatchNotSupporteredError(a, b) + } + + And.combine(mapLabel)(Solved(valueMatchesTasks), Solved(freeLeftVariableEqualityTask)) //lookupByKeyVariableAndValueMatch + } else { + throw MatchNotSupporteredError(a, b, "Only supported matches with at most one differing (i.e., symbolic somehow) key and at most a variable (at the top level) on the rhs.") + } + } else { + throw MatchNotSupporteredError(a, b, "Not yet implemented. Should eventually default to AC.") + } + } + }) + +} + +case class MapLabel(name: String, indexFunction: Term => Term, identity: Term)(implicit val env: Environment) extends NonPrimitiveMonoidLabel with Constructor { + override val isPredicate: Option[Boolean] = Some(false) + + def isIndexable(t: Term) = + !t.label.isInstanceOf[VariableLabel] && + !t.label.isInstanceOf[FunctionLabel] && + !t.label.isInstanceOf[RewriteLabel] && + !t.label.isInstanceOf[ForAllLabel] + + trait HasEnvironment { + val env = MapLabel.this.env + } + + override def construct(l: Iterable[Term]): Term = { + val indexed = l + .collect { + case t if isIndexable(t) => (indexFunction(t), t) + } + .toMap + val unindexed = (l filterNot isIndexable).toSet + new MapImplementation(this, indexed, unindexed) + } + + + def apply(map: collection.Map[Term, Term], unindexable: Set[Term]): Term = (map.size, unindexable.size) match { + case (0, 0) => identity + case (1, 0) => map.head._2 + case (0, 1) => unindexable.head + case _ => new MapImplementation(this, map, unindexable) + } + + object indexedAndUnindexed { + def unapply(m: Term): Option[(Map[Term, Term], Set[Term])] = m match { + case m: MapImplementation if m.label == MapLabel.this => Some(m.map, m.unindexable) + case `identity` => Some(Map[Term, Term](), Set[Term]()) + case t if isIndexable(t) => Some(Map(indexFunction(t) -> t), Set[Term]()) + case t if !isIndexable(t) => Some(Map[Term, Term](), Set(t)) + } + } + + /** + * returns the entire object that has been indexed + */ + object lookupByKey extends { + override val isPredicate: Option[Boolean] = Some(false) + val name = MapLabel.this.name + ".lookupByKey" + } with HasEnvironment with FunctionLabel2 { + def f(m: Term, key: Term) = m match { + case indexedAndUnindexed(scalaMap, restOfElements) => + scalaMap.get(key).orElse( + if (restOfElements.isEmpty && key.isGround && scalaMap.keys.forall(_.isGround)) Some(env.Bottom) else None) + case _ => None + } + } + + /** + * the classic map lookup + */ + object lookup extends { + override val isPredicate: Option[Boolean] = Some(false) + val name = MapLabel.this.name + ".lookup" + } with HasEnvironment with FunctionLabel2 { + def f(m: Term, key: Term) = m match { + case indexedAndUnindexed(scalaMap, restOfElements) => + scalaMap.get(key).map(_.children.toList(1)).orElse( + if (restOfElements.isEmpty && key.isGround && scalaMap.keys.forall(_.isGround)) Some(env.Bottom) else None) + case _ => None + } + } + +} + +class KeysFunction(mapLabel: MapLabel, returnedSetLabel: SetLabel)(implicit val env: Environment) extends { + override val isPredicate: Option[Boolean] = Some(false) + val name = mapLabel.name + ".keys" +} with FunctionLabel1 { + def f(m: Term) = m match { + case mapLabel.indexedAndUnindexed(scalaMap, restOfElements) => + Some(returnedSetLabel(scalaMap.keys)) + case _ => None + } +} + +case class MapImplementation(label: MapLabel, map: collection.Map[Term, Term], unindexable: Set[Term]) extends Assoc { + lazy val assocIterable = unindexable ++ map.values + + override def _1: Term = unindexable.headOption.getOrElse(map.head._2) + + override lazy val isPredicate: Boolean = false + + override def _2: Term = + if (unindexable.nonEmpty) + label(map, unindexable.tail) + else + label(map.tail, unindexable) + + + def equals(other: Term) = other match { + case that: MapImplementation => this.label == that.label && this.map == that.map && this.unindexable == that.unindexable + case _ => false + } +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/builtin/MapImplementation.scala b/src/main/scala/org/kframework/kale/builtin/MapImplementation.scala deleted file mode 100644 index fe65813..0000000 --- a/src/main/scala/org/kframework/kale/builtin/MapImplementation.scala +++ /dev/null @@ -1,96 +0,0 @@ -package org.kframework.kale.builtin - -import org.kframework.kale._ - -import scala.collection.{Iterable, Map, Set} - - -case class MapLabel(name: String, indexFunction: Term => Term, identity: Term)(implicit val env: Environment) extends AssocWithIdLabel { - def isIndexable(t: Term) = !t.label.isInstanceOf[VariableLabel] && !t.isInstanceOf[FunctionLabel] - - trait HasEnvironment { - val env = MapLabel.this.env - } - - override def construct(l: Iterable[Term]): Term = { - val indexed = l - .collect { - case t if isIndexable(t) => (indexFunction(t), t) - } - .toMap - val unindexed = (l filterNot isIndexable).toSet - new MapImplementation(this, indexed, unindexed) - } - - - def apply(map: collection.Map[Term, Term], unindexable: Set[Term]): Term = (map.size, unindexable.size) match { - case (0, 0) => identity - case (1, 0) => map.head._2 - case (0, 1) => unindexable.head - case _ => new MapImplementation(this, map, unindexable) - } - - object map { - def unapply(m: Term): Option[(Map[Term, Term], Set[Term])] = m match { - case m: MapImplementation if m.label == MapLabel.this => Some(m.map, m.unindexable) - case `identity` => Some(Map[Term, Term](), Set[Term]()) - case t if isIndexable(t) => Some(Map(indexFunction(t) -> t), Set[Term]()) - case t if !isIndexable(t) => Some(Map[Term, Term](), Set(t)) - } - } - - // returns the entire object that has been indexed - object lookupByKey extends { - val name = MapLabel.this.name + ".lookupByKey" - } with HasEnvironment with FunctionLabel2 { - def f(m: Term, key: Term) = m match { - case map(scalaMap, restOfElements) => - scalaMap.get(key).orElse( - if (restOfElements.isEmpty && key.isGround && scalaMap.keys.forall(_.isGround)) Some(env.Bottom) else None) - case _ => None - } - } - - // the classic map lookup - object lookup extends { - val name = MapLabel.this.name + ".lookup" - } with HasEnvironment with FunctionLabel2 { - def f(m: Term, key: Term) = m match { - case map(scalaMap, restOfElements) => - scalaMap.get(key).map(_.children.toList(1)).orElse( - if (restOfElements.isEmpty && key.isGround && scalaMap.keys.forall(_.isGround)) Some(env.Bottom) else None) - case _ => None - } - } - -} - -class KeysFunction(mapLabel: MapLabel, returnedSetLabel: SetLabel)(implicit val env: Environment) extends { - val name = mapLabel.name + ".keys" -} with FunctionLabel1 { - def f(m: Term) = m match { - case mapLabel.map(scalaMap, restOfElements) => - Some(returnedSetLabel(scalaMap.keys)) - case _ => None - } -} - -case class MapImplementation(label: MapLabel, map: collection.Map[Term, Term], unindexable: Set[Term]) extends Assoc { - lazy val assocIterable = unindexable ++ map.values - - override def _1: Term = unindexable.headOption.getOrElse(map.head._2) - - override lazy val isPredicate: Boolean = false - - override def _2: Term = - if (unindexable.nonEmpty) - label(map, unindexable.tail) - else - label(map.tail, unindexable) - - - def equals(other: Term) = other match { - case that: MapImplementation => this.label == that.label && this.map == that.map && this.unindexable == that.unindexable - case _ => false - } -} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/builtin/SET.scala b/src/main/scala/org/kframework/kale/builtin/SET.scala index ccf3fdd..c5b43ac 100644 --- a/src/main/scala/org/kframework/kale/builtin/SET.scala +++ b/src/main/scala/org/kframework/kale/builtin/SET.scala @@ -4,7 +4,9 @@ import org.kframework.kale._ import scala.collection.{Iterable, Set} -case class SetLabel(name: String, identity: Term)(implicit val env: Environment with HasBOOLEAN) extends AssocWithIdLabel { +case class SetLabel(name: String, identity: Term)(implicit val env: Environment with BooleanMixin) extends NonPrimitiveMonoidLabel with Constructor { + override val isPredicate: Option[Boolean] = Some(false) + override def construct(l: Iterable[Term]): Term = SET(this, l.toSet) trait HasEnvironment { @@ -20,10 +22,11 @@ case class SetLabel(name: String, identity: Term)(implicit val env: Environment } object in extends { + override val isPredicate: Option[Boolean] = Some(false) val name = SetLabel.this.name + ".in" } with HasEnvironment with FunctionLabel2 { def f(s: Term, key: Term) = s match { - case set(elements) => Some(env.BOOLEAN(elements.contains(key))) + case set(elements) => Some(env.BOOLEAN.Boolean(elements.contains(key))) } } @@ -38,4 +41,5 @@ case class SET(label: SetLabel, elements: Set[Term]) extends Assoc { override def _1: Term = elements.head override def _2: Term = SET(label, elements.tail) -} \ No newline at end of file +} + diff --git a/src/main/scala/org/kframework/kale/builtin/STRING.scala b/src/main/scala/org/kframework/kale/builtin/STRING.scala index 1fe0c60..15e1a43 100644 --- a/src/main/scala/org/kframework/kale/builtin/STRING.scala +++ b/src/main/scala/org/kframework/kale/builtin/STRING.scala @@ -1,12 +1,65 @@ package org.kframework.kale.builtin -import org.kframework.kale.Environment +import cats.Monoid +import org.kframework.kale +import org.kframework.kale._ import org.kframework.kale.standard.ReferenceLabel +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply -trait HasSTRING { - self: Environment => - val STRING = new ReferenceLabel[String]("String")(this) { - override protected[this] def internalInterpret(s: String): String = s +trait StringMixin extends kale.StringMixin { + _: Environment with IntMixin with BooleanMixin with Mixin => + + override val STRING = new STRING { + + implicit val String = define[String]("String")(x => x) + + val Regex = define[scala.util.matching.Regex]("Regex")(_.r) + + val substr = define("substrString", (_: String).substring(_: Int, _: Int)) + + //Todo: From what I understand the hooks do. + val findstr = define("findString", (_: String).indexOf(_: String, _: Int)) + + val rfindstr = define("rfindString", (_: String).lastIndexOf(_: String, _: Int)) + + val findchar = define("findChar", (_: String).indexOf((_: String).charAt(0), _: Int)) + + val rfindchar = define("rfindChar", (_: String).lastIndexOf((_: String).charAt(0), _: Int)) + + val unescape = define("Unescape", StringContext.treatEscapes(_: String)) + + implicit val concatMonoid = new Monoid[String] { + override def empty = "" + + override def combine(x: String, y: String) = x concat y + } + + val strconcat = monoid[String]("_+String_") + + val replaceall = define("replaceAll(_,_,_)", (_: String).replaceAll(_: String, _: String)) + + val replacefirst = define("replaceFirst(_,_,_)", (_: String).replaceFirst(_: String, _: String)) + + val stringne = define("_=/=String_", (_: String) != (_: String)) + + val stringe = define("_==String_", (_: String) == (_: String)) } + + import STRING._ + + implicit val upString = String + + case class RegexMatch(solver: Apply) extends Binary.F({ (r: DomainValue[scala.util.matching.Regex], s: Term) => + val reg = r.data + s match { + case String(reg()) => s + case _ => Bottom + } + }) + + registerMatcher({ + case (Regex, String) => RegexMatch + }, Priority.low + 1) } diff --git a/src/main/scala/org/kframework/kale/builtin/GenericTokenLabel.scala b/src/main/scala/org/kframework/kale/builtin/TOKEN.scala similarity index 59% rename from src/main/scala/org/kframework/kale/builtin/GenericTokenLabel.scala rename to src/main/scala/org/kframework/kale/builtin/TOKEN.scala index 3b3b6f6..e2ee6ce 100644 --- a/src/main/scala/org/kframework/kale/builtin/GenericTokenLabel.scala +++ b/src/main/scala/org/kframework/kale/builtin/TOKEN.scala @@ -1,8 +1,8 @@ package org.kframework.kale.builtin -import org.kframework.kale.{Environment, Sort} import org.kframework.kale.standard.ReferenceLabel +import org.kframework.kale.{Environment, Sort} -case class GenericTokenLabel(sort: Sort)(implicit override val env: Environment) extends ReferenceLabel[String]("TOKEN_" + sort.name)(env) { +case class TOKEN(override val name: String, sort: Sort)(implicit override val env: Environment) extends ReferenceLabel[String](name) { override protected[this] def internalInterpret(s: String): String = s -} \ No newline at end of file +} diff --git a/src/main/scala/org/kframework/kale/context/Context1ApplicationLabel.scala b/src/main/scala/org/kframework/kale/context/Context1ApplicationLabel.scala index cfe4adf..0771f4f 100644 --- a/src/main/scala/org/kframework/kale/context/Context1ApplicationLabel.scala +++ b/src/main/scala/org/kframework/kale/context/Context1ApplicationLabel.scala @@ -1,13 +1,9 @@ package org.kframework.kale.context -import org.kframework.kale.context.anywhere.{AnywhereContextApplication, ContextContentVariable} +import org.kframework.kale.context.anywhere.ContextContentVariable import org.kframework.kale.{Label2, Term, Variable} trait Context1ApplicationLabel extends Label2 with ContextLabel { + override val isPredicate: Option[Boolean] = Some(false) def hole(x: Variable): ContextContentVariable - - override def unapply(t: Term): Option[(Variable, Term)] = t match { - case n: AnywhereContextApplication if n.label == this => Some(n._1, n._2) - case _ => None - } } diff --git a/src/main/scala/org/kframework/kale/context/anywhere.scala b/src/main/scala/org/kframework/kale/context/anywhere.scala index 74ae62b..a92906b 100644 --- a/src/main/scala/org/kframework/kale/context/anywhere.scala +++ b/src/main/scala/org/kframework/kale/context/anywhere.scala @@ -1,113 +1,213 @@ package org.kframework.kale.context -import org.kframework.kale._ -import org.kframework.kale.standard.{Name, StandardEnvironment, SubstitutionWithContext} +import org.kframework.kale.{Environment, HasMatcher, _} +import org.kframework.kale.context.anywhere.ContextContentVariable +import org.kframework.kale.standard.HolesMixin +import org.kframework.kale.transformer.Binary.{Apply, ProcessingFunctions} import org.kframework.kale.transformer.{Binary, Unary} -import org.kframework.kale.transformer.Binary.TypedWith -import org.kframework.kale.util.Named +import org.kframework.kale.util.{LabelNamed, timer} +import org.roaringbitmap.RoaringBitmap -object anywhere { - case class AnywhereContextApplication(label: Context1ApplicationLabel, contextVar: Variable, redex: Term) extends Node2 with Context { - val _1: Variable = contextVar - val _2: Term = redex - val hole: ContextContentVariable = label.hole(contextVar) - override lazy val isGround = false - } +trait ContextMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin => + + val Context = new LabelNamed("Context") with Label3 { + override val isPredicate: Option[Boolean] = Some(false) + + override def requiredLabels(children: Iterable[Term]) = Roaring.requiredFor(children.tail) + override def suppliedLabels(children: Iterable[Term]) = allLabelIds - case class AnywhereContextApplicationLabel(implicit override val env: Environment) extends Named("AnywhereContext") with Context1ApplicationLabel { - override def apply(_1: Term, _2: Term): AnywhereContextApplication = _1 match { - case v: Variable => AnywhereContextApplication(this, v, _2) - case _ => throw new AssertionError(id + " " + "First parameter needs to be a variable but was: " + _1) + override def apply(variable: Term, redex: Term, contextPredicate: Term = Or(And(anywhere, Variable.freshVariable()), Variable.freshVariable())): ContextApplication = variable match { + case v: Variable => ContextApplication(v, redex, contextPredicate) + case env.ForAll(v: Variable, _) => ContextApplication(v, redex, contextPredicate) + case _ => throw new AssertionError(id + " " + "First parameter needs to be a variable but was: " + variable) } + val hole = Variable("CONTEXT_HOLE") + + val anywhere = (new LabelNamed("anywhere") with Label0 with CluelessRoaring { + override val isPredicate: Option[Boolean] = Some(false) + + override def apply(): Term = new SimpleNode0(this) { + override lazy val isPredicate = true + } + }) () + def hole(x: Variable) = ContextContentVariable(x, 1) } + val SolvingContext = new LabelNamed("SolvingContext") with Label1 with Projection1Roaring { + override val isPredicate: Option[Boolean] = Some(false) + + override def apply(_1: Term): Term = { + assert(_1.label == Context) + SimpleNode1(this, _1) + } + } + + def ANYWHERE(t: Term) = Context(Variable.freshVariable(), t) - class AnywhereContextMatcher(implicit env: StandardEnvironment) extends transformer.Binary.ProcessingFunction[Binary.Apply] with TypedWith[AnywhereContextApplication, Term] { + val HoleBinder = new LabelNamed("HoleBinder") with Label2 with Predicate { + override def apply(_1: Term, _2: Term) = new SimpleNode2(this, _1, _2) + } - import env._ + case class ContextApplication(contextVar: Variable, redex: Term, contextPredicate: Term) extends Node3 with Context { - override def f(solver: Binary.Apply)(contextApplication: AnywhereContextApplication, term: Term): Term = { - assert(contextApplication.label == AnywhereContext) - val contextVar = contextApplication.contextVar + val label = Context - def solutionFor(subterms: Seq[Term], reconstruct: (Int, Term) => Term) = { - Or(subterms.indices map { i => - // calling f directly instead of solver because we know contextApplication is hooked to the current f - val solutionForSubtermI = f(solver)(contextApplication, subterms(i)) - val res = Or.asSet(solutionForSubtermI) map { - // this rewires C -> HOLE into C -> foo(HOLE) - case And.substitution(m) if m.contains(contextVar) => And.substitution(m.updated(contextVar, reconstruct(i, m(contextVar)))) - } - Or(res) - }) - } + val _1: Variable = contextVar + val _2: Term = redex + val _3: Term = contextPredicate + val specificHole: ContextContentVariable = label.hole(contextVar) + + private val unfoldedContextPredicate = contextPredicate.mapBU({ + case Context.hole => SolvingContext(this); + case o => o + }) + + val finalContextPredicate = contextPredicate.variables.filter(_ != Context.hole).foldLeft(unfoldedContextPredicate) { + case (t, v) => Exists(v, t) + } + + override lazy val variables: Set[Variable] = contextVar.variables | redex.variables + + override lazy val isGround = false + } - term.label match { - case AnywhereContext => - val (rightContextVar, rightContextTerm) = AnywhereContext.unapply(term).get - - def findMatches(t: Term): Term = { - Or(t match { - case AnywhereContext(_, tt) => solver(contextApplication.redex, tt) - case tt => Or(t.children.map(findMatches)) - }, solver(contextApplication.redex, t)) - } - - val recursive = findMatches(rightContextTerm) - Or(Or.asSet(recursive) map { - case And.substitution(m) => And.substitution(m.updated(contextVar, rightContextVar)) - }) - case `Or` => { - Or(Or.asSet(term) map (solver(contextApplication, _))) + def ContextMatcher(solver: Apply): (ContextApplication, Term) => Term = { (contextApp: ContextApplication, term: Term) => + val res = solver(SolvingContext(contextApp), term) + res.asOr map { + case And.SPN(s, p@And.set(setOfp), n) => + val redex = setOfp.collect({ + case HoleBinder(contextApp.specificHole, r) => r + }).head + And.SPN( + And.substitution(s.asMap + (contextApp.contextVar -> n)), + And(setOfp.filter({ case HoleBinder(contextApp.specificHole, _) => false; case _ => true })), + Equality.binding(contextApp.specificHole, redex)(n)) + } + } + + def indicesToAvoidTraversingForTerm(t: Term): Set[Int] = Set() + + def SolvingContextMatcher(solver: Apply): (Node1, Term) => Term = { (solvingContext: Node1, term: Term) => + val contextApp = solvingContext._1.asInstanceOf[ContextApplication] + + assert(contextApp.label == Context) + val contextVar = contextApp.contextVar + + def solutionFor(subterms: Seq[Term], reconstruct: (Int, Term) => Term, avoidIndices: Set[Int] = Set()) = { + Or((subterms.indices.toSet &~ avoidIndices) map { i: Int => + // calling f directly instead of solver because we know contextApp is hooked to the current f + val solutionForSubtermI = solver(solvingContext, subterms(i)) + solutionForSubtermI.asOr map { + // this rewires C -> HOLE into C -> foo(HOLE) + case And.SPN(s, p, next) => + And.SPN(s, p, reconstruct(i, next)) } - case `And` => { - ??? + }) + } + + term.label match { + case Context => + val (rightContextVar, rightContextRedex, rightContextPredicate) = Context.unapply(term).get + solutionFor(term.children.toSeq, (_: Int, tt: Term) => Context(rightContextVar, tt, rightContextPredicate), Set(0, 2)) + case other => + val matchPredicate = unify(contextApp.finalContextPredicate, term) + + matchPredicate.asOr map { + case And.SPN(s, p, n) if p.contains(Context.anywhere) => + assert(n.label != And && n.label != Or) + // C[bar(X)] := foo(bar(1)) + val subterms = n.children + val recursive = solutionFor(subterms.toSeq, (pos: Int, tt: Term) => n.updateAt(pos)(tt), indicesToAvoidTraversingForTerm(n)) + /* + // previous code used for matching assoc. now assoc is simply treated as right-assoc for anywhere matches + val subresults = l.asIterable(term).toList + val recursive = solutionFor(subresults, (pos: Int, tt: Term) => l(subresults.updated(pos, tt))) + And(s, recursive) + */ + And(s, recursive) + case And.SPN(s, p, n) if p.findBU({ case HoleBinder(contextApp.specificHole, _) => true; case _ => false }).isEmpty => + val redexSol = solver(contextApp.redex, n) + redexSol.asOr map { + case And.SPN(ss, pp, redexTerm) => + And.SPN(And.substitution(s.asMap ++ ss.asMap), And(p, pp, HoleBinder(contextApp.specificHole, redexTerm)), contextApp.specificHole) + } + case o => o } - case l: AssocLabel => - val zeroLevel: Term = And(solver(contextApplication.redex, term), Equality(contextApplication.contextVar, contextApplication.hole)) - val subresults = l.asIterable(term).toList - val recursive = solutionFor(subresults, (pos: Int, tt: Term) => l(subresults.updated(pos, tt))) - Or(recursive, zeroLevel) - case l => - // C[bar(X)] := foo(bar(1)) - - val zeroLevel: Term = And( - // zero level tries to match bar(X) with foo(bar(X)) - solver(contextApplication.redex, term), - // C -> HOLE - Equality(contextApplication.contextVar, contextApplication.hole)) - val subterms = term.children - val recursive = solutionFor(subterms.toSeq, (pos: Int, tt: Term) => term.updateAt(pos)(tt)) - Or(recursive, zeroLevel) - } } } +} - class AnywhereContextProcessingFunction(implicit env: StandardEnvironment) extends Unary.ProcessingFunction[SubstitutionApply] { - type Element = AnywhereContextApplication +// TODO: un-bundle after we have decoupled the unary functions (substitution) +trait BundledContextMixin extends ContextMixin with PatternContextMixin { + _: Environment with HolesMixin with standard.MatchingLogicMixin => - import env._ + object AnywhereContextProcessingFunction extends Unary.ProcessingFunction[SubstitutionApply] { + type Element = ContextApplication - override def f(solver: SubstitutionApply)(t: AnywhereContextApplication): Term = { - val recursiveResult = Equality.binding(t.hole, solver(t.redex)) - And.substitution(solver.substitution, recursiveResult) match { - case subs: Substitution => - val innerSolver = new SubstitutionWithContext(subs)(env) + override def f(solver: SubstitutionApply)(t: ContextApplication): Term = { + val recursiveResult = Equality.binding(t.specificHole, solver(t.redex)) + And(solver.substitution, recursiveResult) match { + case And.SPN(subs, _, _) => + val innerSolver = new SubstitutionWithContext(subs) - solver.substitution.get(t.contextVar) map innerSolver getOrElse Bottom + solver.substitution.get(t.contextVar) map innerSolver getOrElse Context(t.contextVar, solver(t.redex), solver(t.contextPredicate)) case `Bottom` => Bottom + case _ => t // TODO: risky case; look into this at some point } } } + object RewriteProcessingFunction extends Unary.ProcessingFunction[SubstitutionApply] { + type Element = Rewrite + + def f(solver: SubstitutionApply)(rw: Rewrite): Term = { + val rhsSolver = substitutionMaker(And(solver.substitution.asMap.filter(_._2.isGround))) + rw.copy(solver(rw._1), rhsSolver(rw._2)) + } + } + + case class SubstitutionWithContext(override val substitution: Substitution) extends SubstitutionApply(substitution)(env) { + override def processingFunctions: ProcessingFunctions = definePartialFunction[Term, this.type]({ + case Context => AnywhereContextProcessingFunction + case `Rewrite` => RewriteProcessingFunction + case l: PatternContextApplicationLabel => PatternContextProcessingFunction + }) orElse super.processingFunctions + } + + object PatternContextProcessingFunction extends Unary.ProcessingFunction[SubstitutionApply] { + type Element = PatternContextApplication + + override def f(solver: SubstitutionApply)(t: PatternContextApplication): Term = { + val contextVar = t.contextVar + solver.substitution.get(contextVar).map({ context => + solver(new standard.Binding(Hole, t.redex)(env)(context)) + }).getOrElse(t.label(contextVar, solver(t.redex))) + } + } + + + registerMatcher( + { + case (capp: PatternContextApplicationLabel, _) => PatternContextMatcher + case (Context, _) => ContextMatcher + case (SolvingContext, _) => SolvingContextMatcher + }, + Priority.high + 1 + ) +} + +object anywhere { + + case class ContextContentVariable(basedOn: Variable, index: Int) extends Variable { // assert(!basedOn.isInstanceOf[ContextContentVariable]) val label: VariableLabel = basedOn.label - override val name = Name(basedOn.name.str + "_" + index) + override val name = Name(basedOn.name.toString + "☐" + index) } } diff --git a/src/main/scala/org/kframework/kale/context/pattern.scala b/src/main/scala/org/kframework/kale/context/pattern.scala index 2748413..febc5e1 100644 --- a/src/main/scala/org/kframework/kale/context/pattern.scala +++ b/src/main/scala/org/kframework/kale/context/pattern.scala @@ -1,17 +1,19 @@ package org.kframework.kale.context -import org.kframework.kale._ +import org.kframework.kale.{Environment, HasMatcher, _} import org.kframework.kale.context.anywhere.ContextContentVariable -import org.kframework.kale.standard.{StandardEnvironment, SubstitutionWithContext} -import org.kframework.kale.transformer.Binary.TypedWith +import org.kframework.kale.standard.{AssocWithIdList, HolesMixin, StandardEnvironment} +import org.kframework.kale.transformer.Binary.Apply import org.kframework.kale.transformer.{Binary, Unary} -import org.kframework.kale.util.Util +import org.roaringbitmap.RoaringBitmap -import scala.collection.{Map, Set} +import scala.collection.Set -object pattern { +trait PatternContextMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin with HasMatcher with HolesMixin => - case class PatternContextApplicationLabel(name: String)(implicit val env: StandardEnvironment) extends Context1ApplicationLabel { + case class PatternContextApplicationLabel(name: String)(implicit val env: Environment with standard.MatchingLogicMixin) + extends Context1ApplicationLabel with CluelessRoaring { // val C = env.Variable("GENERIC_CONTEXT_VAR") @@ -21,7 +23,7 @@ object pattern { this.patterns = ps assert(env.Or.asSet(patterns) map { - case env.Equality(_, env.And.formulasAndNonFormula(_, Some(_))) => true; + case env.Equality(_, env.And.predicatesAndNonPredicate(_, _)) => true case _ => false } reduce (_ && _)) } @@ -40,8 +42,6 @@ object pattern { override def _2: Term = redex - import label.env._ - private val sub = And.substitution(Map(Hole -> redex)) def contextVariables(t: Term): Set[Variable] = t match { @@ -52,64 +52,46 @@ object pattern { lazy val patternsWithRedexHolesAndTheirContextVariables: Set[(Term, Term, Set[Variable])] = Or.asSet(label.patterns) map { case Equality(left, right) => - (Equality(sub(left), sub(right)), right, Util.variables(right)) - } - } - - class PatternContextMatcher(implicit env: StandardEnvironment) extends transformer.Binary.ProcessingFunction[Binary.Apply] with TypedWith[PatternContextApplication, Term] { - - import env._ - import org.kframework.kale.util.StaticImplicits._ - - override def f(solver: Binary.Apply)(contextApplication: PatternContextApplication, term: Term): Term = { - val leftContextLabel = contextApplication.label - val contextVar = contextApplication.contextVar - val redex = contextApplication.redex - - - Or(contextApplication.patternsWithRedexHolesAndTheirContextVariables map { - case (Equality(And.formulasAndNonFormula(leftFormulas, Some(theContextDeclaration)), right), withHoles, contextVars) => - val contextMatch = solver(right, term) - val contextMatchSolutions = Or.asSet(contextMatch) - Or(contextMatchSolutions map { - case And.substitutionAndTerms(sub@And.substitution(substitutionAsAMap), rhsLeftoverConstraints) => - val partiallySolvedLeftFormulas = sub(leftFormulas) - val contextSub = Equality(contextVar, sub(withHoles)) - // TODO: filter out less - And(partiallySolvedLeftFormulas, contextSub, And.substitution(substitutionAsAMap.filter({ case (k, _) => !contextVars.contains(k) }))) - }) - }) - - // `buz(H)`[H] = buz(C[H]) - // `H`[H] = H - // foo(C[bar(X)]) - // foo(buz(bar(1))) - // C -> buz(H) - // X -> 1 - - // foo(...) - // ... solving C[bar(X)] - // ... matching context C[H] buz(bar(X)) - // ... regular match buz(...) upto matching context C[H] bar(1) - // ... H bar(1) ==> H -> bar(1) - // C -> H, H -> bar(1) - // C -> buz(H), H -> bar(1) - // ... matching bar(X) bar(1) - // C -> buz(H), H -> bar(1), X -> 1 + (Equality(sub(left), sub(right)), right, right.variables) } } - class PatternContextProcessingFunction(implicit env: StandardEnvironment) extends Unary.ProcessingFunction[SubstitutionApply] { - type Element = PatternContextApplication - - import env._ - - override def f(solver: SubstitutionApply)(t: PatternContextApplication): Term = { - val contextVar = t.contextVar - solver.substitution.get(contextVar).map({ context => - solver(new standard.Binding(Hole, t.redex)(env)(context)) - }).getOrElse(t.label(contextVar, solver(t.redex))) - } + def PatternContextMatcher(solver: Apply): (PatternContextApplication, Term) => Term = { (contextApplication: PatternContextApplication, term: Term) => + val leftContextLabel = contextApplication.label + val contextVar = contextApplication.contextVar + val redex = contextApplication.redex + + + Or(contextApplication.patternsWithRedexHolesAndTheirContextVariables map { + case (Equality(And.predicatesAndNonPredicate(leftFormulas, theContextDeclaration), right), withHoles, contextVars) => + val contextMatch = solver(right, term) + val contextMatchSolutions = Or.asSet(contextMatch) + Or(contextMatchSolutions map { + case And.SPN(sub@And.substitution(substitutionAsAMap), rhsLeftoverConstraints, next) => + val partiallySolvedLeftFormulas = sub(leftFormulas) + val matchSubAppliedToWithHoles = sub(withHoles) + val contextSub = Equality(contextVar, matchSubAppliedToWithHoles) + // TODO: filter out less + And(And(partiallySolvedLeftFormulas, contextSub, And.substitution(substitutionAsAMap.filter({ case (k, _) => !contextVars.contains(k) }))), + next) + }) + }) + + // `buz(H)`[H] = buz(C[H]) + // `H`[H] = H + // foo(C[bar(X)]) + // foo(buz(bar(1))) + // C -> buz(H) + // X -> 1 + + // foo(...) + // ... solving C[bar(X)] + // ... matching context C[H] buz(bar(X)) + // ... regular match buz(...) upto matching context C[H] bar(1) + // ... H bar(1) ==> H -> bar(1) + // C -> H, H -> bar(1) + // C -> buz(H), H -> bar(1) + // ... matching bar(X) bar(1) + // C -> buz(H), H -> bar(1), X -> 1 } - } \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/dataTypes.scala b/src/main/scala/org/kframework/kale/dataTypes.scala new file mode 100644 index 0000000..8daa4bc --- /dev/null +++ b/src/main/scala/org/kframework/kale/dataTypes.scala @@ -0,0 +1,66 @@ +package org.kframework.kale + +import org.kframework.kale.builtin._ + +trait IntMixin extends Mixin { + env: Environment => + + trait INT { + val Int: DomainValueLabel[scala.Int] + val plus: PrimitiveFunction2[scala.Int, scala.Int, scala.Int] + val minus: PrimitiveFunction2[scala.Int, scala.Int, scala.Int] + val mult: PrimitiveFunction2[scala.Int, scala.Int, scala.Int] + val div: PrimitiveFunction2[scala.Int, scala.Int, scala.Int] + val mod: PrimitiveFunction2[scala.Int, scala.Int, scala.Int] + val lt: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + val le: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + val gt: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + val ge: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + val neq: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + val eq: PrimitiveFunction2[scala.Int, scala.Int, scala.Boolean] + + val all: Set[Label] + } + + val INT: INT +} + +trait DoubleMixin extends Mixin { + env: Environment => + val DOUBLE: { + val Double: DomainValueLabel[scala.Double] + } +} + +trait BooleanMixin extends Mixin { + env: Environment => + + trait BOOLEAN { + implicit val Boolean: DomainValueLabel[scala.Boolean] + val not: PrimitiveFunction1[scala.Boolean, scala.Boolean] + val True: DomainValue[Boolean] + val False: DomainValue[Boolean] + val isTrue: FunctionLabel1 + } + + val BOOLEAN: BOOLEAN +} + +trait StringMixin extends Mixin { + env: Environment => + + trait STRING { + val String: DomainValueLabel[java.lang.String] + val Regex: DomainValueLabel[scala.util.matching.Regex] + val strconcat: PrimitiveMonoid[String] + } + + val STRING: STRING +} + +trait IdMixin extends Mixin { + env: Environment => + val ID: { + val Id: DomainValueLabel[scala.Symbol] + } +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/equiv.scala b/src/main/scala/org/kframework/kale/equiv.scala new file mode 100644 index 0000000..b6e5589 --- /dev/null +++ b/src/main/scala/org/kframework/kale/equiv.scala @@ -0,0 +1,96 @@ +package org.kframework.kale + +object equiv { + + import cats._ + import cats.implicits._ + + implicit object EqMemo extends Monoid[EqMemo] { + override def empty: EqMemo = new EqMemo(Set()) + + override def combine(x: EqMemo, y: EqMemo): EqMemo = { + new EqMemo(x.s ++ y.s) + } + + def apply(x: Term, y: Term) = new EqMemo(Set((x, y))) + } + + class EqMemo(protected val s: Set[(Term, Term)]) extends PartialEq[Term] { + val m1 = s map (_._1) + val m2 = s map (_._2) + + override def isDefinedAt(p: (Term, Term)): Boolean = m1.contains(p._1) || m2.contains(p._2) + + override def apply(p: (Term, Term)): Eq[Term] = (x: Term, y: Term) => s.contains(p) + } + + trait PartialEq[T] extends PartialFunction[(T, T), Eq[T]] + + /* + Should should the term be handled by the alpha-equivalence mechanism? + If yes, it assumes the corresponding pattern is the only possible equivalent pattern. + Useful, for now, only for marking variable renaming. + E.g., for program variables (language-level, not K/meta-level), the trait should return true + if the terms are both variables and have the same name. + */ + trait CanBeEquivalent extends ((Term, Term) => Boolean) + + implicit def TermEq(implicit canBeEquiv: CanBeEquivalent) = new Eq[Term] { + override def eqv(x: Term, y: Term): Boolean = innerEqv(EqMemo.empty)(x, y).isDefined + + /** + * None represents not equivalent + * Some(eq) means we still think we are equivalent and traversing further using eq + */ + private def innerEqv(knownEq: EqMemo)(x: Term, y: Term): Option[EqMemo] = { + if (canBeEquiv(x, y)) { + // activate the equivalency mechanism + if (knownEq.isDefinedAt((x, y))) { + if (knownEq(x, y).eqv(x, y)) Some(knownEq) else None + } else { + Some(knownEq combine EqMemo(x, y)) + } + } else { + // equivalency mechanism not activated + // check label equality, recurse on children if necessary + if (x.label != y.label) + None + else { + x.label match { + case _: NodeLabel => + x.flattenedChildren.zip(y.flattenedChildren) + .foldLeft(Some(knownEq): Option[EqMemo]) { + case (None, _) => None + case (Some(eqM), (a, b)) => innerEqv(eqM)(a, b) + } + case _: LeafLabel[_] => + if (x == y) Some(knownEq) else None + } + } + } + } + } + + + implicit def alphaEquivalenceBasedOrder(implicit canBeEquivalent: CanBeEquivalent) = new Order[Term] { + override def compare(x: Term, y: Term): Int = { + if (implicitly[Eq[Term]].eqv(x, y)) { + 0 + } else { + val labelEq = x.label.name compareTo y.label.name + if (labelEq == 0) { + x.label match { + case _: NodeLabel => x.flattenedChildren.zip(y.flattenedChildren).collectFirst({ + case (a, b) if compare(a, b) != 0 => compare(a, b) + }).get + case l: LeafLabel[_] => + implicitly[Order[String]].compare(x.toString, y.toString) + } + } else { + labelEq + } + } + } + } +} + diff --git a/src/main/scala/org/kframework/kale/fixedArity.scala b/src/main/scala/org/kframework/kale/fixedArity.scala index f09b9c3..d01141e 100644 --- a/src/main/scala/org/kframework/kale/fixedArity.scala +++ b/src/main/scala/org/kframework/kale/fixedArity.scala @@ -1,6 +1,6 @@ package org.kframework.kale -import org.kframework.kore +import org.roaringbitmap.RoaringBitmap import scala.collection._ @@ -11,7 +11,7 @@ trait Label0 extends (() => Term) with NodeLabel { protected def constructFromChildren(l: Iterable[Term]): Term = apply() - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label1 extends (Term => Term) with NodeLabel { @@ -19,9 +19,14 @@ trait Label1 extends (Term => Term) with NodeLabel { def apply(_1: Term): Term + def unapply(t: Term): Option[Term] = t match { + case n: Node1 if n.label == this => Some(n._1) + case _ => None + } + protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.head) - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label2 extends ((Term, Term) => Term) with NodeLabel { @@ -36,7 +41,7 @@ trait Label2 extends ((Term, Term) => Term) with NodeLabel { case _ => None } - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label3 extends NodeLabel { @@ -44,9 +49,14 @@ trait Label3 extends NodeLabel { def apply(_1: Term, _2: Term, _3: Term): Term + def unapply(t: Term): Option[(Term, Term, Term)] = t match { + case n: Node3 if n.label == this => Some(n._1, n._2, n._3) + case _ => None + } + protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.head, l.tail.head, l.tail.tail.head) - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label4 extends NodeLabel { @@ -56,7 +66,7 @@ trait Label4 extends NodeLabel { protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.head, l.tail.head, l.tail.tail.head, l.tail.tail.tail.head) - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label5 extends NodeLabel { @@ -66,7 +76,7 @@ trait Label5 extends NodeLabel { protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.head, l.tail.head, l.tail.tail.head, l.tail.tail.tail.head, l.tail.tail.tail.tail.head) - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString } trait Label6 extends NodeLabel { @@ -76,16 +86,25 @@ trait Label6 extends NodeLabel { protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.head, l.tail.head, l.tail.tail.head, l.tail.tail.tail.head, l.tail.tail.tail.tail.head, l.tail.tail.tail.tail.tail.head) - override def toString: String = super[NodeLabel].toString + override def toString: String = super[NodeLabel].toString +} + +trait LabelN extends NodeLabel { + override protected def constructFromChildren(l: Iterable[Term]): Term = apply(l.toSeq) + + override def toString: String = super[NodeLabel].toString } -trait Node0 extends Node with Application { + +trait Node0 extends Node { val label: Label0 val isGround = true def innerUpdateAt(i: Int, t: Term): Term = throw new AssertionError("unreachable code") + def map0(f: Term => Term): Term = this.copy() + override def children: Iterable[Term] = Iterable.empty def copy(): Term = label().updatePostProcess(this) @@ -94,25 +113,44 @@ trait Node0 extends Node with Application { assert(children.isEmpty) copy() } + + override def equals(obj: Any): Boolean = obj match { + case that: Node0 => that.label == this.label + case _ => false + } + + override def toString: String = label.toString } trait Node1 extends Node with Product1[Term] { val label: Label1 - val isGround: Boolean = _1.isGround + lazy val isGround: Boolean = _1.isGround def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t) + case 0 => this.copy(t) } override def children: Iterable[Term] = Iterable(_1) - def copy(_1: Term): Term = label(_1).updatePostProcess(this) + def map0(f: Term => Term): Term = this.copy(f(_1)) + + def copy(_1: Term): Term = { + if (_1 == this._1) + this + else + label(_1).updatePostProcess(this) + } override def copy(children: Seq[Term]): Term = { assert(children.size == 1) copy(children.head) } + + override def equals(obj: Any): Boolean = obj match { + case that: Node1 => that.label == label && that._1 == this._1 + case _ => false + } } trait Node2 extends Node with Product2[Term, Term] { @@ -121,31 +159,45 @@ trait Node2 extends Node with Product2[Term, Term] { lazy val isGround: Boolean = _1.isGround && _2.isGround def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t, _2) - case 1 => label(_1, t) + case 0 => this.copy(t, _2) + case 1 => this.copy(_1, t) } override def children: Iterable[Term] = Iterable(_1, _2) - def copy(_1: Term, _2: Term): Term = label(_1, _2).updatePostProcess(this) + def map0(f: Term => Term): Term = this.copy(f(_1), f(_2)) + + def copy(_1: Term, _2: Term): Term = { + if (_1 == this._1 && _2 == this._2) { + this + } else + label(_1, _2).updatePostProcess(this) + } override def copy(children: Seq[Term]): Term = { assert(children.size == 2) copy(children.head, children(1)) } + + override def equals(obj: Any): Boolean = obj match { + case that: Node2 => that.label == label && that._1 == this._1 && that._2 == this._2 + case _ => false + } } trait Node3 extends Node with Product3[Term, Term, Term] { val label: Label3 - val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround + lazy val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t, _2, _3) - case 1 => label(_1, t, _3) - case 2 => label(_1, _2, t) + case 0 => this.copy(t, _2, _3) + case 1 => this.copy(_1, t, _3) + case 2 => this.copy(_1, _2, t) } + def map0(f: Term => Term): Term = this.copy(f(_1), f(_2), f(_3)) + def copy(_1: Term, _2: Term, _3: Term): Term = label(_1, _2, _3).updatePostProcess(this) override def copy(children: Seq[Term]): Term = { @@ -159,15 +211,17 @@ trait Node3 extends Node with Product3[Term, Term, Term] { trait Node4 extends Node with Product4[Term, Term, Term, Term] { val label: Label4 - val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround + lazy val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t, _2, _3, _4) - case 1 => label(_1, t, _3, _4) - case 2 => label(_1, _2, t, _4) - case 3 => label(_1, _2, _3, t) + case 0 => this.copy(t, _2, _3, _4) + case 1 => this.copy(_1, t, _3, _4) + case 2 => this.copy(_1, _2, t, _4) + case 3 => this.copy(_1, _2, _3, t) } + def map0(f: Term => Term): Term = this.copy(f(_1), f(_2), f(_3), f(_4)) + def copy(_1: Term, _2: Term, _3: Term, _4: Term): Term = label(_1, _2, _3, _4).updatePostProcess(this) override def copy(children: Seq[Term]): Term = { @@ -181,14 +235,16 @@ trait Node4 extends Node with Product4[Term, Term, Term, Term] { trait Node5 extends Node with Product5[Term, Term, Term, Term, Term] { val label: Label5 - val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround && _5.isGround + lazy val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround && _5.isGround + + def map0(f: Term => Term): Term = this.copy(f(_1), f(_2), f(_3), f(_4), f(_5)) def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t, _2, _3, _4, _5) - case 1 => label(_1, t, _3, _4, _5) - case 2 => label(_1, _2, t, _4, _5) - case 3 => label(_1, _2, _3, t, _5) - case 4 => label(_1, _2, _3, _4, t) + case 0 => this.copy(t, _2, _3, _4, _5) + case 1 => this.copy(_1, t, _3, _4, _5) + case 2 => this.copy(_1, _2, t, _4, _5) + case 3 => this.copy(_1, _2, _3, t, _5) + case 4 => this.copy(_1, _2, _3, _4, t) } def copy(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term): Term = label(_1, _2, _3, _4, _5).updatePostProcess(this) @@ -204,15 +260,17 @@ trait Node5 extends Node with Product5[Term, Term, Term, Term, Term] { trait Node6 extends Node with Product6[Term, Term, Term, Term, Term, Term] { val label: Label6 - val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround && _5.isGround && _6.isGround + lazy val isGround: Boolean = _1.isGround && _2.isGround && _3.isGround && _4.isGround && _5.isGround && _6.isGround + + def map0(f: Term => Term): Term = this.copy(f(_1), f(_2), f(_3), f(_4), f(_5), f(_6)) def innerUpdateAt(i: Int, t: Term): Term = i match { - case 0 => label(t, _2, _3, _4, _5, _6) - case 1 => label(_1, t, _3, _4, _5, _6) - case 2 => label(_1, _2, t, _4, _5, _6) - case 3 => label(_1, _2, _3, t, _5, _6) - case 4 => label(_1, _2, _3, _4, t, _6) - case 5 => label(_1, _2, _3, _4, _5, t) + case 0 => this.copy(t, _2, _3, _4, _5, _6) + case 1 => this.copy(_1, t, _3, _4, _5, _6) + case 2 => this.copy(_1, _2, t, _4, _5, _6) + case 3 => this.copy(_1, _2, _3, t, _5, _6) + case 4 => this.copy(_1, _2, _3, _4, t, _6) + case 5 => this.copy(_1, _2, _3, _4, _5, t) } def copy(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term, _6: Term): Term = label(_1, _2, _3, _4, _5, _6).updatePostProcess(this) @@ -224,3 +282,20 @@ trait Node6 extends Node with Product6[Term, Term, Term, Term, Term, Term] { override def children: Iterable[Term] = Iterable(_1, _2, _3, _4, _5, _6) } + +trait NodeN extends Node { + val label: NodeLabel + + val isGround: Boolean = children forall (_.isGround) + + def innerUpdateAt(i: Int, t: Term): Term = copy(children.updated(i, t)) + + def map0(f: Term => Term): Term = this.copy(children map f) + + def copy(newChildren: Seq[Term]): Term = { + assert(newChildren.size == label.arity) + label(newChildren).updatePostProcess(this) + } + + override def children: Seq[Term] +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/free.scala b/src/main/scala/org/kframework/kale/free.scala new file mode 100644 index 0000000..b117fa5 --- /dev/null +++ b/src/main/scala/org/kframework/kale/free.scala @@ -0,0 +1,95 @@ +package org.kframework.kale + +import org.roaringbitmap.RoaringBitmap + +trait FreeMixin extends Mixin { + env: Environment => + + def FreeLabel0(name: String): FreeLabel0 + + def FreeLabel1(name: String): FreeLabel1 + + def FreeLabel2(name: String): FreeLabel2 + + def FreeLabel3(name: String): FreeLabel3 + + def FreeLabel4(name: String): FreeLabel4 + + def FreeLabel5(name: String): FreeLabel5 + + def FreeLabel6(name: String): FreeLabel6 + + def FreeLabelN(name: String, arity: Int): FreeLabelN +} + +trait Constructor extends NodeLabel with ConjunctiveRoaring + +trait FreeLabel extends Constructor { + val isPredicate = Some(false) +} + +trait FreeLabel0 extends Label0 with FreeLabel { + private lazy val uniqueInstance = SimpleNode0(this) + + def apply(): Node0 = uniqueInstance +} + +trait FreeLabel1 extends Label1 with FreeLabel { + def apply(_1: Term): Term = env.bottomize(_1) { + SimpleNode1(this, _1) + } +} + +trait FreeLabel2 extends Label2 with FreeLabel { + def apply(_1: Term, _2: Term): Term = env.bottomize(_1, _2) { + SimpleNode2(this, _1, _2) + } +} + +trait FreeLabel3 extends Label3 with FreeLabel { + def apply(_1: Term, _2: Term, _3: Term): Term = env.bottomize(_1, _2, _3) { + SimpleNode3(this, _1, _2, _3) + } +} + +trait FreeLabel4 extends Label4 with FreeLabel { + def apply(_1: Term, _2: Term, _3: Term, _4: Term): Term = env.bottomize(_1, _2, _3, _4) { + SimpleNode4(this, _1, _2, _3, _4) + } +} + +trait FreeLabel5 extends Label5 with FreeLabel { + def apply(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term): Term = env.bottomize(_1, _2, _3, _4, _5) { + SimpleNode5(this, _1, _2, _3, _4, _5) + } +} + +trait FreeLabel6 extends Label6 with FreeLabel { + def apply(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term, _6: Term): Term = env.bottomize(_1, _2, _3, _4, _5, _6) { + SimpleNode6(this, _1, _2, _3, _4, _5, _6) + } +} + +trait FreeLabelN extends LabelN with FreeLabel { + def apply(children: Seq[Term]): Term = env.bottomize(children: _*) { + SimpleNodeN(this, children) + } +} + +trait SimpleNode // extends Node + +case class SimpleNode0(label: Label0) extends Node0 with SimpleNode + +case class SimpleNode1(label: Label1, _1: Term) extends Node1 with SimpleNode + +case class SimpleNode2(label: Label2, _1: Term, _2: Term) extends Node2 with SimpleNode + +case class SimpleNode3(label: Label3, _1: Term, _2: Term, _3: Term) extends Node3 with SimpleNode + +case class SimpleNode4(label: Label4, _1: Term, _2: Term, _3: Term, _4: Term) extends Node4 with SimpleNode + +case class SimpleNode5(label: Label5, _1: Term, _2: Term, _3: Term, _4: Term, _5: Term) extends Node5 with SimpleNode + +case class SimpleNode6(label: Label6, _1: Term, _2: Term, _3: Term, _4: Term, _5: Term, _6: Term) extends Node6 with SimpleNode + +case class SimpleNodeN(label: NodeLabel, children: Seq[Term]) extends NodeN with SimpleNode diff --git a/src/main/scala/org/kframework/kale/freeLabels.scala b/src/main/scala/org/kframework/kale/freeLabels.scala deleted file mode 100644 index 7b0a2e9..0000000 --- a/src/main/scala/org/kframework/kale/freeLabels.scala +++ /dev/null @@ -1,63 +0,0 @@ -package org.kframework.kale - - -trait Constructor extends NodeLabel - -trait FreeLabel extends Constructor - -trait FreeLabel0 extends Label0 with FreeLabel { - private lazy val uniqueInstance = FreeNode0(this) - def apply(): Term = uniqueInstance -} - -trait FreeLabel1 extends Label1 with FreeLabel { - def apply(_1: Term): Term = env.bottomize(_1) { - FreeNode1(this, _1) - } -} - -trait FreeLabel2 extends Label2 with FreeLabel { - def apply(_1: Term, _2: Term): Term = env.bottomize(_1, _2) { - FreeNode2(this, _1, _2) - } -} - -trait FreeLabel3 extends Label3 with FreeLabel { - def apply(_1: Term, _2: Term, _3: Term): Term = env.bottomize(_1, _2, _3) { - FreeNode3(this, _1, _2, _3) - } -} - -trait FreeLabel4 extends Label4 with FreeLabel { - def apply(_1: Term, _2: Term, _3: Term, _4: Term): Term = env.bottomize(_1, _2, _3, _4) { - FreeNode4(this, _1, _2, _3, _4) - } -} - -trait FreeLabel5 extends Label5 with FreeLabel { - def apply(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term): Term = env.bottomize(_1, _2, _3, _4, _5) { - FreeNode5(this, _1, _2, _3, _4, _5) - } -} - -trait FreeLabel6 extends Label6 with FreeLabel { - def apply(_1: Term, _2: Term, _3: Term, _4: Term, _5: Term, _6: Term): Term = env.bottomize(_1, _2, _3, _4, _5, _6) { - FreeNode6(this, _1, _2, _3, _4, _5, _6) - } -} - -trait FreeNode // extends Node - -case class FreeNode0(label: Label0) extends Node0 with FreeNode with Application - -case class FreeNode1(label: Label1, _1: Term) extends Node1 with FreeNode with Application - -case class FreeNode2(label: Label2, _1: Term, _2: Term) extends Node2 with FreeNode with Application - -case class FreeNode3(label: Label3, _1: Term, _2: Term, _3: Term) extends Node3 with FreeNode with Application - -case class FreeNode4(label: Label4, _1: Term, _2: Term, _3: Term, _4: Term) extends Node4 with FreeNode with Application - -case class FreeNode5(label: Label5, _1: Term, _2: Term, _3: Term, _4: Term, _5: Term) extends Node5 with FreeNode with Application - -case class FreeNode6(label: Label6, _1: Term, _2: Term, _3: Term, _4: Term, _5: Term, _6: Term) extends Node6 with FreeNode with Application diff --git a/src/main/scala/org/kframework/kale/function.scala b/src/main/scala/org/kframework/kale/function.scala index 5520115..7cccd4c 100644 --- a/src/main/scala/org/kframework/kale/function.scala +++ b/src/main/scala/org/kframework/kale/function.scala @@ -1,26 +1,33 @@ package org.kframework.kale -import org.kframework.kale.standard._ +import cats.Monoid +import org.kframework.kale.highcats._ +import org.kframework.kale.standard.AssocWithIdList +import org.roaringbitmap.RoaringBitmap -trait FunctionLabel { +import scala.annotation.switch + +trait FunctionLabel extends NodeLabel with CluelessRoaring { val name: String } trait PureFunctionLabel { self: FunctionLabel => + + override lazy val isPredicate = Some(false) } trait FunctionLabel0 extends Label0 with FunctionLabel { def f(): Option[Term] - override def apply(): Term = f() getOrElse FreeNode0(this) + override def apply(): Term = f() getOrElse SimpleNode0(this) } trait FunctionLabel1 extends Label1 with FunctionLabel { def f(_1: Term): Option[Term] override def apply(_1: Term): Term = env.bottomize(_1) { - f(_1) getOrElse FreeNode1(this, _1) + f(_1) getOrElse SimpleNode1(this, _1) } } @@ -28,7 +35,7 @@ trait FunctionLabel2 extends Label2 with FunctionLabel { def f(_1: Term, _2: Term): Option[Term] override def apply(_1: Term, _2: Term): Term = env.bottomize(_1, _2) { - f(_1, _2) getOrElse FreeNode2(this, _1, _2) + f(_1, _2) getOrElse SimpleNode2(this, _1, _2) } } @@ -36,7 +43,7 @@ trait FunctionLabel3 extends Label3 with FunctionLabel { def f(_1: Term, _2: Term, _3: Term): Option[Term] override def apply(_1: Term, _2: Term, _3: Term): Term = env.bottomize(_1, _2, _3) { - f(_1, _2, _3) getOrElse FreeNode3(this, _1, _2, _3) + f(_1, _2, _3) getOrElse SimpleNode3(this, _1, _2, _3) } } @@ -44,33 +51,122 @@ trait FunctionLabel4 extends Label4 with FunctionLabel { def f(_1: Term, _2: Term, _3: Term, _4: Term): Option[Term] override def apply(_1: Term, _2: Term, _3: Term, _4: Term): Term = env.bottomize(_1, _2, _3, _4) { - f(_1, _2, _3, _4) getOrElse FreeNode4(this, _1, _2, _3, _4) + f(_1, _2, _3, _4) getOrElse SimpleNode4(this, _1, _2, _3, _4) } } -case class PrimitiveFunction1[A, R](name: String, aLabel: LeafLabel[A], rLabel: LeafLabel[R], primitiveF: A => R)(implicit val env: Environment) extends FunctionLabel1 with PureFunctionLabel { +case class PrimitiveFunction1[A, R](name: String, aLabel: UpDown[A], rLabel: Up[R], primitiveF: A => R)(implicit val env: Environment) extends FunctionLabel1 with PureFunctionLabel { def f(_1: Term): Option[Term] = _1 match { - case aLabel(a) => Some(rLabel(primitiveF(a))) + case aLabel.extract(a) => Some(rLabel.up(primitiveF(a))) case _ => None } } object PrimitiveFunction1 { - def apply[A](name: String, aLabel: LeafLabel[A], f: A => A)(implicit env: Environment): PrimitiveFunction1[A, A] = + def apply[A](name: String, aLabel: UpDown[A], f: A => A)(implicit env: Environment): PrimitiveFunction1[A, A] = PrimitiveFunction1(name, aLabel, aLabel, f) } -case class PrimitiveFunction2[A, B, R](name: String, aLabel: LeafLabel[A], bLabel: LeafLabel[B], rLabel: LeafLabel[R], primitiveF: (A, B) => R)(implicit val env: Environment) extends FunctionLabel2 with PureFunctionLabel { +case class PrimitiveFunction2[A, B, R](name: String, aLabel: UpDown[A], bLabel: UpDown[B], rLabel: Up[R], primitiveF: (A, B) => R)(implicit val env: Environment) + extends FunctionLabel2 with PureFunctionLabel { + def f(_1: Term, _2: Term): Option[Term] = (_1, _2) match { - case (aLabel(a), bLabel(b)) => Some(rLabel(primitiveF(a, b))) + case (aLabel.extract(a), bLabel.extract(b)) => Some(rLabel.up(primitiveF(a, b))) case _ => None } } +case class PrimitiveMonoid[O: Monoid : UpDown](name: String)(implicit val env: Environment) + extends FunctionLabel with PureFunctionLabel with MonoidLabel { + + val primitiveMonoid: Monoid[O] = implicitly[Monoid[O]] + val updown: UpDown[O] = implicitly[UpDown[O]] + + private val Self = this + + def combineExtendedWithABitOfSymbolic(a: Term, b: Term): Option[Term] = (a, b) match { + case (`identity`, b) => Some(b) + case (a, `identity`) => Some(a) + case (updown.extract(aPrimitive), updown.extract(bPrimitive)) => Some(updown.up(primitiveMonoid.combine(aPrimitive, bPrimitive))) + case _ => None + } + + /** + * take the last of la and use it to eat away at lb + */ + def processB(el: Term, oldList: Vector[Term]): Vector[Term] = { + combineExtendedWithABitOfSymbolic(el, oldList.head) match { + case Some(newEl) => processB(newEl, oldList.tail) + case None => el +: oldList + } + } + + /** + * now take the first of the newBList and use it to eat away at la + */ + def processA(oldList: Vector[Term], el: Term): Vector[Term] = { + combineExtendedWithABitOfSymbolic(oldList.last, el) match { + case Some(newEl) => processA(oldList.dropRight(1), newEl) + case None => oldList :+ el + } + } + + def apply(a: Term, b: Term) = (a, b) match { + case (AssocWithIdList(Self, la: Vector[Term]), AssocWithIdList(Self, lb: Vector[Term])) => { + val newBList = processB(la.last, lb) + val newAList = processA(la, newBList.head) + // the solution is the concatenation of the two, minding the gap + AssocWithIdList(this, newAList ++ newBList.tail) + } + case (a, AssocWithIdList(Self, lb: Vector[Term])) => { + val newBList = processB(a, lb) + AssocWithIdList(this, newBList) + } + case (AssocWithIdList(Self, la: Vector[Term]), b) => { + val newAList = processA(la, b) + AssocWithIdList(this, newAList) + } + case (a, b) => combineExtendedWithABitOfSymbolic(a, b) getOrElse AssocWithIdList(this, Vector(a, b)) + } + + override val identity = + updown.up(primitiveMonoid.empty) +} + +//case class PrimitiveMonoid[O](label: PrimitiveMonoidLabel[O], list: List[O]) extends Node2 { +// override def _1 = label.updown(list.head) +// +// override def _2 = { +// val tail = list.tail +// if (tail.size == 1) { +// label.updown(tail.head) +// } else { +// assert(tail.size > 1) +// PrimitiveMonoid(label, tail) +// } +// } +//} + + object PrimitiveFunction2 { - def apply[A, R](name: String, aLabel: LeafLabel[A], rLabel: LeafLabel[R], f: (A, A) => R)(implicit env: Environment): PrimitiveFunction2[A, A, R] = + def apply[A, R](name: String, aLabel: UpDown[A], rLabel: Up[R], f: (A, A) => R)(implicit env: Environment): PrimitiveFunction2[A, A, R] = PrimitiveFunction2(name, aLabel, aLabel, rLabel, f) - def apply[A](name: String, aLabel: LeafLabel[A], f: (A, A) => A)(implicit env: Environment): PrimitiveFunction2[A, A, A] = + def apply[A](name: String, aLabel: UpDown[A], f: (A, A) => A)(implicit env: Environment): PrimitiveFunction2[A, A, A] = PrimitiveFunction2(name, aLabel, aLabel, aLabel, f) } + +case class PrimitiveFunction3[A, B, C, R](name: String, aLabel: UpDown[A], bLabel: UpDown[B], cLabel: UpDown[C], rLabel: Up[R], primitiveF: (A, B, C) => R)(implicit val env: Environment) extends FunctionLabel3 with PureFunctionLabel { + def f(_1: Term, _2: Term, _3: Term): Option[Term] = (_1, _2, _3) match { + case (aLabel.extract(a), bLabel.extract(b), cLabel.extract(c)) => Some(rLabel.up(primitiveF(a, b, c))) + case _ => None + } +} + +object PrimitiveFunction3 { + def apply[A, R](name: String, aLabel: UpDown[A], rLabel: UpDown[R], f: (A, A, A) => R)(implicit env: Environment): PrimitiveFunction3[A, A, A, R] = + PrimitiveFunction3(name, aLabel, aLabel, aLabel, rLabel, f) + + def apply[A](name: String, aLabel: UpDown[A], f: (A, A, A) => A)(implicit env: Environment): PrimitiveFunction3[A, A, A, A] = + PrimitiveFunction3(name, aLabel, aLabel, aLabel, aLabel, f) +} diff --git a/src/main/scala/org/kframework/kale/highcats/Free.scala b/src/main/scala/org/kframework/kale/highcats/Free.scala new file mode 100644 index 0000000..9b7fb8c --- /dev/null +++ b/src/main/scala/org/kframework/kale/highcats/Free.scala @@ -0,0 +1,56 @@ +package org.kframework.kale.highcats + +import cats._ +import cats.implicits._ +import cats.{Apply, Eq} +import org.kframework.kale.util.LabelNamed +import org.kframework.kale.{Environment, FreeLabel1, FreeLabel2, FreeLabel3, Term} + +trait Free { + _: Environment => + + abstract class ObjectNamed[R](companionObject: R) extends LabelNamed(companionObject.getClass.getSimpleName.split("\\$").head) { + } + + def free1[A: UpDown, R <: Product](companionObject: A => R) = + new ObjectNamed(companionObject) with FreeLabel1 with UpDown[R] { + private def split(o: R): A = { + o.productIterator.next().asInstanceOf[A] + } + override def down(t: Term): Option[R] = unapply(t) flatMap { + case (a) => a.down[A] map companionObject + } + override def up(o: R): Term = apply(split(o)) + } + + def free2[A: UpDown, B: UpDown, R <: Product](companionObject: (A, B) => R) = + new ObjectNamed(companionObject) with FreeLabel2 with UpDown[R] { + private def split(o: R): (A, B) = { + val x = o.productIterator + (x.next(), x.next()).asInstanceOf[(A, B)] + } + override def down(t: Term) = unapply(t) flatMap { + case (a, b) => Apply[Option].map2(a.down[A], b.down[B])(companionObject) + } + override def up(o: R) = split(o) match { + case (a, b) => apply(a, b) + } + } + + def free3[A: UpDown, B: UpDown, C: UpDown, R <: Product](companionObject: (A, B, C) => R) = + new ObjectNamed(companionObject) with FreeLabel3 with UpDown[R] { + private def split(o: R): (A, B, C) = { + val x = o.productIterator + (x.next(), x.next(), x.next()).asInstanceOf[(A, B, C)] + } + override def down(t: Term) = unapply(t) flatMap { + case (a, b, c) => Apply[Option].map3(a.down[A], b.down[B], c.down[C])(companionObject) + } + override def up(o: R): Term = { + split(o) match { + case (a, b, c) => apply(a, b, c) + } + } + } + +} diff --git a/src/main/scala/org/kframework/kale/highcats/UpDown.scala b/src/main/scala/org/kframework/kale/highcats/UpDown.scala new file mode 100644 index 0000000..dffff21 --- /dev/null +++ b/src/main/scala/org/kframework/kale/highcats/UpDown.scala @@ -0,0 +1,29 @@ +package org.kframework.kale.highcats + +import org.kframework.kale.{LeafLabel, Term} + +trait Up[O] { + def up(o: O): Term +} + +trait Down[O] { + def down(t: Term): Option[O] + + object extract { + def unapply(t: Term): Option[O] = down(t) + } +} + +object UpDown { + final def apply[O](implicit instance: Up[O]): Up[O] = instance + + final def apply[O](f: O => Term): Up[O] = (o: O) => f(o) + + final implicit def updownFromLeafLabel[O](implicit l: LeafLabel[O]): UpDown[O] = new UpDown[O] { + override def down(t: Term) = l.unapply(t) + + override def up(o: O) = l.apply(o) + } +} + +trait UpDown[O] extends Up[O] with Down[O] \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/highcats/liftedCats.scala b/src/main/scala/org/kframework/kale/highcats/liftedCats.scala new file mode 100644 index 0000000..7a2fbdf --- /dev/null +++ b/src/main/scala/org/kframework/kale/highcats/liftedCats.scala @@ -0,0 +1,76 @@ +package org.kframework.kale.highcats + +import cats._ +import cats.implicits._ +import org.kframework.kale.standard.ReferenceLabel +import org.kframework.kale.util.LabelNamed +import org.kframework.kale.{Environment, FunctionLabel, FunctionLabel1, Label1, Label2, Mixin, MonoidLabel, PrimitiveFunction1, PrimitiveFunction2, PrimitiveFunction3, PrimitiveMonoid, Term, highcats} + +trait Convert[A, B] { + def convert(a: A): B +} + +trait MonoidLabeled[O[_]] { + def monoidLabel: MonoidLabel +} + +trait LiftedCatsMixin extends Mixin with highcats.Free { + _: Environment => + + def lift(funcName: String, func: Term => Term)(implicit oenv: Environment): Label1 = + new LabelNamed(funcName) with Label1 with FunctionLabel { + override def apply(_1: Term): Term = func(_1) + + override val isPredicate = Some(false) + } + + def lift(funcName: String, func: (Term, Term) => Term)(implicit oenv: Environment): Label2 = + new LabelNamed(funcName) with Label2 with FunctionLabel { + override def apply(_1: Term, _2: Term): Term = func(_1, _2) + + override lazy val isPredicate = Some(false) + } + + def lift(funcName: String, func: Term => Option[Term], isPred: Option[Boolean])(implicit oenv: Environment): Label1 = + new LabelNamed(funcName) with FunctionLabel1 { + override def f(_1: Term): Option[Term] = func(_1) + + override lazy val isPredicate = isPred + } + + def monoid[O: Monoid : UpDown](name: String) = PrimitiveMonoid[O](name) + + def define[A: UpDown, B: UpDown, R: UpDown](name: String, f: (A, B) => R): PrimitiveFunction2[A, B, R] = + PrimitiveFunction2(name, implicitly[UpDown[A]], implicitly[UpDown[B]], implicitly[Up[R]], f) + + def define[A: UpDown, B: UpDown, C: UpDown, R: UpDown](name: String, f: (A, B, C) => R): PrimitiveFunction3[A, B, C, R] = + PrimitiveFunction3(name, implicitly[UpDown[A]], implicitly[UpDown[B]], implicitly[UpDown[C]], implicitly[Up[R]], f) + + def define[A: UpDown, R: UpDown](name: String, f: A => R): PrimitiveFunction1[A, R] = + PrimitiveFunction1(name, implicitly[UpDown[A]], implicitly[Up[R]], f) + + def define[T](name: String)(implicit ConvertFromString: Convert[String, T]): ReferenceLabel[T] = new ReferenceLabel[T](name) { + override protected[this] def internalInterpret(s: String): T = ConvertFromString.convert(s) + } + + implicit def autoUp[O](o: O)(implicit up: Up[O]): Term = up.up(o) + + implicit def upMonoidLabeled[O[_] : MonoidLabeled : Traverse : Applicative : MonoidK, E: UpDown]: UpDown[O[E]] = new UpDown[O[E]] { + val eUpDown = implicitly[UpDown[E]] + val fTraverse = implicitly[Traverse[O]] + val label = implicitly[MonoidLabeled[O]].monoidLabel + val oMonoid = implicitly[MonoidK[O]].algebra[E] + val oApplicative = implicitly[Applicative[O]] + + override def up(o: O[E]): Term = { + fTraverse.foldMap(o)(eUpDown.up)(label) + } + + override def down(t: Term): Option[O[E]] = t match { + case label.iterable(seq: Iterable[Term]) => + def ff(t: Term) = oApplicative.pure(eUpDown.down(t).get) + + Some(implicitly[Traverse[scala.List]].foldMap(seq.toList)(ff)(oMonoid)) + } + } +} diff --git a/src/main/scala/org/kframework/kale/km/KMEnvironment.scala b/src/main/scala/org/kframework/kale/km/KMEnvironment.scala index 6d9c916..515e2e1 100644 --- a/src/main/scala/org/kframework/kale/km/KMEnvironment.scala +++ b/src/main/scala/org/kframework/kale/km/KMEnvironment.scala @@ -1,31 +1,52 @@ package org.kframework.kale.km import org.kframework.kale -import org.kframework.kale.builtin._ -import org.kframework.kale.standard._ import org.kframework.kale._ +import org.kframework.kale.transformer.Binary import scala.collection._ -trait HasBuiltin - extends HasINT with HasINTbop with HasINTcmp - with HasID - with HasBOOLEAN - with HasSTRING -{ self: Environment => } +trait importBuiltin + extends Environment with builtin.BooleanMixin + with builtin.IntMixin // with HasINTbop with HasINTcmp + with builtin.IdMixin + with builtin.StringMixin { -class KMEnvironment extends DNFEnvironment with HasBuiltin { - private implicit val env = this +} + +trait Z3Mixin extends importBuiltin { + def SMTName(l: Label): String = l match { + case INT.mod => "mod" + case INT.lt => "<" + case INT.gt => ">" + case INT.le => "<=" + case INT.ge => ">=" + } + + def isZ3Builtin(l: Label): Boolean = l match { + case _: Z3Builtin => true + case l => INT.all.contains(l) + } + + implicit class WithSMTname(l: Label) { + def smtName: String = SMTName(l) + } + +} + +trait MultisortedMixin extends Environment with standard.MatchingLogicMixin with standard.FreeMixin with Z3Mixin { private val sorts = mutable.Map[Label, Signature]() case class Signature(args: Seq[kale.Sort], target: kale.Sort) - def sortArgs(l: Label): Seq[kale.Sort] = sorts.get(l).map({ signature => signature.args}).getOrElse({ + override def isSort(sort: Sort, term: Term): Boolean = sort == term.sort + + def sortArgs(l: Label): Seq[kale.Sort] = sorts.get(l).map({ signature => signature.args }).getOrElse({ throw new AssertionError("Could not find Signature for label: " + l) }) - def sortTarget(l: Label): kale.Sort = sorts.get(l).map({ signature => signature.target}).getOrElse({ + def sort(l: Label): kale.Sort = sorts.get(l).map({ signature => signature.target }).getOrElse({ throw new AssertionError("Could not find Signature for label: " + l) }) @@ -41,15 +62,31 @@ class KMEnvironment extends DNFEnvironment with HasBuiltin { } // TODO: move the util functions below somewhere else - def sorted(l: LeafLabel[_], target: kale.Sort): Unit = sorted(l, Signature(Seq(), target)) + def sorted(l: LeafLabel[_], target: kale.Sort): Unit = + sorted(l, Signature(Seq(), target)) + + def sorted(l: Label0, target: kale.Sort): Unit = + sorted(l, Signature(Seq(), target)) + + def sorted(l: Label1, arg1: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1), target)) + + def sorted(l: Label2, arg1: kale.Sort, arg2: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1, arg2), target)) - def sorted(l: Label0, target: kale.Sort): Unit = sorted(l, Signature(Seq(), target)) + def sorted(l: Label3, arg1: kale.Sort, arg2: kale.Sort, arg3: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1, arg2, arg3), target)) - def sorted(l: Label1, arg1: kale.Sort, target: kale.Sort): Unit = sorted(l, Signature(Seq(arg1), target)) + def sorted(l: Label4, arg1: kale.Sort, arg2: kale.Sort, arg3: kale.Sort, arg4: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1, arg2, arg3, arg4), target)) - def sorted(l: Label2, arg1: kale.Sort, arg2: kale.Sort, target: kale.Sort): Unit = sorted(l, Signature(Seq(arg1, arg2), target)) + def sorted(l: Label5, arg1: kale.Sort, arg2: kale.Sort, arg3: kale.Sort, arg4: kale.Sort, arg5: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1, arg2, arg3, arg4, arg5), target)) - def sorted(l: Label3, arg1: kale.Sort, arg2: kale.Sort, arg3: kale.Sort, target: kale.Sort): Unit = sorted(l, Signature(Seq(arg1, arg2, arg3), target)) + def sorted(l: Label6, arg1: kale.Sort, arg2: kale.Sort, arg3: kale.Sort, arg4: kale.Sort, arg5: kale.Sort, arg6: kale.Sort, target: kale.Sort): Unit = + sorted(l, Signature(Seq(arg1, arg2, arg3, arg4, arg5, arg6), target)) - override val substitutionMaker: (Substitution) => SubstitutionApply = new SubstitutionApply(_) + registerMatcher({ + case (l1: FreeLabel, l2: FreeLabel) if l1 != l2 || env.sort(l1) != env.sort(l2) => NoMatch + }, Priority.medium) } diff --git a/src/main/scala/org/kframework/kale/km/MultiSortedUnifier.scala b/src/main/scala/org/kframework/kale/km/MultiSortedUnifier.scala deleted file mode 100644 index 1cd081f..0000000 --- a/src/main/scala/org/kframework/kale/km/MultiSortedUnifier.scala +++ /dev/null @@ -1,44 +0,0 @@ -package org.kframework.kale.km - -import org.kframework.kale -import org.kframework.kale.transformer.Binary.{Apply, ProcessingFunction, TypedWith} -import org.kframework.kale._ - -class MultiSortedUnifier(val env: KMEnvironment) extends kale.MatcherOrUnifier { - - import env._ - - object SortedVarLeft extends ProcessingFunction[Apply] with TypedWith[Variable, Term] { - def f(solver: Apply)(a: Variable, b: Term) = - if (a == b) - Top - else if (a.sort == b.sort) - VarLeft(solver)(a, b) - else - Bottom - } - - object SortedVarRight extends ProcessingFunction[Apply] with TypedWith[Term, Variable] { - def f(solver: Apply)(a: Term, b: Variable) = SortedVarLeft.f(solver)(b, a) - } - - import kale.standard._ - - override def processingFunctions: ProcessingFunctions = definePartialFunction({ - case (Variable, _) => SortedVarLeft - case (_, Variable) => SortedVarRight - case (And, _) => AndTerm _ - case (_, And) => TermAnd _ - case (Or, _) => OrTerm _ - case (_, Or) => TermOr _ - case (l1: FreeLabel, l2: FreeLabel) if l1 != l2 || env.sortTarget(l1) != env.sortTarget(l2) => NoMatch _ - }) - .orElse(freeLabelProcessing) - .orElse(functionDefinedByRewritingProcessing) - .orElse(definePartialFunction({ - case (_: DomainValueLabel[_], _: DomainValueLabel[_]) => Constants _ - // case (_: MapLabel, right) if !right.isInstanceOf[Variable] => MapTerm - // case (_: AssocLabel, right) if !right.isInstanceOf[Variable] => AssocTerm - })) - .orElse(super.processingFunctions) -} diff --git a/src/main/scala/org/kframework/kale/km/term.scala b/src/main/scala/org/kframework/kale/km/term.scala deleted file mode 100644 index 820638c..0000000 --- a/src/main/scala/org/kframework/kale/km/term.scala +++ /dev/null @@ -1,2 +0,0 @@ -package org.kframework.kale.km - diff --git a/src/main/scala/org/kframework/kale/logic.scala b/src/main/scala/org/kframework/kale/logic.scala deleted file mode 100644 index 46967e7..0000000 --- a/src/main/scala/org/kframework/kale/logic.scala +++ /dev/null @@ -1,129 +0,0 @@ -package org.kframework.kale - -import org.kframework.kore.implementation.DefaultBuilders -import org.kframework.{kale, kore} - -import scala.collection.Set - -trait DomainValueLabel[T] extends LeafLabel[T] { - - def apply(v: T): DomainValue[T] -} - -trait DomainValue[T] extends Leaf[T] with kore.DomainValue { - val label: DomainValueLabel[T] - - val isGround = true - - override lazy val isPredicate: Boolean = false - - override def toString: String = data.toString - - override def symbol = label - - override def value = DefaultBuilders.Value(data.toString) -} - -trait Sort extends kore.Sort { - val name: String - - def smtName: String = name - - override def equals(other: Any): Boolean = other match { - case that: Sort => that.name == name - case _ => false - } - - override def hashCode(): Int = name.hashCode - - // FOR KORE - override val str = name -} - -trait VariableLabel extends LeafLabel[(Name, Sort)] { - def apply(v: (Name, Sort)): Variable -} - -trait Name extends kore.Name { - override def toString = str -} - -trait Variable extends Leaf[(Name, Sort)] { - val label: VariableLabel - val name: Name - val sort: Sort - lazy val data = (name, sort) - val isGround = false - override lazy val isPredicate: Boolean = false - - override def toString: String = name.str - - override def canEqual(o: Any): Boolean = o.isInstanceOf[Variable] - - override def equals(o: Any): Boolean = o match { - case v: Variable => v.name == this.name - case _ => false - } -} - -trait TruthLabel extends LeafLabel[Boolean] { - override protected[this] def internalInterpret(s: String): Boolean = s.toBoolean -} - -trait Truth extends Leaf[Boolean] { - val isGround = true - override lazy val isPredicate: Boolean = true -} - -trait Top extends Truth with Substitution with kore.Top - -trait Bottom extends Truth with kore.Bottom - - -trait AndLabel extends AssocCommWithIdLabel with Z3Builtin { - override val identity = env.Top - assert(identity != null) - def asSubstitutionAndTerms(t: Term): (Substitution, Set[Term]) -} - -trait OrLabel extends AssocCommWithIdLabel with Z3Builtin { - override val identity = env.Bottom - assert(identity != null) -} - -trait RewriteLabel extends Label2 - -trait EqualityLabel extends Label2 with Z3Builtin { - def binding(_1: Variable, _2: Term): Binding -} - -trait NotLabel extends Label1 with Z3Builtin - -trait Equals extends kore.Equals with Node2 with BinaryInfix { - override lazy val isPredicate: Boolean = true -} - -trait Binding extends Equals with Substitution - -trait And extends kore.And with AssocComm { - self: And => - val predicates: Term - val nonPredicates: Option[Term] - - override lazy val isPredicate: Boolean = nonPredicates.isEmpty -} - -trait Or extends kore.Or with AssocComm - -trait Rewrite extends kore.Rewrite with Node2 with BinaryInfix { - override lazy val isPredicate: Boolean = ??? -} - -trait Application extends Node with kore.Application { - - override lazy val isPredicate: Boolean = false - // for KORE - override def symbol: kore.Symbol = label - - override def args: Seq[kore.Pattern] = children.toSeq -} diff --git a/src/main/scala/org/kframework/kale/matchingLogic.scala b/src/main/scala/org/kframework/kale/matchingLogic.scala new file mode 100644 index 0000000..007277a --- /dev/null +++ b/src/main/scala/org/kframework/kale/matchingLogic.scala @@ -0,0 +1,191 @@ +package org.kframework.kale + +import org.kframework.kale.standard.MightBeSolved +import org.kframework.kale + +import scala.collection.Seq + +trait MatchingLogicMixin extends Mixin { + env: Environment => + + // Constants + val Bottom: Truth + val Top: Truth with Substitution + + // Labels + val Variable: VariableLabel + val And: AndLabel + val Or: OrLabel + val Rewrite: RewriteLabel + val Equality: EqualityLabel + val Truth: TruthLabel + val Not: NotLabel + val Next: NextLabel + val Exists: ExistsLabel + val ForAll: ForAllLabel + + def sort(l: Label, children: Seq[Term]): Sort + + def sort(l: Label): kale.Sort + + def isSort(sort: Sort, term: Term): Boolean +} + +trait DomainValueLabel[T] extends LeafLabel[T] with ThisRoaring { + + override val isPredicate: Option[Boolean] = Some(false) + + def apply(v: T): DomainValue[T] +} + +trait DomainValue[T] extends Leaf[T] { + val label: DomainValueLabel[T] + + def isGround = true + + override lazy val isPredicate: Boolean = false + + override def toString: String = data.toString +} + +trait Sort { + val name: String + + def smtName: String = name + + override def equals(other: Any): Boolean = other match { + case that: Sort => that.name == name + case _ => false + } + + override def hashCode(): Int = name.hashCode +} + +trait VariableLabel extends LeafLabel[(Name, Sort)] { + def apply(name: String): Variable = apply((Name(name), standard.Sort.K)) + + def apply(name: String, sort: kale.Sort): Variable = apply((Name(name), sort)) + + def apply(v: (Name, Sort)): Variable + + def apply(name: kale.Name): Variable = apply((name, standard.Sort.K)) +} + +case class Name(name: String) { + override def toString = name +} + +trait Variable extends Leaf[(Name, Sort)] { + val label: VariableLabel + val name: Name + val sort: Sort + lazy val data = (name, sort) + val isGround = false + override lazy val isPredicate: Boolean = false + + override def toString: String = name.toString + ( + if (sort.name == "K") + "" + else + ":" + sort.name + ) + + override def canEqual(o: Any): Boolean = o.isInstanceOf[Variable] + + override def equals(o: Any): Boolean = o match { + case v: Variable => v.name == this.name + case _ => false + } + + override val variables: Set[Variable] = Set(this) +} + +trait TruthLabel extends LeafLabel[Boolean] { + override protected[this] def internalInterpret(s: String): Boolean = s.toBoolean +} + +trait Truth extends Leaf[Boolean] { + val isGround = true + override lazy val isPredicate: Boolean = false +} + +trait Top extends Truth with Substitution { + override val boundVariables: Set[Variable] = Set() +} + +trait Bottom extends Truth + + +trait AndLabel extends CommutativeMonoid with Z3Builtin { + + import env._ + + override val identity = Top + assert(identity != null) + + def combine(label: Node)(tasks: MightBeSolved*): Term + + def combine(label: NodeLabel)(tasks: MightBeSolved*): Term + + override val isPredicate: Option[Boolean] = None +} + +trait OrLabel extends CommutativeMonoid with Z3Builtin { + override val identity = env.Bottom + assert(identity != null) + + override val isPredicate: Option[Boolean] = None +} + +trait RewriteLabel extends Label2 { + override val isPredicate: Option[Boolean] = Some(false) +} + +trait EqualityLabel extends Label2 with Z3Builtin with Predicate { + def binding(_1: Variable, _2: Term): Binding +} + +trait NotLabel extends Label1 with Z3Builtin + +trait ExistsLabel extends Label2 { + override val isPredicate: Option[Boolean] = None +} + +trait Exists { + val v: Variable + val p: Term +} + +trait ForAllLabel extends Label2 + +trait ForAll extends Node2 + +trait Equals extends Node2 with BinaryInfix { + override lazy val isPredicate: Boolean = true +} + +trait Binding extends Equals with Substitution with NotRoaringTerm { + override val boundVariables: Set[Variable] = Set(_1.asInstanceOf[Variable]) + + override def filter(f: Variable => Boolean): Substitution = if (f(_1.asInstanceOf[Variable])) this else env.Top +} + +trait And extends AssocComm { + self: And => + val predicate: Term + val nonPredicate: Term + + override lazy val isPredicate: Boolean = nonPredicate == label.env.Top +} + +trait Or extends AssocComm { + val label: OrLabel + + def map(f: Term => Term): Term = label.map(f)(this) +} + +trait Rewrite extends Node2 with BinaryInfix { + override lazy val isPredicate: Boolean = false +} + +trait NextLabel extends Label1 diff --git a/src/main/scala/org/kframework/kale/package.scala b/src/main/scala/org/kframework/kale/package.scala new file mode 100644 index 0000000..404c814 --- /dev/null +++ b/src/main/scala/org/kframework/kale/package.scala @@ -0,0 +1,268 @@ +package org.kframework + +import org.kframework.kale.standard.{SimpleRewrite, StandardEnvironment} +import org.kframework.kale.transformer.GenUnary.Apply +import org.kframework.kale.transformer.Unary.ProcessingFunction +import org.kframework.kale.transformer.{GenUnary, Unary} + +package object kale { + + /** + * For marking traits that are meant to be mixed into an Environment + * By convention, postfix all extending traits with "Mixin" + */ + trait Mixin { + self: Environment => + } + + def definePartialFunction[T, Solver <: Apply[T]](f: GenUnary.ProcessingFunctions[T, Solver]): GenUnary.ProcessingFunctions[T, Solver] = f + + /** + * Annotation for methods that are called very, very many times. + * Do not add expensive operations to them. + * The annotation is not meant for "outer" entities for which performance is important, but their performance + * stems from calling other entities many times. + */ + case class PerformanceCritical() + + /** + * Annotation for pattern constructors that automatically normalize their content. + * E.g., a normalizing And constructor could bring the expression to DNF form + * Unless otherwise specified, we assume constructors are normalizing -- the default is @Normalizing + * We use this annotation just for emphasis. + * When a constructor is not `Normalizing`, use `NonNormalizing` to emphasize that. + * We use usually @NonNormalizing constructors when performance is very important + */ + case class Normalizing() + + /** + * Opposite of @Normalizing + */ + case class NonNormalizing() + + implicit def PFtoTotal(f: PartialFunction[Term, Boolean]): (Term => Boolean) = x => f.lift(x).getOrElse(false) + + class ExplicitOr(private val t: Term) extends AnyVal { + def map(f: Term => Term): Term = (t.label.env.Or map f) (t) + } + + class ExplicitAnd(private val t: Term) extends AnyVal { + def map(f: Term => Term): Term = (t.label.env.And map f) (t) + def filter(f: Term => Boolean): Term = (t.label.env.And filter f) (t) + } + + implicit class RichTerm(private val term: Term) extends AnyVal { + def mapBU(f: Term => Term): Term = kale.mapBU(f)(term) + + def mapTD(f: Term => Term): Term = kale.mapTD(f)(term) + + def contains(subterm: Term): Boolean = kale.contains(subterm)(term) + + def findTD(f: Term => Boolean): Option[Term] = kale.findTD(f)(term) + + def findBU(f: Term => Boolean): Option[Term] = kale.findBU(f)(term) + + def find(f: Term => Boolean): Option[Term] = this.findTD(f) + + def exists(f: Term => Boolean): Boolean = find(f).isDefined + + // if (t == subterm) true else t.children.exists(_.contains(subterm)) + def containsInConstructor(subterm: Term): Boolean = kale.containsInConstructor(term, subterm) + + def rewrite(obj: Term): Term = term.label.env.rewrite(term, obj) + + def unify(obj: Term): Term = term.label.env.unify(term, obj) + + def flattenedChildren: List[Term] = term.label match { + case label: SemigroupLabel => label.asIterable(term).toList + case _ => term.children.toList + } + + def asOr = new ExplicitOr(term) + + def asAnd = new ExplicitAnd(term) + + /** + * Prints out the Scala code that evaluates to this term. + * Assumees the DSLMixin + */ + def toConstructor: String = + term match { + case Node(label: SemigroupLabel, _) => + label.name + "(" + (label.asIterable(term) map (_.toConstructor) mkString ", ") + ")" + case Node(label, children) => + label.name + "(" + (children map (_.toConstructor) mkString ", ") + ")" + case term.label.env.Variable(name) => name._1.toString + case Leaf(label, data) => + label.name + "(" + (data match { + case s: String => "\"\"\"" + s + "\"\"\"" + case _ => data.toString + }) + ")" + } + } + + implicit class StaticRichAssocLabel(label: SemigroupLabel) { + def apply(args: Term*): Term = label.apply(args.toSeq) + } + + object BUMapper { + def apply(processingFunction: Label => ProcessingFunction[BUMapper], env: Environment)(func: PartialFunction[Term, Term]): BUMapper = new BUMapper(func)(env) + + def apply(env: Environment): PartialFunction[Term, Term] => BUMapper = { + + BUMapper(env) + } + } + + class BUMapper(val func: PartialFunction[Term, Term])(implicit env: Environment) extends Unary.Apply() { + val processingFunctions = env.unaryProcessingFunctions + + val liftedF = func.lift + + override def apply(t: Term) = + arr(t.label.id) match { + case f => + val processedT = f(t) + liftedF(processedT).getOrElse(processedT) + } + } + + case class mapBU(f: Term => Term) extends (Term => Term) { + override def apply(t: Term): Term = f(t map0 this) + } + + case class mapTD(f: Term => Term) extends (Term => Term) { + override def apply(t: Term): Term = f(t) map0 this + } + + case class map0(f: Term => Term) extends (Term => Term) { + override def apply(t: Term): Term = t map0 f + } + + case class foldLeft[D](d: D)(f: (D, Term) => D) extends (Term => D) { + override def apply(t: Term): D = { + t.flattenedChildren.foldLeft(d)(f) + } + } + + trait Unapply[A, B] { + def unapply(a: A): Option[B] + } + + implicit class PFwithUnapply[A, B](pf: PartialFunction[A, B]) { + val unapply = new Unapply[A, B] { + def unapply(a: A) = pf.lift(a) + } + } + + /** + * Collects all terms generated by f when it applies, in BU order + * TODO: needs better testing + */ + case class collectBU(f: PartialFunction[Term, Term]) extends (Term => Set[Term]) { + override def apply(t: Term): Set[Term] = { + val resForChildren = t.children.toSet flatMap this + resForChildren ++ f.lift(t) + } + } + + /** + * Collects all terms generated by f when it applies, in TD order + * TODO: needs better testing + */ + case class collectTD(f: PartialFunction[Term, Term]) extends (Term => Set[Term]) { + override def apply(t: Term): Set[Term] = { + val resForChildren = t.children.toSet flatMap this + f.lift(t) ++: resForChildren + } + } + + val collect = collectTD + + case class findBU(f: Term => Boolean) extends (Term => Option[Term]) { + override def apply(t: Term): Option[Term] = { + val resForChildren = t.children.view map this find (_.isDefined) + resForChildren.getOrElse(if (f(t)) Some(t) else None) + } + } + + case class findTD(f: Term => Boolean) extends (Term => Option[Term]) { + override def apply(t: Term): Option[Term] = { + if (f(t)) + Some(t) + else { + t.children.toStream map apply collect { + case Some(c) => c + } headOption + } + } + } + + def findAllTD(f: Term => Boolean): collectTD = collectTD({ + case t if f(t) => t + }) + + def findAllBU(f: Term => Boolean): collectBU = collectBU({ + case t if f(t) => t + }) + + val findAll = findAllTD _ + + case class existsTD(f: Term => Boolean) extends (Term => Boolean) { + override def apply(t: Term): Boolean = f(t) || (t.children.view exists this) + } + + case class existsBU(f: Term => Boolean) extends (Term => Boolean) { + override def apply(t: Term): Boolean = (t.children.view exists this) || f(t) + } + + val exists = existsTD + + def contains(contained: Term) = exists(contained == _) + + val variables = findAll({ case v: Variable => true }) + + def fixpoint[T](f: T => T): (T => T) = { + { t: T => + val after = f(t) + if (after != t) + fixpoint(f)(after) + else + after + } + } + + def toRewriteLHS(t: Term): Term = t match { + case SimpleRewrite(l, _) => l + case n: Node => n.copy(n.children map toRewriteLHS toSeq) + case _ => t + } + + def toRewriteRHS(t: Term): Term = t match { + case SimpleRewrite(_, r) => r + case n: Node => n.copy(n.children map toRewriteRHS toSeq) + case _ => t + } + + def moveRewriteSymbolToTop(t: Term)(implicit env: Environment): SimpleRewrite = env.Rewrite(toRewriteLHS(t), toRewriteRHS((t))).asInstanceOf[SimpleRewrite] + + def containsInConstructor(t: Term, subterm: Term): Boolean = { + if (t == subterm) true + else if (!t.label.isInstanceOf[Constructor]) false + else t.children.exists(containsInConstructor(_, subterm)) + } + + trait BinaryInfix { + self: Node2 => + override def toString: String = _1 + " " + label.name + " " + _2 + } + + trait MemoizedHashCode { + lazy val cachedHashCode = computeHashCode + + override final def hashCode = cachedHashCode + + def computeHashCode: Int + } + +} diff --git a/src/main/scala/org/kframework/kale/pretty/pretty.scala b/src/main/scala/org/kframework/kale/pretty/pretty.scala new file mode 100644 index 0000000..79a5a9b --- /dev/null +++ b/src/main/scala/org/kframework/kale/pretty/pretty.scala @@ -0,0 +1,150 @@ +package org.kframework.kale.pretty + +import org.kframework.kale._ +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply +import org.kframework.kale.util.LabelNamed + +trait PrettyWrapperMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin with standard.FreeMixin with builtin.StringMixin => + + def pretty(t: Term): String = t match { + case PrettyWrapper(p, c, s) => p + pretty(c) + s + case _ => t.toString + } + + val PrettyWrapper: Label3 = new LabelNamed("PrettyWrapper") with Label3 with Constructor { + lazy private val W = this + lazy val I = Infer + + override def apply(_1: Term, _2: Term, _3: Term): Term = bottomize(_2) { + assert(isValidWrapper(_1), "Invalid wrapper left: " + _1) + assert(isValidWrapper(_3), "Invalid: wrapper right" + _3) + + _2 match { + case assoc: Assoc => + val terms = assoc.assocIterable + assoc.label(terms map { + case t if t == terms.head && !t.isPredicate => + t match { + case PrettyWrapper(a, t, b) => + (_1, a) match { + case (I, I) => PrettyWrapper(I, t, b) + case (_, I) => PrettyWrapper(_1, t, b) + case (I, _) => PrettyWrapper(a, t, b) + case (_, _) => PrettyWrapper(STRING.strconcat(_1, a), t, b) + } + case _ => PrettyWrapper(_1, t, I) + } + case t if t == terms.last && !t.isPredicate => + t match { + case PrettyWrapper(a, t, b) => + (b, _3) match { + case (I, I) => PrettyWrapper(a, t, I) + case (_, I) => PrettyWrapper(a, t, b) + case (I, _) => PrettyWrapper(a, t, _3) + case (_, _) => PrettyWrapper(a, t, STRING.strconcat(b, _3)) + } + case _ => PrettyWrapper(I, t, _3) + } + case t => t + }) + case PrettyWrapper(_1inner, _2inner, _3inner) => + val _1res = STRING.strconcat(_1, _1inner) + val _3res = STRING.strconcat(_3inner, _3) + PrettyWrapper(_1res, _2inner, _3res) + case o => + PrettyWrapperHolder(_1, _2, _3) + } + } + + /** + * None means that it depends on its children + */ + override val isPredicate: Option[Boolean] = Some(false) + + override def requiredLabels(children: Iterable[Term]) = children.tail.head.requiredLabels + + override def suppliedLabels(children: Iterable[Term]) = Roaring.suppliedBy(children) + } + + val Infer = FreeLabel0("I")() + + def wrapInInferTD(t: Term): Term = t match { + case PrettyWrapper(p, c, s) => + PrettyWrapper(p, c map0 wrapInInferTD, s) + case o if shouldBePretty(t) => + PrettyWrapper(Infer, o map0 wrapInInferTD, Infer) + case o => + o map0 wrapInInferTD + } + + def unwrapFromPrettyWrapper(t: Term) = t match { + case PrettyWrapper(_, c, _) => c + case _ => t + } + + implicit class PrettyTerm(t: Term) { + def pretty: String = PrettyWrapperMixin.this.pretty(t) + } + + case class PrettyWrapperTerm(solver: Apply) extends Binary.F({ + (a: PrettyWrapperHolder, t: Term) => + if (t.isGround) + Bottom + else { + val And.SPN(s, p, n) = t + val thePredicate = And.SPN(s, p, Top) + if(thePredicate != Top) + And(solver(a, n), thePredicate) + else + Bottom + } + }) + + def isValidWrapper(_1: Term) = { + _1 match { + case STRING.String(s) => s.trim == "" + case o => !o.isGround || o.exists(t => t.label == Rewrite || t == Infer || t.label == Next) + } + } + + case class PrettyWrapperPrettyWrapper(solver: Apply) extends Binary.F({ + (a: PrettyWrapperHolder, b: PrettyWrapperHolder) => FreeNode3FreeNode3(solver)(a, b) + }) + + case class TermPrettyWrapper(solver: Apply) extends Binary.F({ (t: Term, a: PrettyWrapperHolder) => + solver(t, a.content).asOr map { + case And.SPN(s, p, n) => And.SPN(s, p, a.copy(a._1, n, a._3)) + case Bottom => Bottom + } + }) + + registerMatcher({ + case (PrettyWrapper, PrettyWrapper) => + PrettyWrapperPrettyWrapper + case (PrettyWrapper, term) => + PrettyWrapperTerm + case (term, PrettyWrapper) => + TermPrettyWrapper + }, Priority.high + 1) + + case class PrettyWrapperHolder(prefix: Term, content: Term, suffix: Term) extends Node3 { + override def toString = + if (_1.toString.nonEmpty || _3.toString.nonEmpty) + "⦅" + _1.toString + "|" + _2 + "|" + _3 + "⦆" + else + _2.toString + + override def _1: Term = prefix + + override def _2: Term = content + + override def _3: Term = suffix + + override val label: Label3 = PrettyWrapper + } + + def shouldBePretty(term: Term): Boolean + +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/roaring.scala b/src/main/scala/org/kframework/kale/roaring.scala new file mode 100644 index 0000000..ed489b8 --- /dev/null +++ b/src/main/scala/org/kframework/kale/roaring.scala @@ -0,0 +1,122 @@ +package org.kframework.kale + +import org.roaringbitmap.{FastAggregation, RoaringBitmap} + +object Roaring { + + import collection.JavaConverters._ + + @inline def requiredFor(children: Iterable[Term]) = { + RoaringBitmap.or((children map (_.requiredLabels) toIterator).asJava) + } + + @inline def suppliedBy(children: Iterable[Term]) = { + RoaringBitmap.or((children map (_.suppliedLabels) toIterator).asJava) + } +} + +trait RoaringLabel { + self: Label => + + def requiredLabels(children: Iterable[Term]): RoaringBitmap + + def suppliedLabels(children: Iterable[Term]): RoaringBitmap + + @inline protected def addThis(r: RoaringBitmap): RoaringBitmap = { + r.add(this.id) + r + } +} + +trait RoaringTerm { + self: Term => + + lazy val requiredLabels: RoaringBitmap = label.requiredLabels(children) + + lazy val suppliedLabels: RoaringBitmap = label.suppliedLabels(children) +} + +trait NotRoaringTerm { + _: Term with RoaringTerm => + + override lazy val requiredLabels: RoaringBitmap = + throw new AssertionError("Should not look for required labels in predicates") + + override lazy val suppliedLabels: RoaringBitmap = + throw new AssertionError("Should not look for supplied labels in predicates") +} + +trait CluelessRoaringTerm { + _: Term with RoaringTerm => + + override lazy val requiredLabels: RoaringBitmap = RoaringBitmap.bitmapOf() + + override lazy val suppliedLabels: RoaringBitmap = label.env.allLabelIds +} + +trait NotRoaring { + self: Label with RoaringLabel => + + def requiredLabels(children: Iterable[Term]): RoaringBitmap = + throw new AssertionError("Should not look for required labels in predicates") + + def suppliedLabels(children: Iterable[Term]): RoaringBitmap = + throw new AssertionError("Should not look for supplied labels in predicates") +} + +trait CluelessRoaring { + self: Label with RoaringLabel => + + override def requiredLabels(children: Iterable[Term]) = RoaringBitmap.bitmapOf() + + override def suppliedLabels(children: Iterable[Term]) = env.allLabelIds +} + +trait ThisRoaring { + self: Label with RoaringLabel => + + def requiredLabels(children: Iterable[Term]): RoaringBitmap = RoaringBitmap.bitmapOf(this.id) + + def suppliedLabels(children: Iterable[Term]): RoaringBitmap = RoaringBitmap.bitmapOf(this.id) +} + +/** + * Requires and supplies all children + */ +trait ConjunctiveRoaring { + self: Label with RoaringLabel => + + def requiredLabels(children: Iterable[Term]): RoaringBitmap = addThis(Roaring.requiredFor(children)) + + def suppliedLabels(children: Iterable[Term]): RoaringBitmap = addThis(Roaring.suppliedBy(children)) +} + +trait DisjunctiveRoaring { + self: Label with RoaringLabel => + + override def requiredLabels(children: Iterable[Term]) = FastAggregation.and(children map (_.requiredLabels) toSeq: _*) + + override def suppliedLabels(children: Iterable[Term]) = Roaring.suppliedBy(children) +} + +trait Projection1Roaring { + self: Label => + + override def requiredLabels(children: Iterable[Term]) = children.head.requiredLabels + + override def suppliedLabels(children: Iterable[Term]) = children.head.suppliedLabels +} + +trait Projection2Roaring { + self: Label => + + override def requiredLabels(children: Iterable[Term]) = children.tail.head.requiredLabels + + override def suppliedLabels(children: Iterable[Term]) = children.tail.head.suppliedLabels +} + +trait RoaringMixin { + _: Environment => + + lazy val allLabelIds: RoaringBitmap = RoaringBitmap.bitmapOf(uniqueLabels map (_._2.id) toSeq: _*) +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/standard/Bottomize.scala b/src/main/scala/org/kframework/kale/standard/BottomizeMixin.scala similarity index 92% rename from src/main/scala/org/kframework/kale/standard/Bottomize.scala rename to src/main/scala/org/kframework/kale/standard/BottomizeMixin.scala index 0213b3c..202645e 100644 --- a/src/main/scala/org/kframework/kale/standard/Bottomize.scala +++ b/src/main/scala/org/kframework/kale/standard/BottomizeMixin.scala @@ -2,10 +2,10 @@ package org.kframework.kale.standard import org.kframework.kale.{Environment, Term} -trait Bottomize { +trait BottomizeMixin { self: Environment => - var bottomizeIsActive = false + var bottomizeIsActive = true def bottomize(_1: Term)(f: => Term): Term = { if (Bottom == _1 && bottomizeIsActive) diff --git a/src/main/scala/org/kframework/kale/standard/DNFEnvironment.scala b/src/main/scala/org/kframework/kale/standard/DNFEnvironment.scala deleted file mode 100644 index 49140fe..0000000 --- a/src/main/scala/org/kframework/kale/standard/DNFEnvironment.scala +++ /dev/null @@ -1,26 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.kale._ -import org.kframework.kale.util.Util - -trait DNFEnvironment extends Environment { - private implicit val env = this - - override val Truth: TruthLabel = standard.StandardTruthLabel() - - override val Top: Top = standard.TopInstance() - override val Bottom: Bottom = standard.BottomInstance() - - override val And: DNFAndLabel = DNFAndLabel() - override val Or: DNFOrLabel = DNFOrLabel() - override val Not: NotLabel = NotLabel() - override val Variable: StandardVariableLabel = standard.StandardVariableLabel() - override val Equality: EqualityLabel = standard.StandardEqualityLabel() - - override val Rewrite = StandardRewriteLabel() - - def renameVariables[T <: Term](t: T): T = { - val rename = And.substitution((Util.variables(t) map (v => (v, v.label(Name(v.name + "!" + Math.random().toInt), v.sort)))).toMap) - rename(t).asInstanceOf[T] - } -} diff --git a/src/main/scala/org/kframework/kale/standard/KoreBuilders.scala b/src/main/scala/org/kframework/kale/standard/KoreBuilders.scala deleted file mode 100644 index 47d5deb..0000000 --- a/src/main/scala/org/kframework/kale/standard/KoreBuilders.scala +++ /dev/null @@ -1,81 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.kale -import org.kframework.kale._ -import org.kframework.kore -import org.kframework.kore.implementation.DefaultBuilders - -import scala.collection.Seq - -class KoreBackend(d: kore.Definition, mainModule: kore.ModuleName) { - val env = StandardEnvironment -} - -class KoreBuilders(implicit val env: Environment) extends kore.Builders with DefaultOuterBuilders { - - override def Symbol(str: String): kore.Symbol = env.label(str) - - override def SortedVariable(_1: kore.Name, _2: kore.Sort): kore.Variable = StandardVariable(_1.asInstanceOf[Name], _2.asInstanceOf[Sort]) - - override def DomainValue(_1: kore.Symbol, _2: kore.Value): kore.Pattern = { - def instantiate[T]() = _1.asInstanceOf[DomainValueLabel[T]].interpret(_2.str) - - instantiate() - } - - override def Top(): kore.Top = env.Top - - override def Bottom(): kore.Bottom = env.Bottom - - override def Not(_1: kore.Pattern): kore.Pattern = ??? - - override def Next(_1: kore.Pattern): kore.Pattern = ??? - - override def And(_1: kore.Pattern, _2: kore.Pattern): kore.Pattern = env.And(_1.asInstanceOf[Term], _2.asInstanceOf[Term]) - - override def Or(_1: kore.Pattern, _2: kore.Pattern): kore.Pattern = env.Or(_1.asInstanceOf[Term], _2.asInstanceOf[Term]) - - override def Implies(_1: kore.Pattern, _2: kore.Pattern): kore.Pattern = ??? - - override def Equals(_1: kore.Pattern, _2: kore.Pattern): kore.Pattern = env.Equality(_1.asInstanceOf[Term], _2.asInstanceOf[Term]) - - override def Exists(_1: kore.Variable, _2: kore.Pattern): kore.Pattern = ??? - - override def ForAll(_1: kore.Variable, _2: kore.Pattern): kore.Pattern = ??? - - override def Rewrite(_1: kore.Pattern, _2: kore.Pattern): kore.Pattern = env.Rewrite(_1.asInstanceOf[Term], _2.asInstanceOf[Term]) - - override def Application(_1: kore.Symbol, args: Seq[kore.Pattern]): kore.Pattern = _1.asInstanceOf[NodeLabel](args.asInstanceOf[Seq[Term]]) - - def Sort(str: String): kore.Sort = standard.Sort(str) - - def Value(str: String): kore.Value = DefaultBuilders.Value(str) - - def Name(str: String): Name = standard.Name(str) -} - -trait DefaultOuterBuilders { - def Definition(att: kore.Attributes, modules: Seq[kore.Module]): kore.Definition = { - DefaultBuilders.Definition(att, modules) - } - - def Module(name: kore.ModuleName, sentences: Seq[kore.Sentence], att: kore.Attributes): kore.Module = - DefaultBuilders.Module(name, sentences, att) - - def Import(name: kore.ModuleName, att: kore.Attributes): kore.Sentence = - DefaultBuilders.Import(name, att) - - def SortDeclaration(sort: kore.Sort, att: kore.Attributes): kore.Sentence = - DefaultBuilders.SortDeclaration(sort, att) - - def SymbolDeclaration(sort: kore.Sort, symbol: kore.Symbol, args: Seq[kore.Sort], att: kore.Attributes): kore.Sentence = - DefaultBuilders.SymbolDeclaration(sort, symbol, args, att) - - def Rule(p: kore.Pattern, att: kore.Attributes): kore.Sentence = DefaultBuilders.Rule(p, att) - - def Axiom(p: kore.Pattern, att: kore.Attributes): kore.Sentence = DefaultBuilders.Axiom(p, att) - - def Attributes(att: Seq[kore.Pattern]): kore.Attributes = DefaultBuilders.Attributes(att) - - def ModuleName(str: String): kore.ModuleName = DefaultBuilders.ModuleName(str) -} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/standard/MacroMixin.scala b/src/main/scala/org/kframework/kale/standard/MacroMixin.scala new file mode 100644 index 0000000..4821ef5 --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/MacroMixin.scala @@ -0,0 +1,63 @@ +package org.kframework.kale.standard + +import org.kframework.kale._ +import org.kframework.kale.util.LabelNamed + +trait MacroMixin { + _: Environment with MatchingLogicMixin with TuplesMixin with StringMixin => + + private val macros = collection.mutable.Map[String, (Term, Term)]() + + case class MacroException(msg: String) extends Exception(msg) + + val macroDef = new LabelNamed("macro_def") with Label3 with FunctionLabel { + override def apply(name: Term, signature: Term, body: Term): Term = name match { + case STRING.String(name) => + defineMacro(name, signature, body) + Top + } + + override val isPredicate: Option[Boolean] = None + } + + def defineMacro(name: String, signature: Term, body: Term, allowRedeclare: Boolean = false) { + if (!allowRedeclare && macros.contains(name)) { + throw MacroException("Macro " + name + " already defined.") + } + macros.put(name, (signature, body)) + } + + def macroIsDefined(name: String): Boolean = macros.contains(name) + + val macroApply = new LabelNamed("macro_apply") with Label2 with FunctionLabel { + override def apply(name: Term, args: Term): Term = name match { + case STRING.String(key) => + val x = macros.get(key) map { + case (signature, body) => + if (signature.children.size != args.children.size) { + throw MacroException("Expected " + signature.children.size + " arguments for macro " + key + " but found " + args.children.size) + } + if (signature.children.isEmpty) { + body + } else { + val transform = signature.children + .zip(args.children) + .toMap + .withDefault({ + case v: Variable if v.name.toString.startsWith("_") => + Variable.freshVariable() + case t => t + }) + + val res = body.mapBU(transform) + res + } + } + x getOrElse (throw MacroException("Macro " + key + " not found.")) + } + + override val isPredicate: Option[Boolean] = None + } + + +} diff --git a/src/main/scala/org/kframework/kale/standard/Path.scala b/src/main/scala/org/kframework/kale/standard/Path.scala new file mode 100644 index 0000000..d4f1e26 --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/Path.scala @@ -0,0 +1,49 @@ +package org.kframework.kale.standard + +import org.kframework.kale.builtin.IntMixin +import org.kframework.kale.highcats.LiftedCatsMixin +import org.kframework.kale.util.LabelNamed +import org.kframework.kale.{Environment, FreeLabel1, Label, Mixin, SemigroupLabel, Term} + +trait PathMixin extends Mixin { + _: Environment with LiftedCatsMixin with IntMixin with ScalaLibraryMixin => + + + implicit val PathLabel = free1(Path) + + case class map0WithPath(f: (Term, Path) => Term) { + def apply(t: Term, path: Path): Term = t.copy(t.flattenedChildren.zipWithIndex map { + case (t: Term, i: Int) => f(t, Path(path.positions :+ i)) + }) + } + + /** + * works only for non-comm + */ + case class Path(positions: List[Int]) { + /** + * Returns the subterm of t at the current Path position + */ + def apply(t: Term): Term = positions match { + case head :: tail => + val elements = t.flattenedChildren + Path(tail)(elements(positions.head)) + case Nil => t + } + + /** + * Displays the sequence of instructions encountered when traversing term t with this path. + */ + def explicitate(t: Term): Seq[Label] = positions match { + case head :: tail => + val elements = t.label match { + case label: SemigroupLabel => label.asIterable(t).toSeq + case _ => t.children.toSeq + } + t.label +: Path(tail).explicitate(elements(positions.head)) + case Nil => Seq(t.label) + } + } + + +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/standard/ScalaLibraryMixin.scala b/src/main/scala/org/kframework/kale/standard/ScalaLibraryMixin.scala new file mode 100644 index 0000000..de671ca --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/ScalaLibraryMixin.scala @@ -0,0 +1,22 @@ +package org.kframework.kale.standard + +import org.kframework.kale +import org.kframework.kale.highcats.{LiftedCatsMixin, MonoidLabeled, UpDown} +import org.kframework.kale.{Environment, IntMixin, Mixin} + +trait ScalaLibraryMixin extends Mixin { + _: Environment with AssocWithIdListMixin with FreeMixin with LiftedCatsMixin with IntMixin => + + val emptyScalaList = FreeLabel0("emptyScalaList")() + val scalaList = AssocWithIdLabel("scalaList", emptyScalaList) + + implicit val monoidLabeledList: MonoidLabeled[List] = new MonoidLabeled[List] { + override def monoidLabel: kale.NonPrimitiveMonoidLabel = scalaList + } + + import cats.implicits._ + + private implicit val updownInt = INT.Int + + implicit val upDownList = implicitly[UpDown[List[Int]]] +} diff --git a/src/main/scala/org/kframework/kale/standard/SingleSortedMatcher.scala b/src/main/scala/org/kframework/kale/standard/SingleSortedMatcher.scala deleted file mode 100644 index 2db6781..0000000 --- a/src/main/scala/org/kframework/kale/standard/SingleSortedMatcher.scala +++ /dev/null @@ -1,172 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.kale._ -import org.kframework.kale.builtin.MapLabel -import org.kframework.kale.context.anywhere.AnywhereContextMatcher -import org.kframework.kale.context.pattern.{PatternContextApplicationLabel, PatternContextMatcher} -import org.kframework.kale.transformer.Binary - -import scala.collection.{+:, Iterable, Seq} - -case class MatchNotSupporteredError(l: Term, r: Term, message: String = "") extends - AssertionError("Trying to match " + l + " with " + r + " not supported yet. " + message) - -object SingleSortedMatcher { - def apply()(implicit env: StandardEnvironment) = new SingleSortedMatcher() -} - -class SingleSortedMatcher()(implicit val env: StandardEnvironment) extends MatcherOrUnifier { - - import Binary._ - import env._ - import org.kframework.kale.context._ - import org.kframework.kale.util.StaticImplicits._ - - def matchContents(l: AssocLabel, soFar: Term, ksLeft: Iterable[Term], ksRight: Iterable[Term])(implicit solver: Apply): Term = { - val res = (ksLeft.toSeq, ksRight.toSeq) match { - case (Seq(), Seq()) => - soFar - case ((v: Variable) +: tailL, ksR) => - (0 to ksR.size) - .map { - index => (ksR.take(index), ksR.drop(index)) - } - .map { - case (prefix, suffix) => - val bind = And(soFar, Equality(v, l(prefix))) - matchContents(l, bind, tailL, suffix) - } - .fold(Bottom)({ - (a, b) => Or(a, b) - }) - case (left, right) if left.nonEmpty && right.nonEmpty => - val headSolution: Term = solver(And(soFar, left.head), right.head) - matchContents(l, headSolution, left.tail, right.tail) - case other => Bottom - } - res - } - - def AssocTerm(solver: Apply)(a: Assoc, b: Term) = { - val asList = a.label.asIterable _ - val l1 = asList(a) - val l2 = asList(b) - matchContents(a.label, Top, l1, l2)(solver) - } - - def TermAssoc(solver: Apply)(a: Term, b: Assoc) = { - val asList = b.label.asIterable _ - val l1 = asList(a) - val l2 = asList(b) - matchContents(b.label, Top, l1, l2)(solver) - } - - def MapTerm(solver: Apply)(a: Term, b: Term): Term = a.label match { - case mapLabel: MapLabel => - val mapLabel.map(left, leftUnindexed) = a - val mapLabel.map(right, rightUnindexed) = b - - assert(left.size + leftUnindexed.size > 1, "There is some bug in the Piece registration") - - if (rightUnindexed.nonEmpty) { - throw MatchNotSupporteredError(a, b, "Var on the rhs.") - } - else if (left.nonEmpty && right.isEmpty && rightUnindexed.isEmpty) { - Bottom - } - else if (left.nonEmpty && right.nonEmpty && leftUnindexed.size <= 1 && rightUnindexed.isEmpty) { - val leftKeys = left.keys.toSet - val rightKeys = right.keys.toSet - - - if (!rightKeys.forall(_.isGround)) { - throw MatchNotSupporteredError(a, b) - } - - if (!(leftKeys filter (_.isGround) forall rightKeys.contains)) { - Bottom - } - else if (leftKeys.size - (leftKeys & rightKeys).size <= 1) { - - val commonKeys = leftKeys & rightKeys - - val valueMatches = if (commonKeys.nonEmpty) - And(commonKeys map (k => solver(left(k), right(k)))) - else - Top - - val lookupByKeyVariableAndValueMatch = if (leftKeys.size - commonKeys.size == 1) { - val v = (leftKeys -- rightKeys).head - val rightValue = (rightKeys -- leftKeys).head - - And(Equality(v, rightValue), left(v), right(rightValue)) - } else { - Top - } - - val freeLeftVariableEquality = if (leftUnindexed.size == 1) { - Equality(leftUnindexed.head, mapLabel((rightKeys -- leftKeys).map(right))) - } else { - Top - } - - if (lookupByKeyVariableAndValueMatch != Top && freeLeftVariableEquality != Top) { - throw MatchNotSupporteredError(a, b) - } - - And(valueMatches, lookupByKeyVariableAndValueMatch, freeLeftVariableEquality) - } else { - throw MatchNotSupporteredError(a, b, "Only supported matches with at most one differing (i.e., symbolic somehow) key and at most a variable (at the top level) on the rhs.") - } - } - else { - throw MatchNotSupporteredError(a, b, "Not yet implemented. Should eventually default to AC.") - } - } - - // TODO: something is not quite right with FormulaLabel -- make sure it is correct - def OneIsFormula(solver: Apply)(a: Term, b: Term) = And(a, b) - - def IfThenElseTerm(solver: Apply)(a: Node3, b: Term): Term = { - val c = solver(a._1, b) - if (c == Bottom) - a._3 - else - And(c, a._2) - } - - def BindMatchMatcher(solver: Apply)(a: Node2, b: Term): Term = { - val v = a._1.asInstanceOf[Variable] - val p = a._2 - Or(Or.asSet(b) map { bx => - val sol = solver(p, bx) - And(Equality(v, bx), sol) - }) - } - - import standard._ - - override def processingFunctions: ProcessingFunctions = - definePartialFunction({ - case (`BindMatch`, _) => BindMatchMatcher _ - case (`IfThenElse`, _) => IfThenElseTerm _ - case (_, `Not`) => OneIsFormula _ - case (`Not`, _) => OneIsFormula _ - case (`And`, _) => AndTerm _ - case (_, `And`) => TermAnd _ - case (`Or`, _) => OrTerm _ - case (_, `Or`) => TermOr _ - case (`Variable`, _) => VarLeft _ - // case (_, `Variable`) => VarRight - case (`AnywhereContext`, _) => new AnywhereContextMatcher()(env) - case (capp: PatternContextApplicationLabel, _) => new PatternContextMatcher()(env) - }) - .orElse(freeLabelProcessing) - .orElse(functionDefinedByRewritingProcessing) - .orElse(definePartialFunction({ - case (_: DomainValueLabel[_], _: DomainValueLabel[_]) => Constants _ - case (_: MapLabel, right) if !right.isInstanceOf[Variable] => MapTerm _ - case (_: AssocLabel, right) if !right.isInstanceOf[Variable] => AssocTerm _ - })) - .orElse(super.processingFunctions) -} diff --git a/src/main/scala/org/kframework/kale/standard/Sort.scala b/src/main/scala/org/kframework/kale/standard/Sort.scala new file mode 100644 index 0000000..30c3d8d --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/Sort.scala @@ -0,0 +1,13 @@ +package org.kframework.kale.standard + +import org.kframework.kale + +import scala.language.implicitConversions + +case class Sort(name: String) extends kale.Sort + +object Sort { + val K = Sort("K") + val Top = K + val Bottom = Sort("KBottom") +} diff --git a/src/main/scala/org/kframework/kale/standard/StandardEnvironment.scala b/src/main/scala/org/kframework/kale/standard/StandardEnvironment.scala index 148fde4..2bb5445 100644 --- a/src/main/scala/org/kframework/kale/standard/StandardEnvironment.scala +++ b/src/main/scala/org/kframework/kale/standard/StandardEnvironment.scala @@ -1,32 +1,84 @@ package org.kframework.kale.standard import org.kframework.kale -import org.kframework.kale.builtin._ -import org.kframework.kale.context.anywhere.AnywhereContextApplicationLabel -import org.kframework.kale.{standard, _} +import org.kframework.kale._ +import org.kframework.kale.context.BundledContextMixin +import org.kframework.kale.transformer.Binary + +import scala.collection.Seq object StandardEnvironment { - def apply(): StandardEnvironment = new StandardEnvironment {} + def apply(): StandardEnvironment = new StandardEnvironment with NoSortingMixin } -trait StandardEnvironment extends DNFEnvironment with HasBOOLEAN with HasINT with HasINTdiv with HasDOUBLE with HasSTRING with HasID { - private implicit val env = this +trait StandardEnvironment + extends Environment + with MatchingLogicMixin + with HolesMixin + with FreeMixin + with TuplesMixin + with builtin.BooleanMixin + with builtin.IntMixin + with builtin.DoubleMixin + with builtin.StringMixin + with builtin.IdMixin + with ACMixin + with AssocWithIdListMixin + with NonAssocWithIdListMixin + with standard.FunctionByRewritingMixin + with builtin.MapMixin + with BundledContextMixin + with MacroMixin + with strategy.StrategyMixin + with ScalaLibraryMixin + with PathMixin + with MatchingLogicPostfixMixin { - val Hole = Variable("☐", Sort.K) + val Match = new MatchLabel() + + val ApplyRewrite = new GroundApplyRewrite() + + val OneResult = new OneResult() - val IfThenElse = new IfThenElseLabel() - val BindMatch = new BindMatchLabel() + val ApplySimpleRewrite = new Compose2("ApplySimpleRewrite", ApplyRewrite, OneResult) - val AnywhereContext = AnywhereContextApplicationLabel() + override lazy val substitutionMaker: (Substitution) => SubstitutionApply = new SubstitutionWithContext(_) - override def sort(l: Label, children: Seq[Term]): kale.Sort = Sort.K + def unifier = matcher - override def sortTarget(l: Label): kale.Sort = Sort.K + def matcher = { + if (_matcher == null) + throw new AssertionError("Seal environment to have access to the matcher") + _matcher + } - override def sortArgs(l: Label): Seq[kale.Sort] = l match { - case l:LeafLabel[_] => Seq() - case l:NodeLabel => Seq.fill(l.arity)(Sort.K) + override def seal(): Unit = { + super.seal() + _matcher = Binary.Apply(this.makeMatcher) } - override val substitutionMaker: (Substitution) => SubstitutionApply = new SubstitutionWithContext(_) + // HELPERS: + + def rewrite(rule: Term, obj: Term): Term = { + And.anytimeIsNow(And.onlyNonPredicate(unify(rule, obj))) + } } + +trait NoSortingMixin extends Environment { + def sort(l: Label, children: Seq[Term]): kale.Sort = Sort.Top + + def sort(l: Label): Sort = Sort.Top + + override def isSort(left: kale.Sort, term: Term): Boolean = true +} + +trait HolesMixin extends Mixin { + _: Environment => + val Hole = Variable("☐", Sort.K) + val Hole1 = Variable("☐1", Sort.K) + val Hole2 = Variable("☐2", Sort.K) + val Hole3 = Variable("☐3", Sort.K) +} + +case class MatchNotSupporteredError(l: Term, r: Term, message: String = "") extends + AssertionError("Trying to match " + l + " with " + r + " not supported yet. " + message) diff --git a/src/main/scala/org/kframework/kale/standard/SubstitutionWithContext.scala b/src/main/scala/org/kframework/kale/standard/SubstitutionWithContext.scala deleted file mode 100644 index 5c0abcf..0000000 --- a/src/main/scala/org/kframework/kale/standard/SubstitutionWithContext.scala +++ /dev/null @@ -1,14 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.kale._ -import org.kframework.kale.context._ -import org.kframework.kale.context.anywhere.{AnywhereContextApplicationLabel, AnywhereContextProcessingFunction} -import org.kframework.kale.context.pattern.{PatternContextApplicationLabel, PatternContextProcessingFunction} - -case class SubstitutionWithContext(override val substitution: Substitution)(implicit val env: StandardEnvironment) extends SubstitutionApply(substitution)(env) { - - override def processingFunctions: ProcessingFunctions = definePartialFunction({ - case l: AnywhereContextApplicationLabel => new AnywhereContextProcessingFunction()(env) - case l: PatternContextApplicationLabel => new PatternContextProcessingFunction()(env) - }) orElse super.processingFunctions -} diff --git a/src/main/scala/org/kframework/kale/standard/ac.scala b/src/main/scala/org/kframework/kale/standard/ac.scala index 7f7bdda..64fc23a 100644 --- a/src/main/scala/org/kframework/kale/standard/ac.scala +++ b/src/main/scala/org/kframework/kale/standard/ac.scala @@ -1,15 +1,173 @@ package org.kframework.kale.standard +import org.kframework.kale import org.kframework.kale._ -import org.kframework.kale.util.Named +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply +import org.kframework.kale.util.{LabelNamed, timer} +import org.roaringbitmap.RoaringBitmap -import scala.collection.Iterable +import scala.annotation.switch +import scala.collection.{+:, Iterable, Seq} -class AssocWithIdListLabel(val name: String, val identity: Term)(implicit val env: Environment) extends AssocWithIdLabel { - override def construct(l: Iterable[Term]): Term = AssocWithIdList(this, l) +trait NonAssocWithIdListMixin extends Mixin { + _: Environment with FreeMixin => + + case class NonAssocWithIdLabel(override val name: String, identity: Term) extends LabelNamed(name) with Label2 with HasId with Constructor { + val self = this + + override def apply(_1: Term, _2: Term): Term = (_1, _2) match { + case (`identity`, b) => b + case (a, `identity`) => a + case (self(a, b), c) => + SimpleNode2(this, a, SimpleNode2(this, b, c)) + case (a, b) => + SimpleNode2(this, a, b) + } + + override val isPredicate: Option[Boolean] = Some(false) + } + + case class NonAssocWithIdTerm(solver: Apply) extends Binary.F({ (a: Node2, b: Term) => + val label = a.label.asInstanceOf[NonAssocWithIdLabel] + val identity = label.identity + + val res = (a, b) match { + case (label(a1, a2), label(b1, b2)) => + Or(List( + FreeNode2FreeNode2(solver)(a, b) + )) + case (label(a1, a2), _) => + Or(List( + And.combine(label)(Task(a1, b), Task(a2, identity)) + )) + } + res + }) + + //#KSequence(__(_=_;('n, 10), _=_;('sum, 0)), while(_)_(!_(_<=_('n, 0)), {_}(__(_=_;('sum, _+_('sum, 'n)), _=_;('n, _+_('n, -1)))))) + + registerMatcher({ + case (_: NonAssocWithIdLabel, right) if !right.isInstanceOf[Variable] => NonAssocWithIdTerm + }, Priority.medium) } -case class AssocWithIdList(label: AssocWithIdLabel, assocIterable: Iterable[Term]) extends Assoc { +trait AssocWithIdListMixin extends Mixin { + _: Environment with kale.ACMixin with IntMixin with MatchingLogicMixin => + + override def AssocWithIdLabel(name: String, id: Term): NonPrimitiveMonoidLabel = new MonoidListLabel(name, id) + + private def matchContents(l: SemigroupLabel, soFar: Term, ksLeft: List[Term], ksRight: List[Term])(implicit solver: Apply): Term = + strongBottomize(soFar) { + (ksLeft.size: @switch) match { + case 0 => + if (ksRight.isEmpty) + soFar + else + Bottom + + // case 1 => + // val t = ksLeft.head + // And.combine(l)(Solved(soFar), Task(t, l(ksRight))) + + case _ => + // assumes no variables on the RHS + val t = ksLeft.head + if (cannotMatchAssoc(l, t)) { + if (ksRight.isEmpty) { + Bottom + } else { + val newSoFar = And.combine(l)(Solved(soFar), Task(t, ksRight.head)) + matchContents(l, newSoFar, ksLeft.tail, ksRight.tail) + } + } else if (ksRight.nonEmpty && cannotMatchAssoc(l, ksLeft.last)) { + And.combine(l)( + Solved(matchContents(l, soFar, ksLeft.dropRight(1), ksRight.dropRight(1))), + Task(ksLeft.last, ksRight.last)) + } else + Or((0 to ksRight.size) + .map { index: Int => + val prefix = ksRight.take(index) + val suffix = ksRight.drop(index) + val prefixTerm = l(prefix) + val newSoFar = if (t.label == Variable) { + And.combine(l)(Solved(soFar), Solved(And(prefixTerm, Equality(t, prefixTerm)))) + } else { + And.combine(l)(Solved(soFar), Task(t, prefixTerm)) + } + matchContents(l, newSoFar, ksLeft.tail, suffix) + }) + } + } + + + private final def cannotMatchAssoc(l: SemigroupLabel, t: Term) = { + Or.asSet(t).forall({ + case And.SPN(_, _, nonPredicate) => + nonPredicate.label != l && nonPredicate.label.isInstanceOf[Constructor] + }) + } + + def AssocWithIdTerm(solver: Apply) = { + (a: AssocWithIdList, b: Term) => + val asList = a.label.asIterable _ + val l1 = asList(a).asInstanceOf[List[Term]] + val l2 = asList(b).asInstanceOf[List[Term]] + matchContents(a.label, a.label.identity, l1, l2)(solver) + } + + case class TermAssocWithId(solver: Apply) extends Binary.F({ (a: Term, b: AssocWithIdList) => + val asList = b.label.asIterable _ + val l1 = asList(a).asInstanceOf[List[Term]] + val l2 = asList(b).asInstanceOf[List[Term]] + matchContents(b.label, b.label.identity, l1, l2)(solver) + }) + + registerMatcher({ + case (_: MonoidLabel, right) if !right.isInstanceOf[Variable] => AssocWithIdTerm + }, Priority.medium) +} + +case class CollectionSize(collectionLabel: CollectionLabel)(implicit env: Environment with IntMixin) extends LabelNamed(collectionLabel.name + ".size") with FunctionLabel1 { + override def f(_1: Term): Option[Term] = + if (_1.isGround) + Some(env.INT.Int(collectionLabel.asIterable(_1).size)) + else + None + + /** + * None means that it depends on its children + */ + override val isPredicate: Option[Boolean] = Some(false) +} + +private[standard] class MonoidListLabel(val name: String, val identity: Term)(implicit val env: Environment with IntMixin) extends NonPrimitiveMonoidLabel with Constructor { + + val size = CollectionSize(this) + + protected override def construct(l: Iterable[Term]): Term = AssocWithIdList(this, l) + + override def requiredLabels(children: Iterable[Term]): RoaringBitmap = { + val res = Roaring.requiredFor(children) + res.remove(empty.label.id) + res + } + + override def suppliedLabels(children: Iterable[Term]): RoaringBitmap = { + val res = addThis(Roaring.suppliedBy(children)) + res.add(empty.label.id) + res + } + + /** + * None means that it depends on its children + */ + override val isPredicate: Option[Boolean] = Some(false) +} + +case class AssocWithIdList(label: MonoidLabel, assocIterable: Iterable[Term]) extends Assoc { + assert(assocIterable.size > 1) + assert(assocIterable.forall(_ != label.identity)) assert(assocIterable.forall(_.label != label)) diff --git a/src/main/scala/org/kframework/kale/standard/free.scala b/src/main/scala/org/kframework/kale/standard/free.scala new file mode 100644 index 0000000..9931f69 --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/free.scala @@ -0,0 +1,82 @@ +package org.kframework.kale.standard + +import org.kframework.kale +import org.kframework.kale._ +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply +import org.kframework.kale.util.LabelNamed + +import scala.language.implicitConversions + +trait FreeMixin extends kale.FreeMixin { + _: Environment => + override def FreeLabel0(name: String): FreeLabel0 = new LabelNamed(name) with FreeLabel0 + + override def FreeLabel1(name: String): FreeLabel1 = new LabelNamed(name) with FreeLabel1 + + override def FreeLabel2(name: String): FreeLabel2 = new LabelNamed(name) with FreeLabel2 + + override def FreeLabel3(name: String): FreeLabel3 = new LabelNamed(name) with FreeLabel3 + + override def FreeLabel4(name: String): FreeLabel4 = new LabelNamed(name) with FreeLabel4 + + override def FreeLabel5(name: String): FreeLabel5 = new LabelNamed(name) with FreeLabel5 + + override def FreeLabel6(name: String): FreeLabel6 = new LabelNamed(name) with FreeLabel6 + + override def FreeLabelN(name: String, theArity: Int): FreeLabelN = new LabelNamed(name) with FreeLabelN { + override val arity: Int = theArity + } + + case class FreeNode0FreeNode0(solver: Apply) extends Binary.F({ (a: Node0, b: Node0) => b }) + + case class FreeNode1FreeNode1(solver: Apply) extends Binary.F({ (a: Node1, b: Node1) => + And.combine(b)(Task(a._1, b._1)) + }) + + case class FreeNode2FreeNode2(solver: Apply) extends Binary.F({ (a: Node2, b: Node2) => + And.combine(b)(Task(a._1, b._1), Task(a._2, b._2)) + }) + + case class FreeNode3FreeNode3(solver: Apply) extends Binary.F({ (a: Node3, b: Node3) => + And.combine(b)(Task(a._1, b._1), Task(a._2, b._2), Task(a._3, b._3)) + }) + + case class FreeNode4FreeNode4(solver: Apply) extends Binary.F({ (a: Node4, b: Node4) => + And.combine(b)(Task(a._1, b._1), Task(a._2, b._2), Task(a._3, b._3), Task(a._4, b._4)) + }) + + case class FreeNode5FreeNode5(solver: Apply) extends Binary.F({ (a: Node5, b: Node5) => + And.combine(b)(Task(a._1, b._1), Task(a._2, b._2), Task(a._3, b._3), Task(a._4, b._4), Task(a._5, b._5)) + }) + + case class FreeNode6FreeNode6(solver: Apply) extends Binary.F({ (a: Node6, b: Node6) => + And.combine(b)(Task(a._1, b._1), Task(a._2, b._2), Task(a._3, b._3), Task(a._4, b._4), Task(a._5, b._5), Task(a._6, b._6)) + }) + + case class FreeNodeNFreeNodeN(solver: Apply) extends Binary.F({ (a: NodeN, b: NodeN) => + And.combine(b)(a.children.zip(b.children) map { case (ac, bc) => Task(ac, bc) }: _*) + }) + + registerMatcher({ + case (a: FreeLabel0, b: FreeLabel0) if a == b => FreeNode0FreeNode0 + case (a: FreeLabel1, b: FreeLabel1) if a == b => FreeNode1FreeNode1 + case (a: FreeLabel2, b: FreeLabel2) if a == b => FreeNode2FreeNode2 + case (a: FreeLabel3, b: FreeLabel3) if a == b => FreeNode3FreeNode3 + case (a: FreeLabel4, b: FreeLabel4) if a == b => FreeNode4FreeNode4 + case (a: FreeLabel5, b: FreeLabel5) if a == b => FreeNode5FreeNode5 + case (a: FreeLabel6, b: FreeLabel6) if a == b => FreeNode6FreeNode6 + case (a: FreeLabelN, b: FreeLabelN) if a == b => FreeNodeNFreeNodeN + }, Priority.low) +} + +trait TuplesMixin extends Mixin { + _: Environment with FreeMixin => + val Tuple0 = FreeLabel0("Tuple0") + val Tuple1 = FreeLabel1("Tuple1") + val Tuple2 = FreeLabel2("Tuple2") + val Tuple3 = FreeLabel3("Tuple3") + val Tuple4 = FreeLabel4("Tuple4") + val Tuple5 = FreeLabel5("Tuple5") + val Tuple6 = FreeLabel6("Tuple6") +} diff --git a/src/main/scala/org/kframework/kale/standard/function.scala b/src/main/scala/org/kframework/kale/standard/function.scala index 0fef582..89d2c87 100644 --- a/src/main/scala/org/kframework/kale/standard/function.scala +++ b/src/main/scala/org/kframework/kale/standard/function.scala @@ -2,83 +2,103 @@ package org.kframework.kale.standard import org.kframework.kale import org.kframework.kale._ -import org.kframework.kale.util.{NameFromObject, Named} - -import scala.collection.Set - - -class InvokeLabel(implicit val env: Environment) extends NameFromObject with Label1 { - // the rewriter is initialized after the creation of the label to break the cycle when creating the rewriter for applying functions - var rewriter: Rewriter = _ - - override def apply(obj: Term): Term = env.bottomize(obj) { - Invoke(this, obj) +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply +import org.kframework.kale.util.{NameFromObject, LabelNamed} + +trait FunctionByRewritingMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin with HasMatcher => + + case class FunctionDefinedByRewritingMatcher(solver: Apply) extends Binary.F({ (a: Term, b: Term) => { + val l = a.label.asInstanceOf[FunctionDefinedByRewriting] + And(b, And(a.children.zip(b.children).map({ + case (ca, cb) => solver(ca, cb) match { + case And.SPN(s, p, _) => And(s, p, Top) + case Bottom => Bottom + } + }))) } + }) + + registerMatcher({ + case (_: FunctionDefinedByRewritingLabel0, _: FunctionDefinedByRewritingLabel0) => FunctionDefinedByRewritingMatcher + case (_: FunctionDefinedByRewritingLabel1, _: FunctionDefinedByRewritingLabel1) => FunctionDefinedByRewritingMatcher + case (_: FunctionDefinedByRewritingLabel2, _: FunctionDefinedByRewritingLabel2) => FunctionDefinedByRewritingMatcher + case (_: FunctionDefinedByRewritingLabel3, _: FunctionDefinedByRewritingLabel3) => FunctionDefinedByRewritingMatcher + case (_: FunctionDefinedByRewritingLabel4, _: FunctionDefinedByRewritingLabel4) => FunctionDefinedByRewritingMatcher + }, Priority.low) } -case class Invoke(label: InvokeLabel, _1: Term) extends Node1 { - override lazy val isPredicate: Boolean = ??? -} - -case class NotLabel(implicit override val env: Environment) extends Named("¬") with kale.NotLabel with FunctionLabel { +case class NotLabel()(implicit override val env: Environment) extends LabelNamed("¬") with kale.NotLabel with FunctionLabel { import env._ - override def apply(_1: Term): Term = env.bottomize(_1) { - f(_1) getOrElse SimpleNot(_1) - } + override def apply(_1: Term): Term = f(_1) getOrElse SimpleNot(_1) def f(_1: Term): Option[Term] = _1 match { - case `Top` => Some(Bottom) - case `Bottom` => Some(Top) + case `Top` => + Some(Bottom) + case `Bottom` => + Some(Top) + case Or.set(terms) if terms.size > 1 => + Some(And(terms map (Not(_)))) + case And.set(terms) if terms.size > 1 => + Some(Or(terms map (Not(_)))) case _ => None } + + override val isPredicate: Option[Boolean] = Some(false) } case class SimpleNot(_1: Term)(implicit val env: Environment) extends Node1 { override val label: kale.NotLabel = env.Not - override val isPredicate: Boolean = _1.isPredicate + override lazy val isPredicate: Boolean = _1.isPredicate } -trait FunctionDefinedByRewriting extends FunctionLabel with PureFunctionLabel { - implicit val env: Environment - private var p_rewriter: Option[Rewriter] = None +trait FunctionDefinedByRewriting extends FunctionLabel with PureFunctionLabel with NodeLabel { + + implicit val env: StandardEnvironment + private var p_rewriter: Option[Term] = None - def rewriter: Rewriter = p_rewriter.get + def rewriter: Term = p_rewriter.get //throw new AssertionError("Set rules before sealing the environment. Or at least before trying to create new terms in the sealed environment.") - def setRules(rules: Set[Rewrite])(implicit rewriterBuilder: (Set[_ <: kale.Rewrite]) => Rewriter): Unit = { - p_rewriter = Some(rewriterBuilder(rules)) + def setRules(rules: Term): Unit = { + p_rewriter = Some(rules) } def tryToApply(res: Term): Option[Term] = - if (env.isSealed && rewriter.rules.nonEmpty) { + if (env.isSealed && p_rewriter.isDefined) { + import env._ // do not try to execute the function before the env is sealed as it would trigger the lazy initialization fo the Rewriter, // and a Rewriter can only be built once the Environment is sealed - val Bottom = rewriter.env.Bottom - rewriter.step(res).find(t => t.label != env.And && t.label != env.Or) + unify(rewriter, res) match { + case Bottom => None + case r => + Some(And.anytimeIsNow(OneResult(And.nextOnly(And.onlyNonPredicate(r))))) + } } else { None } } case class FunctionDefinedByRewritingLabel0(name: String)(implicit val env: StandardEnvironment) extends FunctionDefinedByRewriting with FunctionLabel0 { - def f(): Option[Term] = tryToApply(FreeNode0(this)) + def f(): Option[Term] = tryToApply(SimpleNode0(this)) } case class FunctionDefinedByRewritingLabel1(name: String)(implicit val env: StandardEnvironment) extends FunctionDefinedByRewriting with FunctionLabel1 { - def f(_1: Term): Option[Term] = tryToApply(FreeNode1(this, _1)) + def f(_1: Term): Option[Term] = tryToApply(SimpleNode1(this, _1)) } case class FunctionDefinedByRewritingLabel2(name: String)(implicit val env: StandardEnvironment) extends FunctionDefinedByRewriting with FunctionLabel2 { - def f(_1: Term, _2: Term): Option[Term] = tryToApply(FreeNode2(this, _1, _2)) + def f(_1: Term, _2: Term): Option[Term] = tryToApply(SimpleNode2(this, _1, _2)) } case class FunctionDefinedByRewritingLabel3(name: String)(implicit val env: StandardEnvironment) extends FunctionDefinedByRewriting with FunctionLabel3 { - def f(_1: Term, _2: Term, _3: Term): Option[Term] = tryToApply(FreeNode3(this, _1, _2, _3)) + def f(_1: Term, _2: Term, _3: Term): Option[Term] = tryToApply(SimpleNode3(this, _1, _2, _3)) } case class FunctionDefinedByRewritingLabel4(name: String)(implicit val env: StandardEnvironment) extends FunctionDefinedByRewriting with FunctionLabel4 { - def f(_1: Term, _2: Term, _3: Term, _4: Term): Option[Term] = tryToApply(FreeNode4(this, _1, _2, _3, _4)) + def f(_1: Term, _2: Term, _3: Term, _4: Term): Option[Term] = tryToApply(SimpleNode4(this, _1, _2, _3, _4)) } diff --git a/src/main/scala/org/kframework/kale/standard/kale.scala b/src/main/scala/org/kframework/kale/standard/kale.scala deleted file mode 100644 index ad7cfb7..0000000 --- a/src/main/scala/org/kframework/kale/standard/kale.scala +++ /dev/null @@ -1,22 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.{kale, kore} -import org.kframework.kale._ -import org.kframework.kore.Pattern - -import scala.language.implicitConversions - -case class Sort(name: String) extends kale.Sort - -object Sort { - object K extends Sort("K") -} -case class SimpleFreeLabel0 private(name: String)(implicit val env: Environment) extends FreeLabel0 - -case class SimpleFreeLabel1 private(name: String)(implicit val env: Environment) extends FreeLabel1 - -case class SimpleFreeLabel2 private(name: String)(implicit val env: Environment) extends FreeLabel2 - -case class SimpleFreeLabel3 private(name: String)(implicit val env: Environment) extends FreeLabel3 - -case class SimpleFreeLabel4 private(name: String)(implicit val env: Environment) extends FreeLabel4 diff --git a/src/main/scala/org/kframework/kale/standard/logic.scala b/src/main/scala/org/kframework/kale/standard/logic.scala deleted file mode 100644 index 5319907..0000000 --- a/src/main/scala/org/kframework/kale/standard/logic.scala +++ /dev/null @@ -1,440 +0,0 @@ -package org.kframework.kale.standard - -import org.kframework.kale -import org.kframework.kale._ -import org.kframework.kale.context.Context1ApplicationLabel -import org.kframework.kale.util.{NameFromObject, Named, unreachable} -import org.kframework.kore.implementation.DefaultBuilders -import org.kframework.kore - -import scala.collection.{Iterable, Map, Seq, Set} - -abstract class ReferenceLabel[T](val name: String)(implicit val env: Environment) extends PrimordialDomainValueLabel[T] - -trait PrimordialDomainValueLabel[T] extends DomainValueLabel[T] { - def apply(v: T): DomainValue[T] = StandardDomainValue(this, v) -} - -private[standard] case class StandardDomainValue[T](label: DomainValueLabel[T], data: T) extends DomainValue[T] - -private[standard] case class StandardVariableLabel(implicit override val env: Environment) extends Named("#Variable") with VariableLabel { - def apply(name: String): Variable = apply((Name(name), Sort.K)) - - def apply(name: String, sort: kale.Sort): Variable = apply((Name(name), sort)) - - def apply(name: kale.Name): Variable = apply((name, Sort.K)) - - def apply(nameAndSort: (kale.Name, kale.Sort)): Variable = StandardVariable(nameAndSort._1, nameAndSort._2) - - override protected[this] def internalInterpret(s: String): (kale.Name, kale.Sort) = s.split(":") match { - case Array(name, sort) => (Name(name), Sort(sort)) - } - - var counter = 0 - - def __ = { - counter += 1 - this ((Name("_" + counter), Sort("K"))) - } -} - -private[standard] case class StandardVariable(name: kale.Name, givenSort: kale.Sort)(implicit env: Environment) extends Variable with kore.Variable { - override lazy val sort = givenSort - - val label = env.Variable -} - -private[standard] case class StandardTruthLabel(implicit val env: Environment) extends NameFromObject with TruthLabel { - def apply(v: Boolean) = if (v) env.Top else env.Bottom -} - -private[standard] abstract class Truth(val data: Boolean)(implicit val env: Environment) extends kale.Truth { - val label = env.Truth -} - -private[standard] case class TopInstance(implicit eenv: Environment) extends Truth(true) with kale.Top { - override def get(v: Variable): Option[Term] = None - - def asMap = Map() - - override def toString: String = "⊤" - - override def apply(t: Term): Term = t -} - -private[standard] case class BottomInstance(implicit eenv: Environment) extends Truth(false) with kale.Bottom { - override def toString: String = "⊥" -} - - -private[standard] case class StandardEqualityLabel(implicit override val env: DNFEnvironment) extends Named("=") with EqualityLabel { - override def apply(_1: Term, _2: Term): Term = { - if (_1 == _2) - env.Top - else if (_1.isGround && _2.isGround) { - env.Bottom - } else { - import org.kframework.kale.util.StaticImplicits._ - val Variable = env.Variable - _1.label match { - case `Variable` if !_2.contains(_1) => binding(_1.asInstanceOf[Variable], _2) - case `Variable` if _2.containsInConstructor(_1) => env.Bottom - case _ => new Equals(_1, _2) - } - } - } - - override def binding(_1: Variable, _2: Term): Binding = { - import org.kframework.kale.util.StaticImplicits._ - assert(!_2.contains(_1)) - new Binding(_1.asInstanceOf[Variable], _2) - } -} - -private[kale] class Equals(val _1: Term, val _2: Term)(implicit env: Environment) extends kale.Equals { - val label = env.Equality - - override def equals(other: Any): Boolean = other match { - case that: Equals => this._1 == that._1 && this._2 == that._2 - case _ => false - } -} - - -class Binding(val variable: Variable, val term: Term)(implicit val env: DNFEnvironment) extends Equals(variable, term) with kale.Binding { - // TODO(Daejun): Cosmin: occur check failed due to the context variables - // assert(!util.Util.contains(term, variable)) - assert(_1.isInstanceOf[Variable]) - - def get(v: Variable): Option[Term] = if (_1 == v) Some(_2) else None - - def asMap = Map(variable -> term) - - override def toString: String = super[Equals].toString -} - -private[standard] case class StandardRewriteLabel(implicit val env: Environment) extends { - val name = "=>" -} with RewriteLabel { - def apply(_1: Term, _2: Term) = Rewrite(_1, _2) -} - -case class Rewrite(_1: Term, _2: Term)(implicit env: Environment) extends kale.Rewrite { - override val label = env.Rewrite -} - -private[standard] case class DNFAndLabel(implicit val env: DNFEnvironment) extends { - val name = "∧" -} with AssocWithIdLabel with AndLabel { - - import env._ - - /** - * normalizing - */ - override def apply(_1: Term, _2: Term): Term = { - if (_1 == Bottom || _2 == Bottom) - Bottom - else { - apply(Set(_1, _2)) - } - /* - val substitutionAndTerms(sub1, terms1) = _1 - val substitutionAndTerms(sub2, terms2) = _2 - val allElements: Set[Term] = terms1.toSet ++ terms2 + sub1 + sub2 - Or(allElements map Or.asSet reduce cartezianProduct) - */ - } - - /** - * normalizing - */ - override def apply(terms: Iterable[Term]): Term = { - if (terms.isEmpty) Top - else { - val disjunction = terms map Or.asSet reduce cartezianProduct - Or(disjunction) - } - - // val bindings: Map[Variable, Term] = terms.collect({ case Equality(v: Variable, t) => v -> t }).toMap - // val pureSubstitution = Substitution(bindings) - // val others: Iterable[Term] = terms.filter({ case Equality(v: Variable, t) => false; case _ => true }) - // apply(pureSubstitution, others) - } - - /** - * normalizing - */ - private def applyOnNonOrs(_1: Term, _2: Term): Term = { - if (_1 == Bottom || _2 == Bottom) - Bottom - else { - val substitutionAndTerms(sub1, terms1) = _1 - val substitutionAndTerms(sub2, terms2) = _2 - apply(sub1, sub2) match { - case `Bottom` => Bottom - case substitutionAndTerms(sub, terms) => - apply(sub, (terms1 ++ terms2 map sub) ++ terms) - case _ => unreachable() - } - } - } - - /** - * not-normalizing - */ - def apply(m: Map[Variable, Term]): Substitution = substitution(m) - - /** - * normalizing - */ - def apply(_1: Substitution, _2: Substitution): Term = substitution(_1, _2) - - /** - * not-normalizing - */ - def apply(pureSubstitution: Substitution, others: Iterable[Term]): Term = substitutionAndTerms(pureSubstitution, others) - - def asMap(t: Substitution): Map[Variable, Term] = t match { - case `Top` => Map[Variable, Term]() - case b: Binding => Map(b.variable -> b.term) - case s: MultipleBindings => s.m - } - - object formulasAndNonFormula { - def unapply(t: Term): Some[(Term, Option[Term])] = t match { - case tt: And => Some(tt.predicates, tt.nonPredicates) - case tt if tt.isPredicate => Some(tt, None) - case tt if !tt.isPredicate => Some(Top, Some(tt)) - } - } - - object substitution { - - /** - * normalizing - */ - def apply(_1: Substitution, _2: Substitution): Term = { - // TODO(Daejun): exhaustively apply to get a fixpoint, but be careful to guarantee termination - // TODO: optimize to use the larger substitution as the first one - val substitutionAndTerms(newSubs2, termsOutOfSubs2: Iterable[Term]) = _1(_2) - - val applyingTheSubsOutOf2To1 = newSubs2(_1).asInstanceOf[Substitution] - - val m1 = asMap(applyingTheSubsOutOf2To1) - val m2 = asMap(newSubs2) - - val newSub: Substitution = substitution(m1 ++ m2) - - DNFAndLabel.this.apply(newSub, termsOutOfSubs2) - } - - /** - * not-normalizing - */ - def apply(m: Map[Variable, Term]): Substitution = m.size match { - case 0 => Top - case 1 => new Binding(m.head._1, m.head._2) - case _ => new MultipleBindings(m) - } - - def unapply(t: Term): Option[Map[Variable, Term]] = t match { - case t: Substitution => Some(asMap(t)) - case _ => None - } - } - - def asSubstitutionAndTerms(t: Term): (Substitution, Set[Term]) = t match { - case s: Substitution => (s, Set.empty) - case and: AndOfSubstitutionAndTerms => (and.s, And.asSet(and.terms)) - case and: AndOfTerms => (Top, and.terms) - case o => (Top, Set(o)) - } - - /** - * Unwraps into a substitution and non-substitution terms - */ - object substitutionAndTerms { - /** - * not normalizing - */ - def apply(pureSubstitution: Substitution, otherTerms: Iterable[Term]): Term = { - val others = otherTerms filterNot (_ == env.Top) - - assert(others forall { t => t == pureSubstitution(t) }) - - if (others.isEmpty) { - pureSubstitution - } else if (pureSubstitution == Top && others.size == 1) { - others.head - } else { - strongBottomize(others.toSeq: _*) { - val terms = if (others.size > 1) new AndOfTerms(others.toSet) else others.head - if (pureSubstitution == Top) { - terms - } else { - new AndOfSubstitutionAndTerms(pureSubstitution, terms) - } - } - } - } - - def unapply(t: Term): Option[(Substitution, Iterable[Term])] = Some(asSubstitutionAndTerms(t)) - } - - private def cartezianProduct(t1: Iterable[Term], t2: Iterable[Term]): Seq[Term] = { - for (e1 <- t1.toSeq; e2 <- t2.toSeq) yield { - applyOnNonOrs(e1, e2) - } - } - - override def construct(l: Iterable[Term]): Term = ??? -} - -private[standard] final class AndOfTerms(val terms: Set[Term])(implicit val env: Environment) extends And with Assoc { - - import env._ - - lazy val predicates: Term = And(terms filter (_.isPredicate)) - - lazy val nonPredicates: Option[Term] = { - val nonFormulas = terms filter (!_.isPredicate) - if (nonFormulas.size > 1) { - throw new NotImplementedError("only handle at most one term for now") - } - nonFormulas.headOption - } - - assert(terms.size > 1, terms.toString()) - assert(!terms.contains(Bottom)) - assert(!terms.contains(Top)) - - override val label = And - override val assocIterable: Iterable[Term] = terms - - override def _1: Term = terms.head - - override def _2: Term = if (terms.size == 2) terms.tail.head else new AndOfTerms(terms.tail) - - override def equals(other: Any): Boolean = other match { - case that: AndOfTerms => this.terms == that.terms - case _ => false - } - - override def asSet: Set[Term] = terms -} - -private[kale] final class AndOfSubstitutionAndTerms(val s: Substitution, val terms: Term)(implicit env: Environment) extends And with Assoc { - - import env._ - - assert(terms != Bottom) - - val label = And - - lazy val predicates: Term = terms match { - case a: AndOfTerms => And(s, a.predicates) - case t if t.isPredicate => And(s, t) - case _ => s - } - - lazy val nonPredicates: Option[Term] = terms match { - case a: AndOfTerms => a.nonPredicates - case t if !t.isPredicate => Some(t) - case _ => None - } - - lazy val _1: Term = s - lazy val _2: Term = terms - override lazy val assocIterable: Iterable[Term] = And.asIterable(s) ++ And.asIterable(terms) - - override def equals(other: Any): Boolean = other match { - case that: AndOfSubstitutionAndTerms => this.s == that.s && this.terms == that.terms - case _ => false - } - - override def asSet: Set[Term] = And.asSet(terms) | And.asSet(s) -} - -private[standard] final class MultipleBindings(val m: Map[Variable, Term])(implicit val env: DNFEnvironment) extends And with Substitution with BinaryInfix { - assert(m.size >= 2) - - import env._ - - val label = And - lazy val _1 = Equality(m.head._1, m.head._2) - lazy val _2: Substitution = And.substitution(m.tail) - - override def equals(other: Any): Boolean = other match { - case that: MultipleBindings => m == that.m - case _ => false - } - - override val hashCode: Int = label.hashCode - - def get(v: Variable): Option[Term] = m.get(v) - - override def asMap: Map[Variable, Term] = m - - override val assocIterable: Iterable[Term] = And.asIterable(this) - - override def toString: String = super[BinaryInfix].toString - - override val predicates: Term = this - override val nonPredicates: Option[Term] = None - - override def asSet: Set[Term] = m.map({ case (k, v) => Equality.binding(k, v) }).toSet -} - -private[standard] case class DNFOrLabel(implicit override val env: Environment) extends Named("∨") with OrLabel { - - import env._ - - def apply(_1: Term, _2: Term): Term = - asSet(_1) | asSet(_2) match { - case s if s.isEmpty => Bottom - case s if s.size == 1 => s.head - case s => new OrWithAtLeastTwoElements(s) - } - - override def apply(l: Iterable[Term]): Term = l.foldLeft(Bottom: Term)(apply) -} - -private[this] class OrWithAtLeastTwoElements(val terms: Set[Term])(implicit env: Environment) extends Or { - assert(terms.size > 1) - - import env._ - - val label = Or - - lazy val _1: Term = terms.head - lazy val _2 = Or(terms.tail.toSeq) - override val assocIterable: Iterable[Term] = terms - - override lazy val isPredicate: Boolean = terms.forall(_.isPredicate) - - override def equals(other: Any): Boolean = other match { - case that: OrWithAtLeastTwoElements => this.terms == that.terms - case _ => false - } - - override def asSet: Set[Term] = terms -} - -// implements: X and (M = (c = X) and (M = Bot implies t) and (not(m = Bot) implies e) -private[standard] class IfThenElseLabel(implicit override val env: Environment) extends Named("if_then_else") with Label3 { - def apply(c: Term, t: Term, e: Term) = { - if (c == env.Top) - t - else if (c == env.Bottom) - e - else - FreeNode3(this, c, t, e) - } -} - -case class Name(str: String) extends kale.Name - -private[standard] class BindMatchLabel(implicit override val env: Environment) extends Named("BindMatch") with Label2 { - def apply(v: Term, p: Term) = FreeNode2(this, v.asInstanceOf[Variable], p) -} diff --git a/src/main/scala/org/kframework/kale/standard/matchingLogic.scala b/src/main/scala/org/kframework/kale/standard/matchingLogic.scala new file mode 100644 index 0000000..7b5424a --- /dev/null +++ b/src/main/scala/org/kframework/kale/standard/matchingLogic.scala @@ -0,0 +1,1038 @@ +package org.kframework.kale.standard + +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.Apply +import org.kframework.kale.util.{NameFromObject, LabelNamed, unreachable} +import org.kframework.kale.{Environment, Substitution, _} +import org.kframework.kale +import org.roaringbitmap.{FastAggregation, RoaringBitmap} + +import scala.annotation.switch + +trait MatchingLogicMixin extends Mixin { + _: Environment => + + override val Truth: TruthLabel = standard.StandardTruthLabel() + + override val Top: Top = standard.TopInstance() + override val Bottom: Bottom = standard.BottomInstance() + + override val And: DNFAndLabel = DNFAndLabel() + override val Or: DNFOrLabel = DNFOrLabel() + override val Not: NotLabel = NotLabel() + override val Variable: StandardVariableLabel = standard.StandardVariableLabel() + override val Equality: EqualityLabel = standard.StandardEqualityLabel() + + override val Exists: ExistsLabel = standard.SimpleExistsLabel() + + override val ForAll: ForAllLabel = standard.SimpleForAllLabel() + val ForAllAcrossVars: Label1 = + lift("ForAllAcrossVars", t => t.variables.foldLeft(t)((x, v) => ForAll(v, x))) + + override val Next: NextLabel = standard.SimpleNextLabel() + + override val Rewrite = StandardRewriteLabel() + + // TODO: non-ML + val BindMatch = new BindMatchLabel() + + def renameVariables[T <: Term](t: T): T = { + val rename = And.substitution((t.variables map (v => (v, v.label(v.name + "!" + Math.random().toInt, v.sort)))).toMap) + rename(t).asInstanceOf[T] + } + + def SortedVarLeft(solver: Apply)(a: Variable, b: Term): Term = + if (isSort(a.sort, b)) + And(Equality(a.asInstanceOf[Variable], b), b) + else + Bottom + + case class SortedVarRight(solver: Apply) extends Binary.F({ (a: Term, b: Variable) => SortedVarLeft(solver)(b, a) }) + + case class AndTerm(solver: Apply) extends Binary.F({ (a: And, b: Term) => + if (a.nonPredicate == a) { + val aNext = And.nextIsNow(a) + val aNow = And.nowOnly(a) + val solutionNow = solver(aNow, b) + val solutionNext = solver(Next(aNext), b) + And(solutionNow, solutionNext, a.predicate) + } else { + val solution = solver(a.nonPredicate, b) + And(solution, a.predicate) + } + }) + + case class TermAnd(solver: Apply) extends Binary.F({ (a: Term, b: And) => + if (b.nonPredicate == b) { + val bNext = And.nextIsNow(b) + val bNow = And.nowOnly(b) + val solutionNow = solver(a, bNow) + val solutionNext = solver(a, Next(bNext)) + And(solutionNow, solutionNext, b.predicate) + } else { + val solution = solver(a, b.nonPredicate) + And(solution, b.predicate) + } + }) + + // TODO: something is not quite right with FormulaLabel -- make sure it is correct + case class OneIsFormula(solver: Apply) extends Binary.F({ (a: Term, b: Term) => And(a, b) }) + + case class OrTerm(solver: Apply) extends Binary.F({ (a: Or, b: Term) => a map (solver(_, b)) }) + + case class TermOr(solver: Apply) extends Binary.F({ (a: Term, b: Or) => b map (solver(a, _)) }) + + case class Constants(solver: Apply) extends Binary.F({ (a: DomainValue[_], b: DomainValue[_]) => And(Truth(a.data == b.data), b) }) + + case class BindMatchMatcher(solver: Apply) extends Binary.F({ (a: Node2, b: Term) => + val v = a._1.asInstanceOf[Variable] + val p = a._2 + b.asOr map { bx => + val sol = solver(p, bx) + sol.asOr map { + case And.SPN(s, p, n) => And.SPN(And.substitution(s.asMap + (v -> n)), p, n) + } + } + } + ) + + case class QuantifierTerm(solver: Apply) extends Binary.F({ (a: Node2, b: Term) => + val res = solver(a._2, b) + res.asOr map { + And.removeVariable(a._1.asInstanceOf[Variable], _) + } + }) + + def NextTerm(solver: Apply) = { (a: SimpleNext, b: Term) => + And(a, b) + } + + def TermNext(solver: Apply) = { (a: Term, b: SimpleNext) => + And(a, b) + } + + + def NextNext(solver: Apply) = { (a: SimpleNext, b: SimpleNext) => + Next(solver(a._1, b._1)) + } + + registerMatcher({ + case (_, `Not`) => OneIsFormula + case (`Not`, _) => OneIsFormula + case (`And`, _) => AndTerm + case (_, `And`) => TermAnd + case (`Or`, _) => OrTerm + case (_, `Or`) => TermOr + case (`ForAll`, _) => QuantifierTerm + case (`Exists`, _) => QuantifierTerm + case (`Variable`, _) => SortedVarLeft + case (`BindMatch`, _) => BindMatchMatcher + case (`Equality`, `Equality`) => LeaveAlone + case (`Next`, `Next`) => NextNext + case (`Next`, _) => NextTerm + case (_, `Next`) => TermNext + }, Priority.high) + + registerMatcher({ + case (a: DomainValueLabel[_], b: DomainValueLabel[_]) if a == b => Constants + }, Priority.low) +} + +trait MatchingLogicPostfixMixin extends Mixin { + _: Environment with MatchingLogicMixin with HasMatcher => + + case class LeftRewriteMatcher(solver: Binary.Apply) extends Binary.F({ (a: SimpleRewrite, b: Term) => + val m = solver(a._1, b) + m.asOr map { + case And.SPN(subs, predicates, _) => + val s = substitutionMaker(subs) + And.SPN(subs, predicates, Next(s(a._2))) + } + }) + + case class RightRewriteMatcher(solver: Binary.Apply) extends Binary.F({ (a: Term, b: SimpleRewrite) => + val m = solver(a, b._1) + m.asOr map { + case And.SPN(subs, predicates, _) => + val s = substitutionMaker(subs) + And.SPN(subs, predicates, Next(s(b._2))) + } + }) + + case class TruthMatcher(solver: Binary.Apply) extends Binary.F[Term, Term]({ + case (Bottom, _) => Bottom + case (_, Bottom) => Bottom + case (Top, Top) => Top + case (Top, t) => t + case (t, Top) => t + case _ => throw new AssertionError("Use only the env.Top and env.Bottom Truth objects.") + }) + + registerMatcher({ + case (`Rewrite`, _) => LeftRewriteMatcher + }, Priority.high) + + registerMatcher({ + case (Truth, _) => TruthMatcher + case (_, Truth) => TruthMatcher + case (_, `Rewrite`) => RightRewriteMatcher + }, Priority.ultimate) +} + + +abstract class ReferenceLabel[T](val name: String)(implicit val env: Environment) extends PrimordialDomainValueLabel[T] + +trait PrimordialDomainValueLabel[T] extends DomainValueLabel[T] { + def apply(v: T): DomainValue[T] = StandardDomainValue(this, v) +} + +private[standard] case class StandardDomainValue[T](label: DomainValueLabel[T], data: T) extends DomainValue[T] + +private[standard] case class StandardVariableLabel()(implicit override val env: Environment) + extends LabelNamed("#Variable") with VariableLabel with CluelessRoaring { + def apply(nameAndSort: (kale.Name, kale.Sort)): Variable = StandardVariable(nameAndSort._1, nameAndSort._2) + + override protected[this] def internalInterpret(s: String): (kale.Name, kale.Sort) = s.split(":") match { + case Array(name) => (Name(name), Sort("K")) + case Array(name, sort) => (Name(name), Sort(sort)) + } + + var counter = 0 + + def freshVariable() = { + counter += 1 + this ((Name("_" + counter), Sort("K"))) + } + + override val isPredicate: Option[Boolean] = Some(false) +} + +private[standard] case class StandardVariable(name: kale.Name, givenSort: kale.Sort)(implicit env: Environment) extends Variable { + override lazy val sort = givenSort + + val label = env.Variable +} + +private[standard] case class StandardTruthLabel()(implicit val env: Environment) extends NameFromObject with TruthLabel with RoaringLabelsFromTerm { + def apply(v: Boolean) = if (v) env.Top else env.Bottom + + override val isPredicate: Option[Boolean] = Some(true) +} + +trait RoaringLabelsFromTerm { + self: Label => + + override def requiredLabels(children: Iterable[Term]) = + throw new AssertionError("Should not get here. Implemented by the term.") + + override def suppliedLabels(children: Iterable[Term]) = + throw new AssertionError("Should not get here. Implemented by the term.") +} + +private[standard] abstract class Truth(val data: Boolean)(implicit val env: Environment) extends kale.Truth { + val label = env.Truth +} + +private[standard] case class TopInstance()(implicit eenv: Environment) extends Truth(true) with kale.Top with CluelessRoaringTerm { + override def get(v: Variable): Option[Term] = None + + def asMap = Map() + + override def toString: String = "⊤" + + override def apply(t: Term): Term = t + + override def filter(f: Variable => Boolean): Substitution = this +} + +private[standard] case class BottomInstance()(implicit eenv: Environment) extends Truth(false) with kale.Bottom { + override def toString: String = "⊥" + + override lazy val requiredLabels: RoaringBitmap = label.env.allLabelIds + + override lazy val suppliedLabels: RoaringBitmap = RoaringBitmap.bitmapOf() +} + +private[standard] case class SimpleNextLabel()(implicit override val env: Environment) extends LabelNamed("=>_") with NextLabel with Projection1Roaring { + def apply(t: Term) = t match { + case env.Top => env.Top + case _ => SimpleNext(t) + } + + override val isPredicate: Option[Boolean] = None +} + +private[standard] case class SimpleNext(_1: Term)(implicit env: Environment) extends Node1 { + override val label = env.Next + override lazy val isPredicate: Boolean = _1.isPredicate +} + +private[standard] case class MatchLabel()(implicit override val env: StandardEnvironment) extends LabelNamed(":=") with EqualityLabel { + + import env._ + + override def apply(_1: Term, _2: Term): Term = { + if (env.isSealed) { + Equality(_1, _2) match { + case Equality(a, b) => + val unified = And.onlyPredicate(And.env.unify(a, b)) + unified match { + case Equality(a, b) => new Matches(a, b) + case _ => unified + } + case Top => Top + case Bottom => Bottom + } + } else { + new Matches(_1, _2) + } + } + + override def binding(_1: Variable, _2: Term): kale.Binding = Equality.binding(_1, _2) +} + +private[kale] class Matches(val _1: Term, val _2: Term)(implicit env: StandardEnvironment) extends kale.Equals { + val label = env.Match +} + +private[standard] case class StandardEqualityLabel()(implicit override val env: Environment with MatchingLogicMixin) extends LabelNamed("=") with EqualityLabel { + override def apply(_1: Term, _2: Term): Term = { + val lhsOrElements = env.Or.asSet(_1) + val rhsOrElements = env.Or.asSet(_2) + + env.Or(for ( + e1 <- lhsOrElements; + e2 <- rhsOrElements) yield { + val lhsAndElements = env.And.asSet(e1) + val rhsAndElements = env.And.asSet(e2) + env.And(for ( + ee1 <- lhsAndElements; + ee2 <- rhsAndElements) yield { + inner(ee1, ee2) + }) + }) + } + + private def inner(_1: Term, _2: Term) = { + if (_1 == _2) + env.Top + else if (_1.isGround && _2.isGround) { + if (env.isSealed) { + env.And.onlyPredicate(env.unify(_1, _2)) + } else + new Equals(_1, _2) + } else { + val Variable = env.Variable + _1.label match { + case `Variable` => + if (_2.containsInConstructor(_1)) + env.Bottom + else + binding(_1.asInstanceOf[Variable], _2) + case _ => new Equals(_1, _2) + } + } + } + + override def binding(_1: Variable, _2: Term): Binding = { + // TODO: fails when there is a harmless existential binder inside. + // reactivate when we deal with binders better + // assert(!_2.contains(_1)) + new Binding(_1.asInstanceOf[Variable], _2) + } +} + +private[kale] class Equals(val _1: Term, val _2: Term)(implicit env: Environment) extends kale.Equals { + assert(_1.label != env.And && _2.label != env.And) + val label = env.Equality + assert(_1.label != label && _2.label != label) + + override def equals(other: Any): Boolean = other match { + case that: Equals => this._1 == that._1 && this._2 == that._2 + case _ => false + } +} + + +class Binding(val variable: Variable, val term: Term)(implicit val env: Environment with MatchingLogicMixin) extends Equals(variable, term) with kale.Binding { + // TODO(Daejun): Cosmin: occur check failed due to the context variables + // assert(!util.Util.contains(term, variable)) + assert(_1.isInstanceOf[Variable]) + + def get(v: Variable): Option[Term] = if (_1 == v) Some(_2) else None + + def asMap = Map(variable -> term) + + override def toString: String = super[Equals].toString +} + +private[standard] case class StandardRewriteLabel()(implicit val env: Environment) extends { + val name = "=>" +} with RewriteLabel { + def apply(_1: Term, _2: Term) = SimpleRewrite(_1, _2) + + override def requiredLabels(children: Iterable[Term]) = children.head.requiredLabels + + override def suppliedLabels(children: Iterable[Term]) = Roaring.suppliedBy(children) +} + +case class SimpleRewrite(_1: Term, _2: Term)(implicit env: Environment) extends kale.Rewrite { + override val label = env.Rewrite +} + +private[standard] class GroundApplyRewrite(implicit env: Environment) extends LabelNamed("ApplyRewrite") with FunctionLabel2 { + override def f(_1: Term, _2: Term): Option[Term] = + if (_2.isGround) { + Some(env.rewrite(_1, _2)) + } else { + None + } + + override val isPredicate: Option[Boolean] = Some(false) +} + +private[standard] class OneResult(implicit penv: StandardEnvironment) extends LabelNamed("OneResult") with FunctionLabel1 { + + import env._ + + override def f(_1: Term): Option[Term] = + if (_1 == Bottom) { + Some(Bottom) + } else { + Or.asSet(_1).headOption + } + + override val isPredicate: Option[Boolean] = Some(false) +} + +class Compose2(val name: String, functionLabel2: Label2, functionLabel1: FunctionLabel1)(implicit val env: StandardEnvironment) extends FunctionLabel2 { + override def f(_1: Term, _2: Term): Option[Term] = { + Some(functionLabel1(functionLabel2(_1, _2))) + } + + override val isPredicate: Option[Boolean] = None +} + +private[standard] case class DNFAndLabel()(implicit val env: Environment with MatchingLogicMixin) extends { + val name = "∧" +} with AndLabel with RoaringLabelsFromTerm { + + import env._ + + var apply2hits = 0L + var applyOnNonOrHits = 0L + var innerApplyHits = 0L + + @Normalizing + override def apply(_1: Term, _2: Term): Term = { + apply2hits += 1 + innerApply(_1, _2) + } + + private def innerApply(_1: Term, _2: Term) = { + innerApplyHits += 1 + + if (_1 == Bottom || _2 == Bottom) { + Bottom + } else if (_1 == Top) { + _2 + } else if (_2 == Top) { + _1 + } else if (_1.label != Or && _2.label != Or) { + applyOnNonOrs(_1, _2) + } else { + val disjunction = cartezianProduct(Or.asSet(_1), Or.asSet(_2)) + Or(disjunction) + } + + } + + @Normalizing + def applyOnNonOrs(_1: Term, _2: Term): Term = { + applyOnNonOrHits += 1 + if (_1 == Bottom || _2 == Bottom) + Bottom + else { + val And.SPN(sub1, pred1, And.nowAndNext(now1, next1)) = _1 + val And.SPN(sub2, pred2, And.nowAndNext(now2, next2)) = _2 + + assertAtMostOneNonPred(now1, now2) + assertAtMostOneNonPred(next1, next2) + + apply(sub1, sub2) match { + case `Bottom` => Bottom + case And.SPN(sub, pred, Top) => + val updatedPred = sub(Predicates(And.asSet(pred1) | And.asSet(pred2))) + + strongBottomize(updatedPred) { + val And.SPN(newSub, And.set(other), Top) = updatedPred + + val finalSub = substitution(sub.asMap ++ newSub.asMap) + + And.SPN( + finalSub, + Predicates(other | And.asSet(finalSub(pred))), + nonPredicates(Set(now1, now2, Next(next1), Next(next2)).map(finalSub))) + } + } + } + } + + private def assertAtMostOneNonPred(nonPred1: Term, nonPred2: Term) = { + if (nonPred1 != Top && nonPred2 != Top && nonPred1 != nonPred2) { + throw new AssertionError("Conjuncting non-predicate terms is not allowed. The terms are: \n" + nonPred1 + "\nand \n" + nonPred2) + } + } + + @NonNormalizing + def apply(m: Map[Variable, Term]): Substitution = substitution(m) + + @Normalizing + def apply(_1: Substitution, _2: Substitution): Term = substitution(_1, _2) + + + def asMap(t: Substitution): Map[Variable, Term] = t match { + case `Top` => Map[Variable, Term]() + case b: Binding => Map(b.variable -> b.term) + case s: MultipleBindings => s.m + } + + object substitution { + + /** + * normalizing + */ + def apply(_1: Substitution, _2: Substitution): Term = { + + val merged = _1(_2) + + if (merged == Bottom) + Bottom + else { + // TODO(Daejun): exhaustively apply to get a fixpoint, but be careful to guarantee termination + // TODO: optimize to use the larger substitution as the first one + val And.SPN(newSubs2, pred2: Term, nonPred2) = _1(_2) + + val And.SPN(applyingTheSubsOutOf2To1, pred3, Top) = newSubs2(_1) + + val m1 = asMap(applyingTheSubsOutOf2To1) + val m2 = asMap(newSubs2) + + val newSub: Substitution = substitution(m1 ++ m2) + + And.SPN(newSub, And(pred2, pred3), nonPred2) + } + } + + /** + * not-normalizing + */ + def apply(m: Map[Variable, Term]): Substitution = m.size match { + case 0 => Top + case 1 => new Binding(m.head._1, m.head._2) + case _ => new MultipleBindings(m) + } + + def unapply(t: Term): Option[Map[Variable, Term]] = t match { + case t: Substitution => Some(asMap(t)) + case _ => None + } + } + + /** + * SON is a an acronym for substitution, other predicates, non-predicates + * It splits the And into a substitution, non-substitution like predicates, + * and other, a non-predicate (usually the Next from a rewrite) + */ + @PerformanceCritical + object SPN { + @PerformanceCritical + def from(t: Term): (Substitution, Term, Term) = t match { + case Bottom => throw new AssertionError("Should not try to split Bottom") + case s: Substitution => (s, Top, Top) + case and: AndOfSubstitutionAndPredicates => (and.s, and.preds, Top) + case and: Predicates => (Top, and, Top) + case and: PredicatesAndNonPredicates => + val SPN(sub, pred, Top) = and.predicate + (sub, pred, and.nonPredicate) + case np: NonPredicates => (Top, Top, np) + case o if o.isPredicate => (Top, o, Top) + case o => (Top, Top, o) + } + + @PerformanceCritical + def unapply(t: Term): Option[(Substitution, Term, Term)] = t match { + case Bottom => None + case _ => Some(from(t)) + } + + @NonNormalizing + @PerformanceCritical + def apply(substitution: Substitution, predicates: Term, nonPredicates: Term): Term = { + + + val substitutionAndPredicates = if (substitution == Top) { + predicates + } else if (predicates == Top) { + substitution + } else { + new AndOfSubstitutionAndPredicates(substitution, predicates) + } + + if (nonPredicates == Top) { + substitutionAndPredicates + } else if (substitutionAndPredicates == Top) { + nonPredicates + } else { + PredicatesAndNonPredicates(substitutionAndPredicates, nonPredicates) + } + } + } + + + /** + * Unwraps into a substitution and non-substitution terms + */ + // object substitutionAndTerms { + // @NonNormalizing + // def apply(pureSubstitution: Substitution, otherTerms: Iterable[Term]): Term = { + // val others = otherTerms filterNot (_ == env.Top) + // + // assert(others forall { t => t == pureSubstitution(t) }) + // + // if (others.isEmpty) { + // pureSubstitution + // } else if (pureSubstitution == Top && others.size == 1) { + // others.head + // } else { + // strongBottomize(others.toSeq: _*) { + // val terms = if (others.size > 1) new Predicates(others.toSet) else others.head + // if (pureSubstitution == Top) { + // terms + // } else { + // new AndOfSubstitutionAndPredicates(pureSubstitution, terms) + // } + // } + // } + // } + // + // def unapply(t: Term): Option[(Substitution, Iterable[Term])] = Some(asSubstitutionAndTerms(t)) + // } + + var cartezianProductHits = 0L + + private def cartezianProduct(t1: Iterable[Term], t2: Iterable[Term]): Seq[Term] = { + cartezianProductHits += 1 + + for (e1 <- t1.toSeq; + e2 <- t2.toSeq) yield { + applyOnNonOrs(e1, e2) + } + } + + @NonNormalizing + object nonPredicates { + def apply(s: Set[Term]): Term = { + val set = s - Top + assert(set.forall(!_.isPredicate)) + set.size match { + case 0 => Top + case 1 => set.head + case _ => NonPredicates(set) + } + } + } + + + object predicatesAndNonPredicate { + def unapply(t: Term): Some[(Term, Term)] = t match { + case tt: And => Some(tt.predicate, tt.nonPredicate) + case tt if tt.isPredicate => Some(tt, Top) + case tt if !tt.isPredicate => Some(Top, tt) + } + } + + /** + * @param v the variable to remove + * @param and the and + */ + @PerformanceCritical + def removeVariable(v: Variable, and: Term): Term = and match { + case s: Substitution => s.remove(v) + case And.SPN(s, terms, next) => And.SPN(s.remove(v), terms, next) + } + + def onlyPredicate(t: Term): Term = { + t.asOr map { + case And.SPN(s, p, _) => And.SPN(s, p, Top) + } + } + + // TODO: generalize to traversal? + def nextIsNow(t: Term): Term = { + t.asOr map { + case And.SPN(s, p, n) => + And.SPN(s, p, innerNextIsNow(n)) + } + } + + private def innerNextIsNow(n: Term) = { + n.asAnd + .filter(_.label == Next).asAnd + .map { + case Next(x) => x + } + } + + // TODO: generalize to traversal? + def nowOnly(t: Term): Term = { + t.asOr map { + case And.SPN(s, p, n) => + And.SPN(s, p, innerNowOnly(n)) + } + } + + private def innerNowOnly(n: Term) = { + n.asAnd.filter(_.label != Next) + } + + // TODO: generalize to traversal? + def nextOnly(t: Term): Term = { + t.asOr map { + case And.SPN(s, p, n) => + And.SPN(s, p, innerNextOnly(n)) + } + } + + private def innerNextOnly(n: Term) = { + n.asAnd.filter(_.label == Next) + } + + // TODO: generalize to traversal? + object nowAndNext { + def unapply(t: Term): Option[(Term, Term)] = t match { + case And.SPN(s, p, n) => + Some((And.SPN(s, p, innerNowOnly(n)), And.SPN(s, p, innerNextIsNow(n)))) + } + } + + def onlyNonPredicate(t: Term): Term = { + t.asOr map { + case And.SPN(_, _, n) => n + } + } + + def anytimeIsNow(t: Term): Term = t.label match { + case Next => t.asInstanceOf[Node1]._1 + case _ => t map0 anytimeIsNow + } + + private type TheFold = Set[(Term, List[Term])] + + var cartezianProductWithNextHits = 0L + + private def cartezianProductWithNext(soFar: TheFold, task: MightBeSolved): TheFold = { + cartezianProductWithNextHits += 1 + if (soFar.isEmpty) { + soFar + } else { + soFar flatMap { + case (solutionSoFar, nexts) => + val solvedTask = task match { + case Solved(term) => term + case Task(a, b) => + val sub = solutionSoFar match { + case And.SPN(s, _, _) => s + } + env.unify(sub(a), sub(b)) + } + Or.asSet(solvedTask) map { + case And.SPN(s, p, n) => + (applyOnNonOrs(solutionSoFar, And.SPN(s, p, Top)), nexts :+ n) + } + } + } + } + + override def combine(originalTerm: Node)(solutions: MightBeSolved*): Term = { + val res = solutions.foldLeft(Set((Top: Term, List[Term]())))(cartezianProductWithNext) + Or(res map { + case (And.SPN(s, other, _), l) => And.SPN(s, other, originalTerm.copy(l map s)) + }) + } + + override def combine(label: NodeLabel)(solutions: MightBeSolved*): Term = { + val res = solutions.foldLeft(Set((Top: Term, List[Term]())))(cartezianProductWithNext) + Or(res map { + case (And.SPN(s, other, _), l) => And.SPN(s, other, label(l map s)) + }) + } +} + +trait MightBeSolved + +case class Task(a: Term, b: Term) extends MightBeSolved + +case class Solved(t: Term) extends MightBeSolved + +object Predicates { + def apply(terms: Set[Term])(implicit env: Environment with MatchingLogicMixin): Term = { + val s = terms - env.Top + assert(s.forall(_.isPredicate)) + assert(s.forall(!_.isInstanceOf[Substitution])) + s.size match { + case 0 => env.Top + case 1 => s.head + case _ => new Predicates(s) + } + } +} + +private[standard] final case class Predicates(terms: Set[Term])(implicit val env: Environment with MatchingLogicMixin) extends And with Assoc { + + import env._ + + assert(terms.forall(_.isPredicate)) + assert(terms.forall(!_.isInstanceOf[Substitution])) + assert(terms.size > 1, terms.toString()) + assert(!terms.contains(Bottom)) + assert(!terms.contains(Top)) + assert(terms.forall(_.label != Next)) + + override val label = And + + override def _1: Term = terms.head + + override def _2: Term = if (terms.size == 2) terms.tail.head else new Predicates(terms.tail) + + override def equals(other: Any): Boolean = other match { + case that: Predicates => this.terms == that.terms + case _ => false + } + + override def asSet: Set[Term] = terms + + override val predicate: Term = this + override val nonPredicate: Term = Top +} + +final case class NonPredicates(terms: Set[Term])(implicit env: MatchingLogicMixin) extends And { + + assert(terms.forall(!_.isPredicate)) + + override lazy val requiredLabels: RoaringBitmap = Roaring.requiredFor(terms) + + override lazy val suppliedLabels: RoaringBitmap = Roaring.suppliedBy(terms) + + override val predicate: Term = env.Top + override val nonPredicate = this + override val label = env.And + + override def asSet: Set[Term] = terms + + override def _1: Term = terms.head + + override def _2: Term = if (terms.size == 2) terms.tail.head else NonPredicates(terms.tail) +} + +final case class PredicatesAndNonPredicates(predicate: Term, nonPredicate: Term)(implicit env: MatchingLogicMixin) extends And { + + override lazy val requiredLabels: RoaringBitmap = nonPredicate.requiredLabels + + override lazy val suppliedLabels: RoaringBitmap = nonPredicate.suppliedLabels + + import env._ + + override val label = And + + override def asSet: Set[Term] = And.asSet(predicate) | And.asSet(nonPredicate) + + override def _1: Term = predicate + + override def _2: Term = nonPredicate + + override def equals(obj: Any): Boolean = obj match { + case that: PredicatesAndNonPredicates => that.predicate == this.predicate && that.nonPredicate == this.nonPredicate + case _ => false + } +} + + +private[kale] final class AndOfSubstitutionAndPredicates(val s: Substitution, val preds: Term)(implicit env: Environment) extends And with Assoc { + + import env._ + + assert(And.asSet(preds).forall(_.isPredicate)) + assert(And.asSet(preds).forall(!_.isInstanceOf[Substitution])) + assert(preds != Bottom) + assert(And.asSet(preds).forall(_.label != Next)) + + val label = And + + lazy val predicate: Term = preds match { + case a: Predicates => And(s, a.predicate) + case t if t.isPredicate => And(s, t) + case _ => s + } + + lazy val nonPredicate = Top + + lazy val _1: Term = s + lazy val _2: Term = preds + + override def equals(other: Any): Boolean = other match { + case that: AndOfSubstitutionAndPredicates => this.s == that.s && this.preds == that.preds + case _ => false + } + + override def asSet: Set[Term] = And.asSet(preds) | And.asSet(s) +} + +private[standard] final class MultipleBindings(val m: Map[Variable, Term])(implicit val env: Environment with MatchingLogicMixin) extends And with Substitution with BinaryInfix with NotRoaringTerm { + assert(m.size >= 2) + assert(m.forall({ case (a, b) => a != b })) + + import env._ + + val label = And + lazy val _1 = Equality(m.head._1, m.head._2) + lazy val _2: Substitution = And.substitution(m.tail) + + override def equals(other: Any): Boolean = other match { + case that: MultipleBindings => m == that.m + case _ => false + } + + def get(v: Variable): Option[Term] = m.get(v) + + override def asMap: Map[Variable, Term] = m + + override def toString: String = super[BinaryInfix].toString + + override val predicate: Term = this + override val nonPredicate = Top + + override def asSet: Set[Term] = m.map({ case (k, v) => Equality.binding(k, v) }).toSet + + override val boundVariables: Set[Variable] = m.keySet + + override def filter(f: Variable => Boolean): Substitution = { + val newBindings = m.filterKeys(f) + + val res = if (newBindings.size == 1) + Equality.binding(newBindings.head._1, newBindings.head._2) + else + new MultipleBindings(newBindings) + + res + } +} + +private[standard] case class DNFOrLabel()(implicit override val env: Environment) + extends LabelNamed("∨") with OrLabel with DisjunctiveRoaring { + + import env._ + + def apply(_1: Term, _2: Term): Term = { + if (_1 == Bottom) { + _2 + } else if (_2 == Bottom) { + _1 + } else { + asSet(_1) | asSet(_2) match { + case s if s.isEmpty => Bottom + case s if s.size == 1 => s.head + case s => new OrWithAtLeastTwoElements(s) + } + } + } + + @NonNormalizing + def applyWithoutNormalizing(s: Set[Term]): Term = (s.size: @switch) match { + case 0 => empty + case 1 => s.head + case 2 => new OrWithAtLeastTwoElements(s) + } +} + +private[this] class OrWithAtLeastTwoElements(val terms: Set[Term])(implicit env: Environment) extends Or { + assert(terms.size > 1) + + import env._ + + val label = Or + + lazy val _1: Term = terms.head + lazy val _2 = Or(terms.tail.toSeq) + + override lazy val isPredicate: Boolean = terms.forall(_.isPredicate) + + override def equals(other: Any): Boolean = other match { + case that: OrWithAtLeastTwoElements => this.terms == that.terms + case _ => false + } + + override def asSet: Set[Term] = terms +} + +private[standard] case class SimpleForAllLabel()(implicit val e: Environment with MatchingLogicMixin) extends LabelNamed("ForAll") with ForAllLabel with Projection2Roaring { + + import env._ + + override def apply(_1: Term, _2: Term): Term = { + val v = _1.asInstanceOf[Variable] + _2 match { + case Bottom => Bottom + case _ => SimpleForAll(v, _2) + } + } + + override val isPredicate: Option[Boolean] = None +} + +case class SimpleForAll(v: Variable, p: Term)(implicit val env: Environment) extends Node2 with ForAll { + val label = env.ForAll + override lazy val isPredicate = p.isPredicate + + override def _1: Term = v + + override def _2: Term = p +} + +private[standard] case class SimpleExistsLabel()(implicit val e: Environment with MatchingLogicMixin) extends LabelNamed("∃") with ExistsLabel with Projection2Roaring { + + import env._ + + // 1. Bottom ... Bottom + // 2. X -> concrete ... remove binding + // 3. X -> symbolic ... leave in place ..... should probably remove it anyhow + // 4. no X -> leave in place + override def apply(_1: Term, _2: Term): Term = { + val v = _1.asInstanceOf[Variable] + _2 match { + case Bottom => Bottom + case And.SPN(s, pred, nonPred) if s.get(v).exists(_.isGround) => + And.SPN(s.remove(v), pred, nonPred) + case _ => + SimpleExists(v, _2) + } + } +} + +case class SimpleExists(v: Variable, p: Term)(implicit val env: Environment) extends Node2 with Exists { + val label = env.Exists + // TODO: this should be p.isPredicate but we're using it as a marker for contexts now + override lazy val isPredicate = p.isPredicate + + override def _1: Term = v + + override def _2: Term = p + + override lazy val variables: Set[Variable] = p.variables.filterNot(_ == v) +} + +private[standard] class BindMatchLabel(implicit override val env: Environment) extends LabelNamed("BindMatch") with Label2 with Projection2Roaring { + def apply(v: Term, p: Term) = SimpleNode2(this, v.asInstanceOf[Variable], p) + + override val isPredicate: Option[Boolean] = Some(false) +} diff --git a/src/main/scala/org/kframework/kale/strategy/strategies.scala b/src/main/scala/org/kframework/kale/strategy/strategies.scala new file mode 100644 index 0000000..1a433ab --- /dev/null +++ b/src/main/scala/org/kframework/kale/strategy/strategies.scala @@ -0,0 +1,215 @@ +package org.kframework.kale.strategy + +import org.kframework.kale.transformer.Binary +import org.kframework.kale.transformer.Binary.{ProcessingFunctions, definePartialFunction} +import org.kframework.kale.util.LabelNamed +import org.kframework.kale.{CluelessRoaring, ConjunctiveRoaring, DisjunctiveRoaring, Environment, SimpleNode1, SimpleNode2, SimpleNode3, FunctionLabel1, FunctionLabel3, HasMatcher, Label1, Label2, Label3, Mixin, MonoidLabel, Node1, Predicate, SemigroupLabel, Term, standard} +import org.roaringbitmap.RoaringBitmap + +case class STRATEGY()(implicit env: Environment with standard.MatchingLogicMixin) { + + val anytimeIsNow = env.lift("^nextIsNow", env.And.anytimeIsNow _) + + val onlyNonPredicate = env.lift("^onlyNext", env.And.onlyNonPredicate _) + + trait Strategy { + val isPredicate = Some(false) + } + + val oneSolution = new LabelNamed("^oneSolution") with Label1 with Strategy with CluelessRoaring { + override def apply(_1: Term): Term = SimpleNode1(this, _1) + } + + val compose = new LabelNamed("^compose") with Label2 with Strategy with CluelessRoaring with SemigroupLabel { + override def apply(_1: Term, _2: Term): Term = SimpleNode2(this, _1, _2) + } + + val repeat = new LabelNamed("^repeat") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + def orElseLeave(t: Term): Term = orElse(t, env.Variable.freshVariable()) + + val fixpoint = new LabelNamed("^fixpoint") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + /** + * Takes a partial function + */ + val bu = new LabelNamed("^bu") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + /** + * Takes a partial function + */ + val td = new LabelNamed("^td") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + /** + * Takes a partial function. Similar to ^td, but returns Bottom if not applied anywhere. + **/ + val topDown = new LabelNamed("^topDown") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + val rw = new LabelNamed("^rewrite") with Label1 with Strategy with CluelessRoaring { + override def apply(f: Term): Term = SimpleNode1(this, f) + } + + val orElse = new LabelNamed("^orElse") with Label2 with Strategy with DisjunctiveRoaring with SemigroupLabel { + override def apply(_1: Term, _2: Term): Term = SimpleNode2(this, _1, _2) + } + + /** + * ifThenElse(c, t, e) is semantically equivalent to Or(And(c, t), And(Not(c), t)) but evaluated lazily + * i.e., the t and e are only touched when we know whether the condition is Top or Bottom + */ + val ifThenElse = new LabelNamed("^ifThenElse") with FunctionLabel3 with Strategy { + override def f(condition: Term, thenTerm: Term, elseTerm: Term): Option[Term] = condition match { + case env.Top => Some(thenTerm) + case env.Bottom => Some(elseTerm) + case _ => None + } + } + + + def noRewrite(t: Term) = !t.exists(_.label == env.Rewrite) + + /** + * "Waits" for all non-anonymous variables to be instantiated, tries to match, and returns Top if unsat. + */ + val doesNotMatch = new LabelNamed("!=") with Label2 with Predicate { + override def apply(pattern: Term, obj: Term): Term = + if ((pattern.variables | obj.variables).forall(v => v.name.toString.startsWith("_"))) { + val res = env.unify(pattern, obj) + env.Truth(res == env.Bottom) + } else { + new SimpleNode2(this, pattern, obj) + } + } + + /** + * Matches/unifies it's argument and returns obj if unsat. See also doesNotMatch. + */ + val unsat = new LabelNamed("unsat") with FunctionLabel1 with Strategy { + override def f(_1: Term) = { + val x = env.Variable("unsatVar" + env.Variable.counter) + Some(env.Exists(x, env.And(x, doesNotMatch(_1, x)))) + } + } +} + +trait StrategyMixin extends Mixin { + _: Environment with standard.MatchingLogicMixin with HasMatcher => + + val STRATEGY = org.kframework.kale.strategy.STRATEGY() + + import STRATEGY._ + + + registerMatcher( + { + case (`orElse`, _) => orElseTerm + case (`compose`, _) => composeTerm + case (`repeat`, _) => repeatTerm + case (`oneSolution`, _) => oneSolutionTerm + case (`fixpoint`, _) => fixpointTerm + case (`bu`, _) => buTerm + case (`td`, _) => tdTerm + case (`topDown`, _) => topDownTerm + }, Priority.ultimate) + + // only works for ground obj + case class orElseTerm(solver: Binary.Apply) extends Binary.F({ (orElse: Term, obj: Term) => + val STRATEGY.orElse(theThen, theElse) = orElse + + obj.asOr map { t => + val thenSol = unify(theThen, t) + thenSol match { + case Bottom => unify(theElse, t) + case other => other + } + } + }) + + case class composeTerm(solver: Binary.Apply) extends Binary.F({ (composed: Term, obj: Term) => + val compose(f, g) = composed + val matchG = unify(g, obj) + val takeRelevantFromGMatch = anytimeIsNow(onlyNonPredicate(matchG)) + val matchF = unify(f, takeRelevantFromGMatch) + + matchF + }) + + case class repeatTerm(solver: Binary.Apply) extends Binary.F({ (fp: Term, obj: Term) => + val repeat(f) = fp + val someVar = Variable.freshVariable() + val sol = solver(orElse(f, Rewrite(someVar, someVar)), obj) + sol.asOr map { + case And.SPN(s, p, t) => + if (s.boundVariables.contains(someVar)) { + And(p, Next(anytimeIsNow(t))) + } else { + solver(fp, And.SPN(s, p, anytimeIsNow(t))) + } + } + }) + + case class oneSolutionTerm(solver: Binary.Apply) extends Binary.F({ (fp: Node1, obj: Term) => + val sol = solver(fp._1, obj) + // TODO: make sure we pick deterministically + env.Or.asSet(sol).headOption.getOrElse(env.Bottom) + }) + + case class fixpointTerm(solver: Binary.Apply) extends Binary.F({ (fp: Term, obj: Term) => + val fixpoint(f) = fp + solver(f, obj) match { + case Bottom => Bottom + case Next(`obj`) => Next(obj) + case res => solver(fp, And.anytimeIsNow(res)) + } + }) + + case class buTerm(solver: Binary.Apply) extends Binary.F({ (bu: Node1, obj: Term) => + val res = obj.mapBU(t => { + val res = solver(bu._1, t) + res match { + case Bottom => t + case _ => anytimeIsNow(onlyNonPredicate(res)) + } + }) + res + }) + + case class tdTerm(solver: Binary.Apply) extends Binary.F({ (td: Node1, obj: Term) => + val res = obj.mapTD(t => { + val res = solver(td._1, t) + res match { + case Bottom => t + case _ => anytimeIsNow(onlyNonPredicate(res)) + } + }) + res + }) + + case class topDownTerm(solver: Binary.Apply) extends Binary.F({ (td: Node1, obj: Term) => + var matchedAtLeastOnce = false + val res = obj.mapTD(t => { + val res = solver(td._1, t) + res match { + case Bottom => t + case _ => + matchedAtLeastOnce = true + anytimeIsNow(onlyNonPredicate(res)) + } + }) + if (matchedAtLeastOnce) + res + else + Bottom + }) + +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/substitution.scala b/src/main/scala/org/kframework/kale/substitution.scala index 0513eb8..74fbfc0 100644 --- a/src/main/scala/org/kframework/kale/substitution.scala +++ b/src/main/scala/org/kframework/kale/substitution.scala @@ -1,15 +1,21 @@ package org.kframework.kale -import scala.collection.Map - trait Substitution extends (Term => Term) with Term { + val boundVariables: Set[Variable] + def env: Environment def get(v: Variable): Option[Term] + def filter(f: Variable => Boolean): Substitution + + def remove(v: Variable): Substitution = filter(_ != v) + def asMap: Map[Variable, Term] lazy val sub = env.substitutionMaker(this) def apply(t: Term): Term = sub(t) + + } diff --git a/src/main/scala/org/kframework/kale/term.scala b/src/main/scala/org/kframework/kale/term.scala index 645e2ec..22faec0 100644 --- a/src/main/scala/org/kframework/kale/term.scala +++ b/src/main/scala/org/kframework/kale/term.scala @@ -1,65 +1,88 @@ package org.kframework.kale -import io.circe.{Decoder, Encoder, HCursor} -import org.kframework.kale.util.{HasAtt, Util} -import org.kframework.kore -import org.kframework.kore.implementation.DefaultBuilders +import cats.Show import io.circe.syntax._ +import io.circe.{Decoder, Encoder, HCursor} +import org.kframework.kale.highcats._ +import org.kframework.kale.util.HasAtt +import org.roaringbitmap.RoaringBitmap -trait Label extends MemoizedHashCode with kore.Symbol { +trait Label extends MemoizedHashCode with RoaringLabel { val env: Environment val name: String - def smtName: String = name - val id: Int = env.register(this) + /** + * None means that it depends on its children + */ + val isPredicate: Option[Boolean] + override def equals(other: Any): Boolean = other match { - case that: Label => this.name == that.name + case that: Label => this.id == that.id case _ => false } - override def computeHashCode: Int = name.hashCode + override def computeHashCode: Int = id.hashCode override def toString: String = name - - // FOR KORE - override val str: String = name } -trait Term extends kore.Pattern with HasAtt { +trait Term extends HasAtt with MemoizedHashCode with RoaringTerm { def updateAt(i: Int)(t: Term): Term val label: Label - val isGround: Boolean + def isGround: Boolean - val isPredicate: Boolean + lazy val size: Long = (children map (_.size)).sum + 1 + + lazy val isPredicate: Boolean = label.isPredicate match { + case Some(isPred) => isPred + case None => + throw new AssertionError("Could not determine whether term is a predicate based on the label (" + + label + ", which is hooked to " + label.getClass + "). Override isPredicate with correct specification.") + } lazy val sort: Sort = label.env.sort(label, this.children.toSeq) def children: Iterable[Term] + def map0(f: Term => Term): Term + def canEqual(that: Any): Boolean = that match { case t: Term => t.label == this.label case _ => false } + val variables: Set[Variable] + /** * This method is called after `oldTerm` is updated resulting in `this` term. * Subclasses can override the method to attach functionality related to updating, e.g., updating attributes. * Should return `this`. */ -// override def updatePostProcess(oldTerm: Term): Term = this + // override def updatePostProcess(oldTerm: Term): Term = this - // TODO: should experiment with other implementations - override def hashCode: Int = this.label.hashCode def copy(children: Seq[Term]): Term + + override final def computeHashCode: Int = this.label.hashCode + 17 * this.children.hashCode +} + +trait Predicate extends NotRoaring { + self: Label => + + val isPredicate = Some(true) } object Term { + + implicit val show = new Show[Term] { + override def show(t: Term) = t.toConstructor + } + implicit def termDecoder(implicit env: Environment): Decoder[Term] = { Decoder.instance { (h: HCursor) => val label = env.label(h.get[String]("label").right.get) @@ -93,19 +116,14 @@ object Term { } } - implicit class StaticRichTerm(t: Term) { - def contains(subterm: Term): Boolean = Util.contains(t, subterm) // if (t == subterm) true else t.children.exists(_.contains(subterm)) - def containsInConstructor(subterm: Term): Boolean = Util.containsInConstructor(t, subterm) + implicit class RichTerm(val t: Term) extends AnyVal { + def moveRewriteToTop(implicit env: Environment): Rewrite = moveRewriteSymbolToTop(t) + def down[O](implicit down: Down[O]): Option[O] = down.down(t) } - implicit class RichTerm(t: Term)(implicit env: Environment) { - def moveRewriteToTop: Rewrite = Util.moveRewriteSymbolToTop(t) - } } -trait LeafLabel[T] extends Label { - def apply(t: T): Term - +trait LeafLabel[T] extends (T => Leaf[T]) with Label { def unapply(t: Term): Option[T] = t match { case t: Leaf[T] if t.label == this => Some(t.data) case _ => None @@ -120,6 +138,8 @@ trait LeafLabel[T] extends Label { trait Leaf[T] extends Term { def children: Iterable[Term] = Iterable.empty + def map0(f: Term => Term): Term = this + def updateAt(i: Int)(t: Term): Term = throw new IndexOutOfBoundsException("Leaves have no children. Trying to update index _" + i) val label: LeafLabel[T] @@ -135,9 +155,11 @@ trait Leaf[T] extends Term { } override def equals(obj: scala.Any): Boolean = obj match { - case that: Leaf[_] => that.label == this.label && that.data == this.data + case that: Leaf[_] => that.label == this.label && this.hashCode == that.hashCode && that.data == this.data case _ => false } + + override val variables: Set[Variable] = Set() } trait NodeLabel extends Label { @@ -173,6 +195,13 @@ trait Node extends Term with Product { override def toString: String = label + "(" + children.mkString(", ") + ")" def copy(children: Seq[Term]): Term + + override lazy val variables: Set[Variable] = children.flatMap(_.variables).toSet + + override def equals(obj: Any): Boolean = obj match { + case n: Node => n.label == this.label && n.hashCode == this.hashCode && n.children == this.children + case _ => false + } } object Node { @@ -181,3 +210,10 @@ object Node { case _ => None } } + +object Leaf { + def unapply(t: Term): Option[(LeafLabel[T], T) forSome {type T}] = t match { + case l: Leaf[_] => Some(l.label, l.data) + case _ => None + } +} diff --git a/src/main/scala/org/kframework/kale/transformer/Binary.scala b/src/main/scala/org/kframework/kale/transformer/Binary.scala index e47e5dd..0548576 100644 --- a/src/main/scala/org/kframework/kale/transformer/Binary.scala +++ b/src/main/scala/org/kframework/kale/transformer/Binary.scala @@ -1,46 +1,35 @@ package org.kframework.kale.transformer import org.kframework.kale._ +import org.kframework.kale.standard.StandardEnvironment +import org.roaringbitmap.RoaringBitmap +import org.kframework.kale.util.{Hits, timer} +import org.kframework.kale.util.timer.Timer +import squants.time.Nanoseconds -object Binary { - - trait TypedWith[L <: Term, R <: Term] { - type Left = L - type Right = R - } +import scala.annotation.switch - object ProcessingFunction { - implicit def functionToProcessingFunction[LeftIn <: Term, RightIn <: Term, SpecificSolver <: Apply](func: SpecificSolver => (LeftIn, RightIn) => Term): ProcessingFunction[SpecificSolver] = new ProcessingFunction[SpecificSolver] { - override type Left = LeftIn - override type Right = RightIn +object Binary { - override def f(state: SpecificSolver)(l: Left, r: Right): Term = func(state)(l, r) - } - } /** * f specifies how to process a pair of terms with labels (leftLabel, rightLabel). * f is automatically hooked and applied via Apply. */ - trait ProcessingFunction[-SpecificSolver <: Apply] extends (SpecificSolver => ((Term, Term) => Term)) { - type Left <: Term - type Right <: Term + type ProcessingFunction = (Apply => (Term, Term) => Term) - def apply(solver: SpecificSolver): (Term, Term) => Term = { - (a: Term, b: Term) => f(solver)(a.asInstanceOf[Left], b.asInstanceOf[Right]) - } + type ProcessingFunctions = PartialFunction[(Label, Label), ProcessingFunction] - def f(solver: SpecificSolver)(a: Left, b: Right): Term - } + abstract class F[A <: Term, B <: Term](f: (A, B) => Term) extends ((Term, Term) => Term) with Product { + override def toString = getClass.getTypeName - trait Apply extends ((Term, Term) => Term) { - val env: Environment - assert(env.isSealed) + override def apply(v1: Term, v2: Term): Term = f(v1.asInstanceOf[A], v2.asInstanceOf[B]) + } - type ProcessingFunctions = PartialFunction[(Label, Label), ProcessingFunction[this.type]] + def definePartialFunction[Process <: Apply, A <: Term, B <: Term](f: PartialFunction[(Label, Label), Process => (A, B) => Term]): ProcessingFunctions = f.asInstanceOf[ProcessingFunctions] - protected def definePartialFunction(f: ProcessingFunctions): ProcessingFunctions = f + case class Apply(processingFunctions: ProcessingFunctions)(implicit env: StandardEnvironment) extends ((Term, Term) => Term) { + assert(env.isSealed) - protected def processingFunctions: ProcessingFunctions = PartialFunction.empty protected lazy val arr: Array[Array[(Term, Term) => Term]] = { val pf = processingFunctions.lift @@ -53,30 +42,148 @@ object Binary { for (left <- env.labels) { for (right <- env.labels) { assert(arr(left.id)(right.id) == null) - val f = pf((left, right)).map(_(this)).orNull + val f = pf((left, right)).map(x => x(this)).orNull arr(left.id)(right.id) = f } } arr } - def apply(left: Term, right: Term): Term = { - // assert(labels.contains(left.label) && labels.contains(right.label)) - assert(left.label.id <= env.labels.size, "Left label " + left.label + " with id " + left.label.id + " is not registered. Label list:" + env.labels.map(l => (l.id, l)).toList.sortBy(_._1).mkString("\n")) - assert(right.label.id <= env.labels.size, "Right label " + right.label + " with id " + right.label.id + " is not registered. Label list:" + env.labels.map(l => (l.id, l)).toList.sortBy(_._1).mkString("\n")) + protected lazy val m1: Map[(Int, Int), (Term, Term) => Term] = { + val pf = processingFunctions.lift - try { - val u = arr(left.label.id)(right.label.id) - val res = if (u != null) - u(left, right) - else - env.Bottom + (for (left <- env.labels; + right <- env.labels) yield { + (left.id, right.id) -> pf((left, right)).map(x => x(this)).orNull + }) toMap + } + + // m2 seems to be most performant + protected lazy val m2: Map[Int, Map[Int, (Term, Term) => Term]] = { + val pf = processingFunctions.lift + + (for (left <- env.labels) yield { + left.id -> + (for (right <- env.labels) yield { + right.id -> pf((left, right)).map(x => x(this)).orNull + }).toMap + }).toMap + } + + val statsInvocations = collection.mutable.Map[(Term, Term) => Term, Int]().withDefaultValue(0) + + val memo = collection.mutable.Map[(Term, Term), Term]() - assert(!(left == right && res == env.Bottom), left.toString) - res + @inline final def functionFor(left: Label, right: Label): (Term, Term) => Term = { + try { + // the array of arrays seems to be about 10% faster than the others + arr(left.id)(right.id) + // m1.get((left.id, right.id)).orNull + // m2.get(left.id).flatMap(_.get(right.id)).orNull } catch { case _: IndexOutOfBoundsException => throw new AssertionError("No processing function registered for: " + left + " and " + right) } } + + val unifyTimer = timer.register("unify", new Timer("unify") { + override def reset(): Unit = { + super.reset() + _processedLHSNodes = 0L + } + + def processedLHSNodes: Long = _processedLHSNodes + + import squants.information._ + + /** + * unified nodes per second + */ + def unificationSpeed: Option[DataRate] = { + if (_totalTime > 0) + Some(Bytes(processedLHSNodes) / Nanoseconds(_totalTime) in BytesPerSecond) + else + None + } + + var _processedLHSNodes = 0L + }) + + final val forAllMatcher = functionFor(env.ForAll, env.BOOLEAN.Boolean) + final val forAllId: Int = env.ForAll.id + final val existsMatcher = functionFor(env.Exists, env.BOOLEAN.Boolean) + final val existsId: Int = env.Exists.id + final val andMatcher = functionFor(env.And, env.BOOLEAN.Boolean) + final val andId: Int = env.And.id + final val orMatcher = functionFor(env.Or, env.BOOLEAN.Boolean) + final val orId: Int = env.Or.id + final val contextMatcher = functionFor(env.SolvingContext, env.BOOLEAN.Boolean) + final val contextId = env.SolvingContext.id + final val orElseMatcher = functionFor(env.STRATEGY.orElse, env.BOOLEAN.Boolean) + final val orElseId: Int = env.STRATEGY.orElse.id + + + var unifyCacheHits = 0L + + def apply(left: Term, right: Term): Term = { + if (unifyTimer.isOutside) { + unifyTimer._processedLHSNodes += left.size + } + unifyTimer.time { + if (left == right) { + right + } else { + val u = (left.label.id) match { + case `forAllId` => forAllMatcher + case `existsId` => existsMatcher + case `andId` => andMatcher + case `orId` => orMatcher + case `orElseId` => orElseMatcher + case other => functionFor(left.label, right.label) + } + + val res = if (u != null) { + + @inline val roaringOptimization = { + @inline val lR = left.requiredLabels + @inline val lS = left.suppliedLabels + @inline val rR = right.requiredLabels + @inline val rS = right.suppliedLabels + rS.contains(lR) && lS.contains(rR) + } + + if (roaringOptimization) { + if (left.label.id == contextId) { + if (memo.contains((left, right))) + unifyCacheHits += 1 + memo.getOrElseUpdate((left, right), u(left, right)) + } else { + u(left, right) + } + } else { + // assert(u(left, right) == env.Bottom, "roaring mistake: " + left + " ? " + right) + env.Bottom + } + + } else + env.Bottom + + if (unifyTimer.hits % 1000 == 0) { + statsInvocations.update(u, statsInvocations(u) + 1) + } + + assert(!(left == right && res == env.Bottom), left.toString) + res + } + } + } + + lazy val processingFunctionsByLabelPair: Map[(Label, Label), (Term, Term) => Term] = arr.zipWithIndex.flatMap({ + case (innerArray, i) => innerArray.zipWithIndex.filter(_._1 != null) map { + case (f, j) if f != null => (env.labelForIndex(i), env.labelForIndex(j)) -> f + } + }).toMap + + override def toString: String = processingFunctionsByLabelPair.mkString("\n") } -} + +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/transformer/Unary.scala b/src/main/scala/org/kframework/kale/transformer/Unary.scala index 6556ea3..a91e5c8 100644 --- a/src/main/scala/org/kframework/kale/transformer/Unary.scala +++ b/src/main/scala/org/kframework/kale/transformer/Unary.scala @@ -1,8 +1,7 @@ package org.kframework.kale.transformer +import org.kframework.kale import org.kframework.kale._ -import org.kframework.kale.transformer.GenUnary.Apply -import org.kframework.kale.util.fixpoint /** * Abstract stateful transformer from Term to Term @@ -23,7 +22,7 @@ object GenUnary { /** * Extend this class to define the transformation by implementing f. */ - trait ProcessingFunction[ReturnType, -SpecificSolver <: Apply[ReturnType]] extends (SpecificSolver => Term => ReturnType) { + trait ProcessingFunction[ReturnType, -SpecificSolver] extends (SpecificSolver => Term => ReturnType) { type Element <: Term def apply(unarySolver: SpecificSolver): (Term => ReturnType) = { t: Term => f(unarySolver)(t.asInstanceOf[Element]) } @@ -31,12 +30,10 @@ object GenUnary { def f(state: SpecificSolver)(t: Element): ReturnType } + type ProcessingFunctions[T, Solver <: Apply[T]] = PartialFunction[Label, ProcessingFunction[T, Solver]] - abstract class Apply[T](env: Environment) extends (Term => T) { - - type ProcessingFunctions = PartialFunction[Label, ProcessingFunction[T, this.type]] - - protected def definePartialFunction(f: ProcessingFunctions): ProcessingFunctions = f + abstract class Apply[T](val env: Environment) extends (Term => T) { + type ProcessingFunctions = GenUnary.ProcessingFunctions[T, this.type] protected def processingFunctions: ProcessingFunctions @@ -56,7 +53,7 @@ object GenUnary { } object Unary { - type ProcessingFunction[-SpecificSolver <: Apply] = GenUnary.ProcessingFunction[Term, SpecificSolver] + type ProcessingFunction[-SpecificSolver] = GenUnary.ProcessingFunction[Term, SpecificSolver] def Node0(solver: Apply)(t: Node0): Term = t.copy() @@ -74,21 +71,21 @@ object Unary { def DoNothing(solver: Apply)(a: Term): Term = a + type ProcessingFunctions = GenUnary.ProcessingFunctions[Term, Apply] + + def processingFunctions: ProcessingFunctions = { + case l: Label0 => Node0 _ + case l: Label1 => Node1 _ + case l: Label2 => Node2 _ + case l: Label3 => Node3 _ + case l: Label4 => Node4 _ + case l: Label5 => Node5 _ + case l: Label6 => Node6 _ + case l: LeafLabel[_] => DoNothing _ + } - abstract class Apply(env: Environment) extends GenUnary.Apply[Term](env) { - - protected def processingFunctions: ProcessingFunctions = { - case l: Label0 => Node0 _ - case l: Label1 => Node1 _ - case l: Label2 => Node2 _ - case l: Label3 => Node3 _ - case l: Label4 => Node4 _ - case l: Label5 => Node5 _ - case l: Label6 => Node6 _ - case l: LeafLabel[_] => DoNothing _ - } - - def fixpoint(t: Term): Term = util.fixpoint(apply)(t) + abstract class Apply(implicit env: Environment) extends GenUnary.Apply[Term](env) { + def fixpoint(t: Term): Term = kale.fixpoint(apply)(t) } } \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/util.scala b/src/main/scala/org/kframework/kale/util.scala deleted file mode 100644 index 084134a..0000000 --- a/src/main/scala/org/kframework/kale/util.scala +++ /dev/null @@ -1,15 +0,0 @@ -package org.kframework.kale - -trait BinaryInfix { - self: Node2 => - override def toString: String = _1 + " " + label.name + " " + _2 -} - -trait MemoizedHashCode { - lazy val cachedHashCode = computeHashCode - - override def hashCode = cachedHashCode - - def computeHashCode: Int -} - diff --git a/src/main/scala/org/kframework/kale/util/Att.scala b/src/main/scala/org/kframework/kale/util/Att.scala index 2389d16..1d76819 100644 --- a/src/main/scala/org/kframework/kale/util/Att.scala +++ b/src/main/scala/org/kframework/kale/util/Att.scala @@ -13,11 +13,15 @@ trait HasAtt { var attributes: Map[Att[_], _] = Map() def updateAttributes(oldTerm: Term): Unit = { - attributes = (this.attributes map { - case (k, v) => (k, k.asInstanceOf[Att[Any]].update(this, Some(oldTerm))) + attributes = (oldTerm.attributes map { + case (k, _) => (k, k.asInstanceOf[Att[Any]].update(this, Some(oldTerm))) }).toMap } + def set[T](att: Att[T], value: T): Unit = attributes += (att -> value) + + def hasAtt(att: Att[_]): Boolean = attributes.contains(att) + def att[T](att: Att[T]): T = { if (!attributes.contains(att)) { val newValue = att.update(this, None) diff --git a/src/main/scala/org/kframework/kale/util/BUMapper.scala b/src/main/scala/org/kframework/kale/util/BUMapper.scala deleted file mode 100644 index 62bf034..0000000 --- a/src/main/scala/org/kframework/kale/util/BUMapper.scala +++ /dev/null @@ -1,25 +0,0 @@ -package org.kframework.kale.util - -import org.kframework.kale.transformer.Unary -import org.kframework.kale.transformer.Unary.ProcessingFunction -import org.kframework.kale.{Environment, Label, Term} - -object BUMapper { - def apply(processingFunction: Label => ProcessingFunction[BUMapper], env: Environment)(func: PartialFunction[Term, Term]): BUMapper = new BUMapper(func)(env) - - def apply(env: Environment): PartialFunction[Term, Term] => BUMapper = { - - BUMapper(env) - } -} - -class BUMapper(val func: PartialFunction[Term, Term])(implicit env: Environment) extends Unary.Apply(env) { - val liftedF = func.lift - - override def apply(t: Term) = - arr(t.label.id) match { - case f => - val processedT = f(t) - liftedF(processedT).getOrElse(processedT) - } -} diff --git a/src/main/scala/org/kframework/kale/util/Codec.scala b/src/main/scala/org/kframework/kale/util/Codec.scala index 5027d1b..feff400 100644 --- a/src/main/scala/org/kframework/kale/util/Codec.scala +++ b/src/main/scala/org/kframework/kale/util/Codec.scala @@ -18,13 +18,17 @@ class Codec(attCodecs: Set[AttCodec[E] forSome {type E}])(implicit val env: Envi Decoder.instance { (h: HCursor) => val label = env.label(h.get[String]("label").right.get) - val attsCursor: HCursor = h.downField("att").success.get + val atts: Map[Att[_], _] = h.downField("att").success + .map { attsCursor => + val x: Map[Att[_], _] = attsCursor.fieldSet.get map { + (attName: String) => + val AttCodec(att, _, decoder) = nameToAttDecoder(attName) + att -> decoder(attsCursor.downField(attName).success.get).right.get + } toMap - val atts: Map[Att[_], _] = attsCursor.fieldSet.get map { - (attName: String) => - val AttCodec(att, _, decoder) = nameToAttDecoder(attName) - (att -> decoder(attsCursor.downField(attName).success.get).right.get) - } toMap + x + } + .getOrElse(Map[Att[_], Any]()) label match { case leafLabel: LeafLabel[_] => @@ -50,14 +54,21 @@ class Codec(attCodecs: Set[AttCodec[E] forSome {type E}])(implicit val env: Envi } toMap Encoder.instance[Term] { t => - val encodedAtts: Map[String, Json] = t.attributes map { - case (att: Att[_], v: Any) => (att.toString -> nameToAttDecoder(att.toString).encoder.asInstanceOf[Encoder[Any]](v)) + val encodedAtts: Map[String, Json] = t.attributes collect { + case (att, v) if nameToAttDecoder.contains(att.toString) => + att.toString -> nameToAttDecoder(att.toString).encoder.asInstanceOf[Encoder[Any]](v) } - val labelAndAtts = Map("label" -> t.label.toString.asJson, "att" -> encodedAtts.asJson) + + val attBinding = + if (encodedAtts.nonEmpty) + Map("att" -> encodedAtts.asJson) + else + Map() + val labelAndAtts = Map("label" -> t.label.toString.asJson) ++ attBinding t.label match { case label: LeafLabel[_] => val label(data) = t - (labelAndAtts + ("data" -> data.toString.asJson)).asJson + (labelAndAtts + ("data" -> t.toString.asJson)).asJson case label: NodeLabel => val node = t.asInstanceOf[Node] (labelAndAtts + ("children" -> node.children.asJson)).asJson diff --git a/src/main/scala/org/kframework/kale/util/Implicits.scala b/src/main/scala/org/kframework/kale/util/Implicits.scala deleted file mode 100644 index cdd1914..0000000 --- a/src/main/scala/org/kframework/kale/util/Implicits.scala +++ /dev/null @@ -1,55 +0,0 @@ -package org.kframework.kale.util - -import org.kframework.kale._ -import org.kframework.kale.builtin.HasINT -import org.kframework.kale.standard.{SimpleFreeLabel2, StandardEnvironment} - -import scala.language.implicitConversions - -class Implicits(implicit val env: StandardEnvironment) extends StaticImplicits { - - import env._ - - implicit def intConstant(x: Int): DomainValue[Int] = INT(x) - - implicit def doubleConstant(x: Double): DomainValue[Double] = DOUBLE(x) - - implicit def booleanConstant(x: Boolean): DomainValue[Boolean] = BOOLEAN(x) - - implicit def stringConstant(x: String): DomainValue[String] = STRING(x) - - val plus = SimpleFreeLabel2("+") - - //PrimitiveFunction2("+", INT, (a: Int, b: Int) => a + b)(env) - - implicit class asTerm(x: Term) { - def +(y: Term): Term = plus(x, y) - } - - implicit class RichTerm(t: Term) { - def :=(tt: Term)(implicit m: MatcherOrUnifier): Term = m(t, tt) - def =:=(tt: Term)(implicit m: MatcherOrUnifier): Term = m(t, tt) - } - -} - -trait StaticImplicits { - - implicit class StaticRichAssocLabel(label: AssocLabel) { - def apply(args: Term*): Term = label.apply(args.toSeq) - } - - implicit def intConstant(x: Int)(env: Environment with HasINT): DomainValue[Int] = env.INT(x) - - implicit def symbolWithApp(s: Symbol)(env: Environment) = new { - val label = env.label(s.name) - - def apply[T](value: T): Term = label.asInstanceOf[LeafLabel[T]](value) - - def apply(_1: Term): Term = label.asInstanceOf[Label1](_1) - - def apply(_1: Term, _2: Term): Term = label.asInstanceOf[Label2](_1, _2) - } -} - -object StaticImplicits extends StaticImplicits \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/util/LabelNamed.scala b/src/main/scala/org/kframework/kale/util/LabelNamed.scala new file mode 100644 index 0000000..2a20bff --- /dev/null +++ b/src/main/scala/org/kframework/kale/util/LabelNamed.scala @@ -0,0 +1,5 @@ +package org.kframework.kale.util + +import org.kframework.kale.Environment + +abstract class LabelNamed[E <: Environment](val name: String)(implicit val env: E) diff --git a/src/main/scala/org/kframework/kale/util/MutableObj.scala b/src/main/scala/org/kframework/kale/util/MutableObj.scala index 6a7a502..b405365 100644 --- a/src/main/scala/org/kframework/kale/util/MutableObj.scala +++ b/src/main/scala/org/kframework/kale/util/MutableObj.scala @@ -1,6 +1,6 @@ package org.kframework.kale.util -import io.circe.{Decoder, Encoder, JsonObject, ObjectEncoder} +import io.circe.{Decoder, Encoder} final class MutableObj[T](private var v: T) extends Mutable { def set(v: T): Unit = { diff --git a/src/main/scala/org/kframework/kale/util/Named.scala b/src/main/scala/org/kframework/kale/util/Named.scala deleted file mode 100644 index f3b757f..0000000 --- a/src/main/scala/org/kframework/kale/util/Named.scala +++ /dev/null @@ -1,5 +0,0 @@ -package org.kframework.kale.util - -import org.kframework.kale.Environment - -abstract class Named(val name: String)(implicit val env: Environment) diff --git a/src/main/scala/org/kframework/kale/util/Path.scala b/src/main/scala/org/kframework/kale/util/Path.scala deleted file mode 100644 index 5358009..0000000 --- a/src/main/scala/org/kframework/kale/util/Path.scala +++ /dev/null @@ -1,21 +0,0 @@ -package org.kframework.kale.util - -import org.kframework.kale.{AssocLabel, Term} - -/** - * works only for non-comm - */ -case class Path(positions: Seq[Int]) { - /** - * Returns the subterm of t at the current Path position - */ - def apply(t: Term): Term = positions match { - case head :: tail => - val elements = t.label match { - case label: AssocLabel => label.asIterable(t).toSeq - case _ => t.children.toSeq - } - Path(tail)(elements(positions.head)) - case Nil => t - } -} diff --git a/src/main/scala/org/kframework/kale/util/dsl.scala b/src/main/scala/org/kframework/kale/util/dsl.scala new file mode 100644 index 0000000..0080c1b --- /dev/null +++ b/src/main/scala/org/kframework/kale/util/dsl.scala @@ -0,0 +1,74 @@ +package org.kframework.kale.util + +import org.kframework.kale._ +import org.kframework.kale.standard.StandardEnvironment + +import scala.language.implicitConversions + +trait DSLMixin { + protected val env: StandardEnvironment + + import env._ + + def __ : Variable = Variable.freshVariable() + + implicit class RichVariable(v: Variable) { + + def =!=(tt: Term): Term = STRATEGY.doesNotMatch(tt, v) + } + + def ?(t: Term): Term = STRATEGY.orElseLeave(t) + + + implicit class RichStandardTerm(t: Term) { + def :=(tt: Term): Term = env.And.onlyPredicate(env.unify(t, tt)) + + def =:=(tt: Term): Term = env.unify(t, tt) + + def ==>(tt: Term): Term = Rewrite(t, tt) + + def ?=>(tt: Term): Term = STRATEGY.orElseLeave(Rewrite(t, tt)) + + def ==:=(tt: Term): Term = And.nextOnly(env.And.onlyNonPredicate(env.unify(t, tt))) + + def :::(tt: Term): Term = STRATEGY.compose(t, tt) + + def %(redex: Term): env.ContextApplication = Context(__, redex, Or(And(t, Context.anywhere), __)) + + def %%(redex: Term): env.ContextApplication = Context(__, redex, t) + + def |(tt: Term) = Or(t, tt) + + def &(tt: Term) = And(t, tt) + + def unary_! : Term = STRATEGY.unsat(t) + } + + implicit def symbolWithApp(s: Symbol)(env: Environment) = new { + val label: Label = env.label(s.name) + + def apply[T](value: T): Term = label.asInstanceOf[LeafLabel[T]](value) + + def apply(_1: Term): Term = label.asInstanceOf[Label1](_1) + + def apply(_1: Term, _2: Term): Term = label.asInstanceOf[Label2](_1, _2) + } +} + +trait VariablesMixin { + val env: StandardEnvironment + + import env._ + + val Condition = Variable("Condition") + val Then = Variable("Then") + val Else = Variable("Else") + val A = Variable("A") + val B = Variable("B") + val X = Variable("X") + val Y = Variable("Y") + val P = Variable("P") + val S = Variable("S") +} + +class dsl(implicit val env: StandardEnvironment) extends DSLMixin with VariablesMixin diff --git a/src/main/scala/org/kframework/kale/util/timer.scala b/src/main/scala/org/kframework/kale/util/timer.scala new file mode 100644 index 0000000..7ec39a3 --- /dev/null +++ b/src/main/scala/org/kframework/kale/util/timer.scala @@ -0,0 +1,169 @@ +package org.kframework.kale.util + +import io.circe.Json + +import scala.concurrent._ +import scala.concurrent.duration._ + +object timer { + + private val rs = collection.mutable.Map[String, Timer]() + + def register[T <: Timer](name: String, t: => T): T = { + rs.getOrElseUpdate(t.name, t).asInstanceOf[T] + } + + def apply(name: String): Timer = register(name, new Timer(name)) + + def timers: Map[String, Timer] = rs.toMap + + def get(name: String): Option[Timer] = rs.get(name) + + def formatTime(l: Long): String = { + l.nanos.toMillis + "ms" + } + + def fullReport(): String = { + rs.values map (_.report) mkString "\n\n" + } + + def fullReset(): Unit = { + rs.values.foreach(_.reset()) + } + + def fullTimout(): Unit = { + rs.values.foreach(_.timeoutMode()) + } + + class Timer(val name: String) { + protected[this] var _entries = 0 + protected[this] var _totalTime = 0L + protected[this] var _lastEntry = 0L + protected[this] var _hits = 0L + protected[this] var _errorHits = 0L + protected[this] var _invocations = 0L + + def timeoutMode() = { + // assert(isInside, "Do not reset the timer during measuring.") + _entries = -Int.MaxValue + _totalTime += (System.nanoTime() - _lastEntry) + } + + def reset() = { + // assert(isInside, "Do not reset the timer during measuring.") + _entries = 0 + _totalTime = 0L + _lastEntry = 0L + _hits = 0L + _errorHits = 0L + _invocations = 0L + } + + def isOutsideOrError = _entries <= 0 + + def isOutside = _entries == 0 + + def isTimeoutMode = _entries == -Int.MaxValue + + def atMost[T](f: => T, time: Duration): T = { + val future = Future[T] { + f + }(ExecutionContext.global) + + try { + Await.result(future, time) + } catch { + case e: ExecutionException => + throw e.getCause + case e: TimeoutException => + // so, on timeout, we mark the final exit correctly + fullTimout() + throw e + case e: Throwable => + throw e + } + } + + /** + * We should only have a timeLimit on the outermost timer. + */ + @inline final def time[T](f: => T, timeLimit: Option[Duration] = None): T = + if (isOutside && timeLimit.isDefined) { + atMost(process(f), timeLimit.get) + } else { + process(f) + } + + @inline private final def process[T](f: => T) = { + enter() + try { + f + } catch { + case e: Throwable => + _errorHits += 1 + throw e; + } finally { + exit() + } + } + + object TriesToMeasureAfterTimeout extends Exception("Tried to measure after a timeout occurred. Reset the timers to reuse.") + + @inline protected[this] final def enter(): Unit = { + if (isOutsideOrError) { + if (isTimeoutMode) { + throw TriesToMeasureAfterTimeout + } + _lastEntry = System.nanoTime() + _invocations += 1 + } + _entries += 1 + _hits += 1 + } + + @inline protected[this] final def exit(): Unit = { + _entries -= 1 + if (isOutsideOrError) { + if (isTimeoutMode) + throw TriesToMeasureAfterTimeout + _totalTime += (System.nanoTime() - _lastEntry) + } + } + + def totalTime: Duration = _totalTime.nanos + + def hits: Long = _hits + + def errorHits: Long = _errorHits + + /** + * hits per second + */ + def speed: Double = { + if (_totalTime > 0) + (hits.toDouble / _totalTime.toDouble) * Math.pow(10, 9) + else + Double.NaN + } + + def report: String = { + if (_entries != 0) { + System.err.println("Trying to print a report while inside a measured region") + } + name + ": time = " + totalTime.toMillis + "ms; hits: " + _hits + + (if (hits > 0) f"; speed: $speed%.2f hits/s" else "") + + (if (_errorHits > 0) "; errorHits: " + _errorHits else "") + } + } + +} + +class Hits { + var _hits = 0L + + def hit(): Unit = { + _hits += 1 + } + + def hits = _hits +} \ No newline at end of file diff --git a/src/main/scala/org/kframework/kale/util/util.scala b/src/main/scala/org/kframework/kale/util/util.scala deleted file mode 100644 index b701c63..0000000 --- a/src/main/scala/org/kframework/kale/util/util.scala +++ /dev/null @@ -1,47 +0,0 @@ -package org.kframework.kale.util - -import org.kframework.kale._ -import org.kframework.kale.standard.Rewrite - -object fixpoint { - def apply[T](f: T => T): (T => T) = { - { t: T => - val after = f(t) - if (after != t) - apply(f)(after) - else - after - } - } -} - -object Util { - - - def variables(t: Term): Set[Variable] = t match { - case v: Variable => Set(v) - case Node(_, cs) => (cs flatMap variables).toSet - case _ => Set() - } - - def toRewriteLHS(t: Term): Term = t match { - case Rewrite(l, _) => l - case n: Node => n.copy(n.children map toRewriteLHS toSeq) - case _ => t - } - - def toRewriteRHS(t: Term): Term = t match { - case Rewrite(_, r) => r - case n: Node => n.copy(n.children map toRewriteRHS toSeq) - case _ => t - } - - def moveRewriteSymbolToTop(t: Term)(implicit env: Environment): Rewrite = env.Rewrite(toRewriteLHS(t), toRewriteRHS((t))).asInstanceOf[Rewrite] - - def contains(t: Term, subterm: Term): Boolean = if (t == subterm) true else t.children.exists(contains(_, subterm)) - - def containsInConstructor(t: Term, subterm: Term): Boolean = - if (t == subterm) true - else if (!t.label.isInstanceOf[Constructor]) false - else t.children.exists(containsInConstructor(_, subterm)) -} diff --git a/src/main/scala/org/kframework/kale/z3.scala b/src/main/scala/org/kframework/kale/z3.scala index 3d307ce..15fccb7 100644 --- a/src/main/scala/org/kframework/kale/z3.scala +++ b/src/main/scala/org/kframework/kale/z3.scala @@ -1,5 +1,7 @@ package org.kframework.kale +import org.kframework.kale.km.{MultisortedMixin, Z3Mixin} + import scala.collection._ import scala.sys.process._ @@ -9,7 +11,7 @@ trait Z3Builtin symbolsSeq: constructor symbols that need to be encoded using z3 datatypes instead of functions. It should be given as SCCs of symbols in topological order of dependency. */ -class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { +class z3(val env: Environment with MultisortedMixin with Z3Mixin, val symbolsSeq: Seq[Seq[Label]]) { import env._ @@ -38,8 +40,8 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { case t:Equals => "(= " + encode(t._1) + " " + encode(t._2) + ")" case t:And => "(and " + encode(t._1) + " " + encode(t._2) + ")" case t:Or => "(or " + encode(t._1) + " " + encode(t._2) + ")" - case FreeNode0(symbol) => symbol.smtName - case t:FreeNode => "(" + t.label.smtName + " " + t.children.map(encode).mkString(" ") + ")" + case SimpleNode0(symbol) => symbol.smtName + case t:SimpleNode => "(" + t.label.smtName + " " + t.children.map(encode).mkString(" ") + ")" case v:Variable => v.name.toString case c:DomainValue[_] => c.toString case _ => ??? @@ -50,7 +52,7 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { def getFunctionSymbols(term: Term): Set[Any] = term match { case t:Node => val decls = t.children.flatMap(getFunctionSymbols).toSet - if (!t.label.isInstanceOf[Z3Builtin]) decls + t.label + if (!env.isZ3Builtin(t.label)) decls + t.label else decls case _:Variable => Set(term) case _:DomainValue[_] => Set() @@ -62,13 +64,12 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { // - non-zero-argument symbols as `fun` val declareFuns: String = symbols.map({ case v:Variable => "(declare-const " + v.name + " " + v.sort.smtName + ")\n" - case l:FreeLabel0 => "(declare-const " + l.smtName + " " + sortTarget(l).smtName + ")\n" - case l:FreeLabel => "(declare-fun " + l.smtName + " (" + sortArgs(l).map(_.smtName).mkString(" ") + ") " + sortTarget(l).smtName + ")\n" - case _ => ??? + case l:FreeLabel0 => "(declare-const " + l.smtName + " " + sort(l).smtName + ")\n" + case l:FreeLabel => "(declare-fun " + l.smtName + " (" + sortArgs(l).map(_.smtName).mkString(" ") + ") " + sort(l).smtName + ")\n" }).mkString // remaining sorts not defined by constructor datatypes val sorts: Set[Sort] = symbols.flatMap({ - case l:FreeLabel => sortArgs(l).toSet + sortTarget(l) + case l:FreeLabel => sortArgs(l).toSet + sort(l) case v:Variable => Set(v.sort) case _ => ??? }) @@ -76,8 +77,8 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { .map(sort => if (sort.isInstanceOf[Z3Builtin]) "" else "(declare-sort " + sort.smtName + ")\n").mkString declareSorts + declDatatypes + declareFuns } -//lazy val datatypes: Set[Sort] = symbolsSeq.flatMap(_.flatMap(s => sortArgs(s).toSet + sortTarget(s)).toSet).toSet - lazy val datatypes: Set[Sort] = symbolsSeq.flatMap(_.map(sortTarget).toSet).toSet +//lazy val datatypes: Set[Sort] = symbolsSeq.flatMap(_.flatMap(s => sortArgs(s).toSet + sort(s)).toSet).toSet + lazy val datatypes: Set[Sort] = symbolsSeq.flatMap(_.map(sort).toSet).toSet lazy val declDatatypes: String = declareDatatypesSeq(symbolsSeq) // symbolsSeq: SCCs of symbols in topological order @@ -85,7 +86,7 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { def declareDatatypes(symbols: Seq[Label]): String = { "(declare-datatypes () (\n" + symbols.filter(sym => !sym.isInstanceOf[Z3Builtin]) - .groupBy(sortTarget) + .groupBy(sort) .map({case (sort, syms) => " (" + sort.smtName + "\n" + syms.map(sym => @@ -101,7 +102,7 @@ class z3(val env: Environment, val symbolsSeq: Seq[Seq[Label]]) { object z3 { // TODO: set proper z3 path - private val z3 = "../z3/bin/z3" // "z3-4.5.0-x64-osx-10.11.6/bin/z3" + private val z3 = "./z3/bin/z3" // "z3-4.5.0-x64-osx-10.11.6/bin/z3" val cmd = Seq(z3, "-smt2", "-in") diff --git a/src/main/scala/org/kframework/km/builtin.scala b/src/main/scala/org/kframework/km/builtin.scala deleted file mode 100644 index f60822b..0000000 --- a/src/main/scala/org/kframework/km/builtin.scala +++ /dev/null @@ -1,304 +0,0 @@ -package org.kframework.km - -import scala.util.control.ControlThrowable - -object builtin { - - import term._ - - // sorts - - // TODO: prevent duplicate builtin sorts - val SortInt = new SortOf("Int") { - override val smtBuiltin: Boolean = true - } - val SortBool = new SortOf("Bool") { - override val smtBuiltin: Boolean = true - } - val SortString = new SortOf("String") { // TODO: altenative z3 encoding? (e.g., int)? - override val smtBuiltin: Boolean = true - } - // TODO: SortReal, SortMInt, etc - - val SortK = SortOf("K") - val SortListK = SortList(SortK) - - // terms - - case class INT(v: Int) extends Constant { - val sort: Sort = SortInt - val smt: String = v.toString - } - case class BOOL(v: Boolean) extends Constant { - val sort: Sort = SortBool - val smt: String = v.toString - } - case class STRING(v: String) extends Constant { - val sort: Sort = SortString - val smt: String = "\"" + v + "\"" - } - /* TODO: support string, real, float, and bit-vector - case class REAL(v: Double) extends Constant { - val sort: Sort = SortReal - } - case class MINT(v: BitVector) extends Constant { - val sort: Sort = SortMInt - } - */ - - // symbols - - object INT { - sealed trait bop extends Symbol { - def f(i1: Int, i2: Int): Int - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(SortInt, SortInt), SortInt) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - (children(0), children(1)) match { - case (INT(i1), INT(i2)) => INT(f(i1,i2)) - case _ => Application(this, children) - } - } - } - object plus extends bop { override val name: String = "_+Int_"; override val smt: String = "+"; override def f(i1:Int, i2:Int): Int = i1 + i2 } - object minus extends bop { override val name: String = "_-Int_"; override val smt: String = "-"; override def f(i1:Int, i2:Int): Int = i1 - i2 } - object mult extends bop { override val name: String = "_*Int_"; override val smt: String = "*"; override def f(i1:Int, i2:Int): Int = i1 * i2 } - object div extends bop { override val name: String = "_/Int_"; override val smt: String = "div"; override def f(i1:Int, i2:Int): Int = i1 / i2 } - object mod extends bop { override val name: String = "_%Int_"; override val smt: String = "mod"; override def f(i1:Int, i2:Int): Int = i1 % i2 } - - sealed trait cmp extends Symbol { - def f(i1: Int, i2: Int): Boolean - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(SortInt, SortInt), SortBool) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - (children(0), children(1)) match { - case (INT(i1), INT(i2)) => BOOL(f(i1,i2)) - case _ => Application(this, children) - } - } - } - object gt extends cmp { override val name: String = "_>Int_"; override val smt: String = ">"; override def f(i1: Int, i2: Int): Boolean = i1 > i2 } - object lt extends cmp { override val name: String = "_= i2 } - object le extends cmp { override val name: String = "_<=Int_"; override val smt: String = "<="; override def f(i1: Int, i2: Int): Boolean = i1 <= i2 } - } - - object BOOL { - sealed trait bop extends Symbol { - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(SortBool, SortBool), SortBool) - override val isFunctional: Boolean = true - } - object and extends bop { - override val name: String = "_andBool_" - override val smt: String = "and" - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - (children(0), children(1)) match { - case (BOOL(b1), BOOL(b2)) => BOOL(b1 && b2) - case (BOOL(true), t) => t - case (t, BOOL(true)) => t - case (BOOL(false), _) => BOOL(false) - case (_, BOOL(false)) => BOOL(false) - case _ => Application(this, children) - } - } - } - object or extends bop { - override val name: String = "_orBool_" - override val smt: String = "or" - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - (children(0), children(1)) match { - case (BOOL(b1), BOOL(b2)) => BOOL(b1 || b2) - case (BOOL(true), _) => BOOL(true) - case (_, BOOL(true)) => BOOL(true) - case (BOOL(false), t) => t - case (t, BOOL(false)) => t - case _ => Application(this, children) - } - } - } - object implies extends bop { - override val name: String = "_impliesBool_" - override val smt: String = "implies" - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - (children(0), children(1)) match { - case (BOOL(b1), BOOL(b2)) => BOOL(!b1 || b2) - case (BOOL(true), t) => t - case (_, BOOL(true)) => BOOL(true) - case (BOOL(false), t) => BOOL(true) - case (t, BOOL(false)) => not(t) - case _ => Application(this, children) - } - } - } - object not extends Symbol { - override val name: String = "_notBool_" - override val smt: String = "not" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(SortBool), SortBool) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 1) - children(0) match { - case BOOL(b) => BOOL(!b) - case _ => Application(this, children) - } - } - } - case class eq(sort: Sort) extends Symbol { - override val name: String = "_==" + sort.name + "_" - override val smt: String = "=" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(sort, sort), SortBool) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - val (t1,t2) = (children(0), children(1)) - if (t1 == t2) BOOL(true) - else Application(this, children) - } - } - } - - /* - general Map[K,K] doesn't work. - suppose we have a symbolic map M, and we lookup a key X, which returns M[X]. - now the expression M[X] is of sort K, and can be matched any kind of statements on the top of the cell. - */ - object MAP { - case class NotFound() extends ControlThrowable - - /* // TODO: not thread safe - private val selects: mutable.Map[SortMap, Symbol] = mutable.Map() - def selectOf(sort: SortMap): Symbol = { - if (selects.contains(sort)) selects(sort) - else { - val symbol = Select(sort) - selects.put(sort, symbol) - symbol - } - } - private */ - case class select(sort: SortMap) extends Symbol { - override val name: String = "selectMap" + sort.key + sort.value - override val smt: String = "select" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(sort, sort.key), sort.value) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - lazy val default = Application(this, children) - val (m,k) = (children(0), children(1)) - if (k.isSymbolic) default - else { - def select(m1: Term, k1: Term): Term = { - m1 match { - case Application(st:store, Seq(m2, k2, v2)) => - assert(st.sort == sort) - if (k1 == k2) v2 - else select(m2, k1) - case _ => throw NotFound() - } - } - try { - select(m,k) - } catch { - case NotFound() => default - } - } - } - } - - /* // TODO: not thread safe - private val stores: mutable.Map[SortMap, Symbol] = mutable.Map() - def storeOf(sort: SortMap): Symbol = { - if (stores.contains(sort)) stores(sort) - else { - val symbol = Store(sort) - stores.put(sort, symbol) - symbol - } - } - private */ - case class store(sort: SortMap) extends Symbol { - override val name: String = "storeMap" + sort.key + sort.value - override val smt: String = "store" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(sort, sort.key, sort.value), sort) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 3) - lazy val default = Application(this, children) - val (m,k,v) = (children(0), children(1), children(2)) - if (k.isSymbolic) default - else { - def store(m1: Term, k1: Term, v1: Term): Term = { - m1 match { - case Application(st:store, Seq(m2, k2, v2)) => - assert(st.sort == sort) - if (k1 == k2) - Application(this, Seq(m2, k2, v1)) - else - Application(this, Seq(store(m2, k1, v1), k2, v2)) - case _ => throw NotFound() - } - } - try { - store(m,k,v) - } catch { - case NotFound() => default - } - } - } - } - } - - object LIST { - case class nil(sort: SortList) extends Symbol { - override val name: String = "nilList" + sort.elem - override val smt: String = "nil" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(), sort) - override val isFunctional: Boolean = false - override def applySeq(children: Seq[Term]): Term = Application(this, children) - } - - case class insert(sort: SortList) extends Symbol { - override val name: String = "insertList" + sort.elem - override val smt: String = "insert" - override val smtBuiltin: Boolean = true - override val signature: Type = (Seq(sort.elem, sort), sort) - override val isFunctional: Boolean = false - override def applySeq(children: Seq[Term]): Term = Application(this, children) - } - - case class append(sort: SortList) extends Symbol { - override val name: String = "appendList" + sort.elem - override val smt: String = "append" - override val smtBuiltin: Boolean = false - override val signature: Type = (Seq(sort, sort), sort) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 2) - lazy val default = Application(this, children) - val (l1,l2) = (children(0), children(1)) - (l1, l2) match { - case (_, Application(n:nil, _)) => assert(n.sort == sort); l1 - case (Application(n:nil, _), _) => assert(n.sort == sort); l2 - case (Application(ins:insert, Seq(l11, l12)), _) => - assert(ins.sort == sort) - Application(ins, Seq(l11, this(l12, l2))) - case _ => default - } - } - } - } - -} diff --git a/src/main/scala/org/kframework/km/outer.scala b/src/main/scala/org/kframework/km/outer.scala deleted file mode 100644 index 51be03d..0000000 --- a/src/main/scala/org/kframework/km/outer.scala +++ /dev/null @@ -1,25 +0,0 @@ -package org.kframework.km - -object outer { - - import term._ - import builtin._ - - case class SimplePattern(term: Term, constraint: Term) { - assert(constraint.sort == SortBool) - val counter: Int = 0 - override def toString: String = term + " /\\ " + constraint - } - object SimplePattern { - def apply(term: Term, constraint: Term, cnt: Int): SimplePattern = new SimplePattern(term, constraint) { - override val counter: Int = cnt - } - } - - case class SimpleRewrite(l: Term, r: Term, c: Term) { - assert(c.sort == SortBool) - } - - type Terms = Seq[Term] - -} diff --git a/src/main/scala/org/kframework/km/rewrite.scala b/src/main/scala/org/kframework/km/rewrite.scala deleted file mode 100644 index 9d3b9ac..0000000 --- a/src/main/scala/org/kframework/km/rewrite.scala +++ /dev/null @@ -1,86 +0,0 @@ -package org.kframework.km - -import scala.collection.mutable - -class rewrite(val symbols: Seq[Seq[term.Symbol]]) { - - import term._ - import unification._ - import builtin._ - import outer._ - - val z3 = new z3(symbols) - - def applyRule(rule: SimpleRewrite, term: SimplePattern): Seq[SimplePattern] = { val cntRename = term.counter + 1 - // rule: l => r if c - lazy val l = rule.l.rename(cntRename) - lazy val r = rule.r.rename(cntRename) - lazy val c = rule.c.rename(cntRename) - // term: t /\ p - val t = term.term - val p = term.constraint - - unify(l,t) match { - case None => Seq() - case Some(u) => - val _p = p.subst(u.subst) - val _c = c.subst(u.subst) - val _p_c_u = BOOL.and(BOOL.and(_p, _c), and(u.constraint)) - - if (z3.sat(_p_c_u)) { - val _r = r.subst(u.subst) - Seq(SimplePattern(_r, _p_c_u, cntRename)) - } else { - Seq() - } - } - } - - def applyRules(rules: Seq[SimpleRewrite], term: SimplePattern): Seq[SimplePattern] = { - rules.flatMap(applyRule(_, term)) - } - - def searchDepth(depth: Int)(rules: Seq[SimpleRewrite], term: SimplePattern): Seq[SimplePattern] = { - def loop(depth: Int, currTerms: Seq[SimplePattern], normalTerms: Seq[SimplePattern]): (Seq[SimplePattern], Seq[SimplePattern]) = { - if (depth == 0 || currTerms.isEmpty) (currTerms, normalTerms) - else { - // TODO: more efficient and flexible way? - case class Next(terms: Seq[SimplePattern]) - case class Done(term: SimplePattern) - val nextTerms = currTerms.map(t => { - applyRules(rules,t) match { - case Seq() => Done(t) - case ts => Next(ts) - } - }) - val (newCurrTerms, newNormalTerms) = nextTerms.partition(_.isInstanceOf[Next]) - val _newCurrTerms = newCurrTerms.flatMap({case Next(ts) => ts}) - val _newNormalTerms = newNormalTerms.map({case Done(t) => t}) - loop(depth - 1, _newCurrTerms, normalTerms ++ _newNormalTerms) - } - } - val (currTerms, normalTerms) = loop(depth, Seq(term), Seq()) - currTerms ++ normalTerms - } - - def search(rules: Seq[SimpleRewrite], term: SimplePattern): Seq[SimplePattern] = { - searchDepth(-1)(rules, term) - } - - // [ (t1,t2), (u1,u2), ... ] => t1 = t2 /\ u1 = u2 /\ ... - def and(tts: Seq[(Term,Term)]): Term = { - tts.map({case (t1,t2) => eq(t1.sort)(t1,t2)}) - .foldLeft(BOOL(true).asInstanceOf[Term])((b,t) => BOOL.and(b,t)) - } - // TODO: not thread safe - private val eqs: mutable.Map[Sort, Symbol] = mutable.Map() - def eq(sort: Sort): Symbol = { - if (eqs.contains(sort)) eqs(sort) - else { - val symbol = BOOL.eq(sort) - eqs.put(sort, symbol) - symbol - } - } - -} diff --git a/src/main/scala/org/kframework/km/term.scala b/src/main/scala/org/kframework/km/term.scala deleted file mode 100644 index a553dad..0000000 --- a/src/main/scala/org/kframework/km/term.scala +++ /dev/null @@ -1,83 +0,0 @@ -package org.kframework.km - -object term { - - trait Symbol { - val name: String - val signature: Type - val isFunctional: Boolean - val smt: String - val smtBuiltin: Boolean - def apply(children: Term*): Term = applySeq(children.toSeq) - def applySeq(children: Seq[Term]): Term - override def toString: String = name - } - case class Constructor(name: String, signature: Type) extends Symbol { - val isFunctional: Boolean = false - val smt: String = name - val smtBuiltin: Boolean = false - def applySeq(children: Seq[Term]): Term = Application(this, children) - } - - sealed trait Term { - val sort: Sort - val isSymbolic: Boolean - val isFunctional: Boolean - def subst(m: Substitution): Term - def rename(cnt: Int) : Term - } - case class Application(symbol: Symbol, children: Seq[Term]) extends Term { - assert(symbol.signature._1 == children.map(_.sort)) - val sort: Sort = symbol.signature._2 - val isSymbolic: Boolean = children.exists(_.isSymbolic) - val isFunctional: Boolean = symbol.isFunctional - def subst(m: Substitution): Term = { - symbol.applySeq(children.map(_.subst(m))) // TODO: return this if no children are changed - } - def rename(cnt: Int): Term = { - symbol.applySeq(children.map(_.rename(cnt))) - } - override def toString: String = symbol + "(" + children.map(_.toString).mkString(",") + ")" - } - case class Variable(name: String, sort: Sort) extends Term { - val isSymbolic: Boolean = true - val isFunctional: Boolean = false - def subst(m: Substitution): Term = { - if (m.contains(this)) m(this) else this // TODO: m.getOrElse(this, this) - } - def rename(cnt: Int): Term = Variable(name + "!" + cnt, sort) - override def toString: String = name + ":" + sort.name - } - trait Constant extends Term { - val smt: String - override val isSymbolic: Boolean = false - override val isFunctional: Boolean = false - override def subst(m: Substitution): Term = this - override def rename(cnt: Int): Term = this - } - - type Substitution = Map[Variable, Term] - - type Type = Product2[Seq[Sort], Sort] - - sealed trait Sort { - val name: String - def smt: String = name - val smtBuiltin: Boolean - override def toString: String = name - } - case class SortOf(name: String) extends Sort { - val smtBuiltin: Boolean = false - } - case class SortMap(key: Sort, value: Sort) extends Sort { - val name: String = "Map{" + key.name + "," + value.name + "}" - override val smt: String = "(Array " + key.smt + " " + value.smt + ")" - val smtBuiltin: Boolean = true - } - case class SortList(elem: Sort) extends Sort { - val name: String = "List{" + elem.name + "}" - override val smt: String = "(List " + elem.smt + ")" - val smtBuiltin: Boolean = true - } - -} diff --git a/src/main/scala/org/kframework/km/unification.scala b/src/main/scala/org/kframework/km/unification.scala deleted file mode 100644 index aed6445..0000000 --- a/src/main/scala/org/kframework/km/unification.scala +++ /dev/null @@ -1,87 +0,0 @@ -package org.kframework.km - -import scala.util.control.ControlThrowable - -/* - Implemented the algorithm presented in: - Peter Norvig. Correcting a Widespread Error in Unification Algorithms. SPE. 1991. - http://dx.doi.org/10.1002/spe.4380210208 -*/ -object unification { - - import term._ - - case class Fail(t1: Term, t2: Term, u: Unifier) extends ControlThrowable - - case class Unifier(subst: Substitution, constraint: Seq[(Term,Term)]) - - def unify(t1: Term, t2: Term): Option[Unifier] = { - val u = Unifier(Map(), Seq()) - try { - Some(unifyTerm(t1, t2, u)) - } catch { - case e:Fail => None - } - } - - @throws(classOf[Fail]) - def unifyTerm(t1: Term, t2: Term, u: Unifier): Unifier = { - assert(t1.sort == t2.sort) - if (t1 == t2) u - else { - (t1, t2) match { - case (v1:Variable, _) => unifyVariable(v1, t2, u) - case (_, v2:Variable) => unifyVariable(v2, t1, u) - case (_, _) if t1.isFunctional || t2.isFunctional => - Unifier(u.subst, u.constraint :+ (t1,t2)) - case (Application(l1,ts1), Application(l2,ts2)) if l1 == l2 && ts1.size == ts2.size => - unifyTerms(ts1, ts2, u) - case _ => throw Fail(t1, t2, u) - } - } - } - - @throws(classOf[Fail]) - def unifyTerms(ts1: Seq[Term], ts2: Seq[Term], u: Unifier): Unifier = { - assert(ts1.size == ts2.size) - (ts1, ts2) match { - case (t1 +: ts1, t2 +: ts2) => - val _u = unifyTerm(t1, t2, u) - unifyTerms(ts1, ts2, _u) - case (Seq(), Seq()) => u - case _ => ??? - } - } - - @throws(classOf[Fail]) - def unifyVariable(v1: Variable, t2: Term, u: Unifier): Unifier = { - assert(v1.sort == t2.sort) - if (v1 == t2) u - else if (u.subst.contains(v1)) unifyTerm(u.subst(v1), t2, u) - else { - t2 match { - case v2:Variable if u.subst.contains(v2) => - unifyTerm(v1, u.subst(v2), u) - case _ => - if (occur(v1, t2, u)) throw Fail(v1, t2, u) - else Unifier(u.subst + (v1 -> t2), subst(u.constraint, Map(v1 -> t2))) // TODO: check if enough for constraint - } - } - } - - def occur(v1: Variable, t2: Term, u: Unifier): Boolean = { - t2 match { - case v2:Variable => - if (v1 == v2) true - else if (u.subst.contains(v2)) occur(v1, u.subst(v2), u) - else false - case Application(_, ts2) => ts2.exists(occur(v1,_,u)) - case _ => false - } - } - - def subst(constraint: Seq[(Term,Term)], subst: Substitution): Seq[(Term,Term)] = { - constraint.map({case (t1,t2) => (t1.subst(subst), t2.subst(subst))}) - } - -} diff --git a/src/main/scala/org/kframework/km/z3.scala b/src/main/scala/org/kframework/km/z3.scala deleted file mode 100644 index 8b6468d..0000000 --- a/src/main/scala/org/kframework/km/z3.scala +++ /dev/null @@ -1,116 +0,0 @@ -package org.kframework.km - -import scala.sys.process._ - -class z3(val symbolsSeq: Seq[Seq[term.Symbol]]) { - - import builtin._ - import term._ - - @throws(classOf[z3.Fail]) - def sat(term: Term): Boolean = term match { - case BOOL(true) => true - case BOOL(false) => false - case _ => satZ3(term) - } - - @throws(classOf[z3.Fail]) - def satZ3(term: Term): Boolean = { - val query = declare(term) + "\n(assert " + encode(term) + ")\n" + "(check-sat)\n" - val (exitValue, stdout, stderr) = z3.run(query) - if (exitValue == 0) stdout == "sat" - else throw z3.Fail(stdout + stderr) - } - - @throws(classOf[z3.Fail]) - def implies(t1: Term, t2: Term): Boolean = { - // t1 -> t2 valid iff t1 /\ !t2 unsat - !sat(BOOL.and(t1, BOOL.not(t2))) - } - - def encode(term: Term): String = term match { - case Application(symbol, Seq()) => symbol.smt - case Application(symbol, children) => "(" + symbol.smt + " " + children.map(encode).mkString(" ") + ")" - case Variable(name, _) => name - case c:Constant => c.smt - } - - def declare(term: Term): String = { - // gather functional symbols and variables, where variables are supposed to be encoded as constants - def getFunctionSymbols(term: Term): Set[Any] = term match { - case Application(symbol, children) => - val decls = children.flatMap(getFunctionSymbols).toSet - if (!symbol.smtBuiltin && symbol.isFunctional) decls + symbol - else decls - case _:Variable => Set(term) - case _:Constant => Set() - } - val symbols = getFunctionSymbols(term) - // function (i.e., non-constructor) symbols - // - variables and zero-argument symbols as `const` - // - non-zero-argument symbols as `fun` - val declareFuns: String = symbols.map({ - case Variable(name, sort) => "(declare-const " + name + " " + sort.smt + ")\n" - case sym:Symbol if sym.signature._1 == Seq() => "(declare-const " + sym.smt + " " + sym.signature._2.smt + ")\n" - case sym:Symbol => "(declare-fun " + sym.smt + " (" + sym.signature._1.map(_.smt).mkString(" ") + ") " + sym.signature._2.smt + ")\n" - }).mkString - // remaining sorts not defined by constructor datatypes - val sorts = symbols.flatMap({ - case symbol:Symbol => symbol.signature._1.toSet + symbol.signature._2 - case Variable(_, sort) => Set(sort) - }) - val declareSorts = (sorts -- datatypes) - .map(sort => if (sort.smtBuiltin) "" else "(declare-sort " + sort.smt + ")\n").mkString - declareSorts + declDatatypes + declareFuns - } - lazy val datatypes: Set[Sort] = symbolsSeq.flatMap(_.flatMap(s => s.signature._1.toSet + s.signature._2).toSet).toSet - lazy val declDatatypes: String = declareDatatypesSeq(symbolsSeq) - - // symbolsSeq: SCCs of symbols in topological order - def declareDatatypesSeq(symbolsSeq: Seq[Seq[Symbol]]): String = symbolsSeq.map(declareDatatypes).mkString - def declareDatatypes(symbols: Seq[Symbol]): String = { - "(declare-datatypes () (\n" + - symbols.filter(sym => !sym.isFunctional && !sym.smtBuiltin) - .groupBy(_.signature._2) - .map({case (sort, syms) => - " (" + sort.smt + "\n" + - syms.map(sym => - " (" + sym.smt + " " + sym.signature._1.zipWithIndex.map({case (s,i) => "(" + sym.smt + i + " " + s.smt + ")"}).mkString(" ") + ")\n" - ).mkString + - " )\n" - }).mkString + - "))\n" - } - -} - -object z3 { - - // TODO: set proper z3 path - private val z3 = "../z3/bin/z3" // "z3-4.5.0-x64-osx-10.11.6/bin/z3" - - val cmd = Seq(z3, "-smt2", "-in") - - def run(query: String): (Int, String, String) = { - val stdinJob: (java.io.OutputStream) => Unit = out => { - out.write(query.getBytes()) - out.close() - } - var stdout: String = "" - val stdoutJob: (java.io.InputStream) => Unit = in => { - stdout = scala.io.Source.fromInputStream(in).getLines.mkString("\n") - in.close() - } - var stderr: String = "" - val stderrJob: (java.io.InputStream) => Unit = in => { - stderr = scala.io.Source.fromInputStream(in).getLines.mkString("\n") - in.close() - } - val pio = new ProcessIO(stdinJob, stdoutJob, stderrJob) - val exitValue = Process(cmd).run(pio).exitValue() - (exitValue, stdout, stderr) - } - - case class Fail(msg: String) extends Exception - -} diff --git a/src/test/resources/basic.kore b/src/test/resources/basic.kore new file mode 100644 index 0000000..8e65c0b --- /dev/null +++ b/src/test/resources/basic.kore @@ -0,0 +1,847 @@ +[#MainModule(S("SEMANTICS")),#EntryModules(S("K-BOTTOM-SORT"),S("K-REFLECTION"),S("ID"),S("RULE-PARSER"),S("AUTO-CASTS"),S("KSEQ"),S("K-TERM"),S("INT-SYNTAX"),S("RULE-LISTS"),S("DEFAULT-CONFIGURATION"),S("KSEQ-SYMBOLIC"),S("DOMAINS-SYNTAX"),S("RULE-CELLS"),S("K-IO"),S("SET"),S("FLOAT-SYNTAX"),S("BOOL-SYNTAX"),S("AUTO-FOLLOW"),S("K-SORT-LATTICE"),S("KCELLS"),S("BASIC-SYNTAX"),S("STRING-SYNTAX"),S("BASIC-K"),S("K-EQUAL"),S("STDOUT-STREAM"),S("STRING"),S("STDIN-STREAM"),S("K-TOP-SORT"),S("DOMAINS"),S("INT"),S("REQUIRES-ENSURES"),S("LIST"),S("PROGRAM-LISTS"),S("LANGUAGE-PARSING"),S("SEMANTICS"),S("SORT-K"),S("ID-PROGRAM-PARSING"),S("BOOL"),S("KSTRING"),S("K"),S("BASIC"),S("CONFIG-CELLS"),S("MAP"),S("KAST")),syntaxModule(KString@KSTRING("BASIC-SYNTAX"))] + +module K-BOTTOM-SORT + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("143"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("143"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("146"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("146"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("144"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("144"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= KBott")),#(Location(Int@INT-SYNTAX("145"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("145"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("142"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("147"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-REFLECTION + import BASIC-K [] + import STRING [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" undefined")),#(Location(Int@INT-SYNTAX("532"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("532"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= getKLabel(K@SORT-K) [#Terminal(S("getKLabel")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),productionID(KString@KSTRING("442987331")),#(Location(Int@INT-SYNTAX("529"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("529"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("getKLabel")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("KREFLECTION.getKLabel")),klabel(AttributeValue("getKLabel"))] + syntax Bool@BOOL-SYNTAX ::= isList@K-REFLECTION(K@SORT-K) [#Terminal(S("isList@K-REFLECTION")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("List@K-REFLECTION")),klabel(KString@KSTRING("isList@K-REFLECTION"))] + axiom B("true") [#ModuleComment(S(" meaningful only for the purposes of compilation to a binary, otherwise")),#(Location(Int@INT-SYNTAX("531"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("531"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@K-REFLECTION ::= #argv() [#Terminal(S("#argv")),klabel(KString@KSTRING("#argv")),productionID(KString@KSTRING("1016550616")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("533"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("533"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("KREFLECTION.argv"))] + syntax K@SORT-K ::= #configuration() [#Terminal(S("#configuration")),klabel(KString@KSTRING("#configuration")),#(Location(Int@INT-SYNTAX("526"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("526"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("25536233")),impure(AttributeValue("")),hook(AttributeValue("KREFLECTION.configuration"))] + syntax String@STRING-SYNTAX ::= #sort(K@SORT-K) [#Terminal(S("#sort")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#sort")),productionID(KString@KSTRING("989892772")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("KREFLECTION.sort")),#(Location(Int@INT-SYNTAX("527"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("527"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#sort"))] + syntax KItem@BASIC-K ::= #fresh(String@STRING-SYNTAX) [#Terminal(S("#fresh")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("528"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("528"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("#fresh")),klabel(AttributeValue("#fresh")),impure(AttributeValue("")),hook(AttributeValue("KREFLECTION.fresh")),productionID(KString@KSTRING("1092004553"))] +endmodule [#(Location(Int@INT-SYNTAX("522"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("535"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module ID + import STRING [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= isId@ID(K@SORT-K) [#Terminal(S("isId@ID")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Id@ID")),klabel(KString@KSTRING("isId@ID"))] + syntax Id@ID ::= freshId(Int@INT-SYNTAX) [#Terminal(S("freshId")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("freshId")),function(AttributeValue("")),freshGenerator(AttributeValue("")),#(Location(Int@INT-SYNTAX("499"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("499"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1430439149")),klabel(AttributeValue("freshId"))] + rule \implies(isInt@INT-SYNTAX(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),\and(\rewrite(freshId(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),String2Id(`_+String_`(#(#(String@STRING-SYNTAX("\"_\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),Int2String(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Id@ID ::= String2Id(String@STRING-SYNTAX) [#Terminal(S("String2Id")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(AttributeValue("String2Id")),productionID(KString@KSTRING("18242360")),#(Location(Int@INT-SYNTAX("496"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("496"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("String2Id")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue(""))] + syntax Id@ID [#(Location(Int@INT-SYNTAX("493"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("493"),Int@INT-SYNTAX("11")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),\and(\rewrite(String2Id(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`#parseToken(_,_)`(#(#(String@STRING-SYNTAX("\"Id@ID\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Id2String(Id@ID) [#Terminal(S("Id2String")),#Terminal(S("(")),#NonTerminal(S("Id@ID")),#Terminal(S(")")),klabel(AttributeValue("Id2String")),klabel(KString@KSTRING("Id2String")),productionID(KString@KSTRING("757004314")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("STRING.token2string")),#(Location(Int@INT-SYNTAX("495"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("495"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("490"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("501"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-PARSER + import RULE-CELLS [] + import RULE-LISTS [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" imported in modules which generate rule parsers")),#(Location(Int@INT-SYNTAX("104"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("104"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" TODO: (radumereuta) don't use modules as markers to generate parsers")),#(Location(Int@INT-SYNTAX("105"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("105"),Int@INT-SYNTAX("74")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("101"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("106"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module AUTO-CASTS + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" Sort ::= K \":>Sort\"")),#(Location(Int@INT-SYNTAX("160"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("160"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("156"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("156"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("161"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("161"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" KBott ::= Sort \"<:Sort\"")),#(Location(Int@INT-SYNTAX("159"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("159"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= Sort \"::Sort\"")),#(Location(Int@INT-SYNTAX("157"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("157"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= Sort \":Sort\"")),#(Location(Int@INT-SYNTAX("158"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("158"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("155"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("155"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("154"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("162"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSEQ + import KAST [] + import K-TOP-SORT [] + import BOOL-SYNTAX [] + syntax KBott@BASIC-K ::= `(_)`(K@SORT-K) [#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),productionID(KString@KSTRING("1691538257")),#(Location(Int@INT-SYNTAX("63"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("(_)"))] + syntax KBott@BASIC-K ::= #KSequence(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("~>")),#NonTerminal(S("K@SORT-K")),assoc(AttributeValue("")),hook(AttributeValue("org.kframework.kore.KSequence")),productionID(KString@KSTRING("577405636")),klabel(KString@KSTRING("#KSequence")),unit(AttributeValue("#EmptyK")),klabel(AttributeValue("#KSequence")),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("61"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("61"),Int@INT-SYNTAX("114")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".")),klabel(AttributeValue("#EmptyK")),productionID(KString@KSTRING("905735620")),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("59"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#KSequence"))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".::K")),klabel(AttributeValue("#EmptyK")),#(Location(Int@INT-SYNTAX("60"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK")),productionID(KString@KSTRING("2145970759")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".K")),klabel(AttributeValue("#EmptyK")),productionID(KString@KSTRING("2011482127")),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK")),#(Location(Int@INT-SYNTAX("58"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("58"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("64"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-TERM + import AUTO-CASTS [] + import KSEQ-SYMBOLIC [] + import BOOL-SYNTAX [] + import AUTO-FOLLOW [] + import K-SORT-LATTICE [] +endmodule [#(Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module INT-SYNTAX + import BOOL-SYNTAX [] + syntax Int@INT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\+-]?[0-9]+"),S("#")),productionID(KString@KSTRING("388357135")),token(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("255"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("255"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("")),prefer(AttributeValue(""))] + syntax Int@INT-SYNTAX [hook(AttributeValue("INT.Int")),#(Location(Int@INT-SYNTAX("254"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("254"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isInt@INT-SYNTAX(K@SORT-K) [#Terminal(S("isInt@INT-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Int@INT-SYNTAX")),klabel(KString@KSTRING("isInt@INT-SYNTAX"))] +endmodule [#(Location(Int@INT-SYNTAX("253"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("256"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-LISTS + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("192"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("192"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= E [userList(\"*\")]")),#(Location(Int@INT-SYNTAX("194"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("194"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" adds the subsort production to the parsing module only:")),#(Location(Int@INT-SYNTAX("193"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("193"),Int@INT-SYNTAX("61")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("191"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("196"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DEFAULT-CONFIGURATION + import BASIC-K [] + import MAP [] + import BOOL-SYNTAX [] + syntax KCell@DEFAULT-CONFIGURATION ::= ``(K@SORT-K) [#Terminal(S("")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),cell(),topcell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),maincell(),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(""))] + syntax Bool@BOOL-SYNTAX ::= isKCell@DEFAULT-CONFIGURATION(K@SORT-K) [#Terminal(S("isKCell@DEFAULT-CONFIGURATION")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCell@DEFAULT-CONFIGURATION")),klabel(KString@KSTRING("isKCell@DEFAULT-CONFIGURATION"))] + rule \implies(isK@SORT-K(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\and(\rewrite(initKCell(Init:_),``(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + syntax KCell@DEFAULT-CONFIGURATION ::= initKCell(Map@MAP) [#Terminal(S("initKCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initKCell"))] + axiom B("true") [#Bubble(S("config"),S(" $PGM:K ")),#(Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),contentStartLine(Int@INT-SYNTAX("201")),contentStartColumn(Int@INT-SYNTAX("17"))] +endmodule [#(Location(Int@INT-SYNTAX("198"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("202"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSEQ-SYMBOLIC + import KSEQ [] + import BOOL-SYNTAX [] + syntax #KVariable@KSEQ-SYMBOLIC ::= ``() [#RegexTerminal(S("[A-Za-z0-9_\\$!\\?]"),S("(\\!|\\?)?([A-Z][A-Za-z0-9'_]*|_)"),S("#")),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("70"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("143")),classType(KString@KSTRING("org.kframework.attributes.Location"))),autoReject(AttributeValue("")),productionID(KString@KSTRING("158453976")),klabel(KString@KSTRING("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("org.kframework.kore.KVariable"))] + syntax KConfigVar@BASIC-K ::= ``() [#RegexTerminal(S("[A-Za-z0-9_\\$!\\?]"),S("(\\$)([A-Z][A-Za-z0-9'_]*)"),S("#")),productionID(KString@KSTRING("1371006431")),token(AttributeValue("")),autoReject(AttributeValue("")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("71"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("71"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #None(KConfigVar@BASIC-K) [#NonTerminal(S("KConfigVar@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("73"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("73"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("2075495587"))] + syntax KBott@BASIC-K ::= #None(#KVariable@KSEQ-SYMBOLIC) [#NonTerminal(S("#KVariable@KSEQ-SYMBOLIC")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("72"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("72"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1652149987"))] + syntax Bool@BOOL-SYNTAX ::= is#KVariable@KSEQ-SYMBOLIC(K@SORT-K) [#Terminal(S("is#KVariable@KSEQ-SYMBOLIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#KVariable@KSEQ-SYMBOLIC")),klabel(KString@KSTRING("is#KVariable@KSEQ-SYMBOLIC"))] + syntax KLabel@BASIC-K ::= #None(#KVariable@KSEQ-SYMBOLIC) [#NonTerminal(S("#KVariable@KSEQ-SYMBOLIC")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("74"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1300393335"))] +endmodule [#(Location(Int@INT-SYNTAX("68"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("75"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DOMAINS-SYNTAX + import INT-SYNTAX [] + import STRING-SYNTAX [] + import BOOL-SYNTAX [] + import ID [] +endmodule [#(Location(Int@INT-SYNTAX("4"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-CELLS + import KCELLS [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" a production like below:")),#(Location(Int@INT-SYNTAX("94"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("94"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax #OptionalDots@RULE-CELLS ::= #dots() [#Terminal(S("...")),productionID(KString@KSTRING("1587819720")),#(Location(Int@INT-SYNTAX("97"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("97"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#dots")),klabel(AttributeValue("#dots")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= is#OptionalDots@RULE-CELLS(K@SORT-K) [#Terminal(S("is#OptionalDots@RULE-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#OptionalDots@RULE-CELLS")),klabel(KString@KSTRING("is#OptionalDots@RULE-CELLS"))] + axiom B("true") [#ModuleComment(S(" generates, for all productions that have the attribute 'cell' or 'maincell',")),#(Location(Int@INT-SYNTAX("93"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("93"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("syntax Cell ::= \"\" #OptionalDots K #OptionalDots \"\" [klabel()]")),#(Location(Int@INT-SYNTAX("95"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax #OptionalDots@RULE-CELLS ::= #noDots() [#Terminal(S("")),klabel(AttributeValue("#noDots")),#(Location(Int@INT-SYNTAX("98"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#noDots")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1002191352"))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("92"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("90"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("99"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-IO + import STRING [] + import LIST [] + import BOOL-SYNTAX [] + syntax IOError@K-IO ::= #EINVAL() [#Terminal(S("#EINVAL")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("145"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("153")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("16503286")),klabel(KString@KSTRING("#EINVAL"))] + syntax KItem@BASIC-K ::= `#stat(_)`(String@STRING-SYNTAX) [#Terminal(S("#stat")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("555"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("555"),Int@INT-SYNTAX("75")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),impure(AttributeValue("")),productionID(KString@KSTRING("187472540")),klabel(KString@KSTRING("#stat(_)")),hook(AttributeValue("IO.stat"))] + syntax KItem@BASIC-K ::= #parse(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parse")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("221634215")),#(Location(Int@INT-SYNTAX("559"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("559"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#parse")),impure(AttributeValue("")),klabel(KString@KSTRING("#parse")),hook(AttributeValue("IO.parse"))] + syntax IOError@K-IO ::= #EOF() [#Terminal(S("#EOF")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("645482568")),klabel(KString@KSTRING("#EOF"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stdout(),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("572"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("572"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("572"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("572"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax IOError@K-IO ::= #ENOTDIR() [#Terminal(S("#ENOTDIR")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1073763441")),klabel(KString@KSTRING("#ENOTDIR"))] + syntax KItem@BASIC-K ::= #system(String@STRING-SYNTAX) [#Terminal(S("#system")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1665620686")),hook(AttributeValue("IO.system")),#(Location(Int@INT-SYNTAX("580"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("580"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("#system")),klabel(KString@KSTRING("#system")),impure(AttributeValue(""))] + syntax Int@INT-SYNTAX ::= `#tell(_)`(Int@INT-SYNTAX) [#Terminal(S("#tell")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("#tell(_)")),productionID(KString@KSTRING("615438348")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.tell")),#(Location(Int@INT-SYNTAX("545"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("545"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),impure(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" module name")),#(Location(Int@INT-SYNTAX("562"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("562"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax IOError@K-IO ::= #ENAMETOOLONG() [#Terminal(S("#ENAMETOOLONG")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1229161065")),klabel(KString@KSTRING("#ENAMETOOLONG"))] + axiom B("true") [#ModuleComment(S(" start symbol")),#(Location(Int@INT-SYNTAX("561"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("561"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `#putc(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#putc")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1792550665")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.putc")),impure(AttributeValue("")),klabel(KString@KSTRING("#putc(_,_)")),#(Location(Int@INT-SYNTAX("552"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("552"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" System")),#(Location(Int@INT-SYNTAX("578"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("578"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= `#read(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#read")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("#read(_,_)")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1170727939")),#(Location(Int@INT-SYNTAX("548"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("548"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),impure(AttributeValue("")),hook(AttributeValue("IO.read"))] + syntax KItem@BASIC-K ::= `#lstat(_)`(String@STRING-SYNTAX) [#Terminal(S("#lstat")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1276611190")),hook(AttributeValue("IO.lstat")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("556"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("556"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),impure(AttributeValue("")),klabel(KString@KSTRING("#lstat(_)"))] + syntax IOError@K-IO ::= #EBADF() [#Terminal(S("#EBADF")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("110"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("117")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("195228908")),klabel(KString@KSTRING("#EBADF"))] + syntax K@SORT-K ::= `#close(_)`(Int@INT-SYNTAX) [#Terminal(S("#close")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("#close(_)")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.close")),productionID(KString@KSTRING("1709804316")),impure(AttributeValue("")),#(Location(Int@INT-SYNTAX("550"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("550"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax IOError@K-IO ::= #noparse() [#Terminal(S("#noparse")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("807752428")),klabel(KString@KSTRING("#noparse"))] + syntax K@SORT-K ::= `#write(_,_)`(Int@INT-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#write")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("553"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("553"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.write")),klabel(KString@KSTRING("#write(_,_)")),productionID(KString@KSTRING("1359953204")),impure(AttributeValue(""))] + syntax Int@INT-SYNTAX ::= `#open(_)`(String@STRING-SYNTAX) [#Terminal(S("#open")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("543"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("543"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("606508809")),klabel(KString@KSTRING("#open(_)"))] + syntax K@SORT-K ::= `#seek(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#seek")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1630678941")),#(Location(Int@INT-SYNTAX("551"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("551"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("#seek(_,_)")),hook(AttributeValue("IO.seek")),impure(AttributeValue(""))] + syntax IOError@K-IO ::= #ENOENT() [#Terminal(S("#ENOENT")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1026055550")),klabel(KString@KSTRING("#ENOENT"))] + syntax KItem@BASIC-K ::= `#systemResult(_,_,_)`(Int@INT-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#systemResult")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("110")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1233705144")),klabel(KString@KSTRING("#systemResult(_,_,_)"))] + syntax Int@INT-SYNTAX ::= #stdin() [#Terminal(S("#stdin")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("567"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("567"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("#stdin")),productionID(KString@KSTRING("770947228"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stdin(),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("571"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("571"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("571"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("571"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" stderr ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" ------------------------------")),#(Location(Int@INT-SYNTAX("577"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("577"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" input")),#(Location(Int@INT-SYNTAX("560"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("560"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `#getc(_)`(Int@INT-SYNTAX) [#Terminal(S("#getc")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("546"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("546"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("978508707")),function(AttributeValue("")),klabel(KString@KSTRING("#getc(_)")),hook(AttributeValue("IO.getc")),impure(AttributeValue(""))] + rule \implies(isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),\and(\rewrite(`#open(_)`(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`#open(_,_)`(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"rw\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #buffer(K@SORT-K) [#Terminal(S("#buffer")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),productionID(KString@KSTRING("1867139015")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#buffer")),klabel(AttributeValue("#buffer")),#(Location(Int@INT-SYNTAX("575"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("575"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax IOError@K-IO ::= #EACCES() [#Terminal(S("#EACCES")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("69"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("752316209")),klabel(KString@KSTRING("#EACCES"))] + syntax Int@INT-SYNTAX ::= #getTime() [#Terminal(S("#getTime")),hook(AttributeValue("IO.getTime")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("547"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("547"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("710708543")),impure(AttributeValue("")),klabel(KString@KSTRING("#getTime"))] + syntax Int@INT-SYNTAX ::= #stderr() [#Terminal(S("#stderr")),#(Location(Int@INT-SYNTAX("569"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("569"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#stderr")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1882349076"))] + axiom B("true") [#ModuleComment(S(" stdout ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("71"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `#open(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#open")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),hook(AttributeValue("IO.open")),klabel(KString@KSTRING("#open(_,_)")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),impure(AttributeValue("")),productionID(KString@KSTRING("718187988")),#(Location(Int@INT-SYNTAX("544"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("544"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= isStream@K-IO(K@SORT-K) [#Terminal(S("isStream@K-IO")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Stream@K-IO")),klabel(KString@KSTRING("isStream@K-IO"))] + syntax Bool@BOOL-SYNTAX ::= isIOError@K-IO(K@SORT-K) [#Terminal(S("isIOError@K-IO")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("IOError@K-IO")),klabel(KString@KSTRING("isIOError@K-IO"))] + syntax KItem@BASIC-K ::= `#opendir(_)`(String@STRING-SYNTAX) [#Terminal(S("#opendir")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.opendir")),impure(AttributeValue("")),#(Location(Int@INT-SYNTAX("557"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("557"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("262457445")),klabel(KString@KSTRING("#opendir(_)"))] + syntax IOError@K-IO ::= #ESPIPE() [#Terminal(S("#ESPIPE")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("471579726")),klabel(KString@KSTRING("#ESPIPE"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stderr(),#(#(Int@INT-SYNTAX("2"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("573"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("573"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("573"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("573"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax IOError@K-IO ::= #EISDIR() [#Terminal(S("#EISDIR")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("133"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("141")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1442726378")),klabel(KString@KSTRING("#EISDIR"))] + syntax IOError@K-IO ::= #ELOOP() [#Terminal(S("#ELOOP")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("88")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("914356853")),klabel(KString@KSTRING("#ELOOP"))] + axiom B("true") [#ModuleComment(S(" exit code ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= #stdout() [#Terminal(S("#stdout")),#(Location(Int@INT-SYNTAX("568"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("568"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("#stdout")),productionID(KString@KSTRING("590646109"))] + syntax KItem@BASIC-K ::= #parseInModule(String@STRING-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseInModule")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(AttributeValue("#parseInModule")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.parseInModule")),productionID(KString@KSTRING("1816147548")),#(Location(Int@INT-SYNTAX("560"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("563"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#parseInModule")),impure(AttributeValue(""))] +endmodule [#(Location(Int@INT-SYNTAX("537"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("583"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module SET + import INT-SYNTAX [] + import BASIC-K [] + import BOOL-SYNTAX [] + syntax Set@SET ::= `(_)`(Set@SET) [#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),productionID(KString@KSTRING("1907431275")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("102"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("102"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax Set@SET ::= _Set_(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#NonTerminal(S("Set@SET")),assoc(AttributeValue("")),klabel(KString@KSTRING("_Set_")),productionID(KString@KSTRING("436532993")),unit(AttributeValue(".Set")),idem(AttributeValue("")),comm(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),klabel(AttributeValue("_Set_")),element(AttributeValue("SetItem")),#(Location(Int@INT-SYNTAX("98"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("SET.concat"))] + axiom B("true") [#ModuleComment(S(" Get an arbitrarily chosen element of the Set ")),#(Location(Int@INT-SYNTAX("123"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the cardinality of a set ($|A|$) ")),#(Location(Int@INT-SYNTAX("120"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("120"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Check element membership in a set ($a \\in A$) ")),#(Location(Int@INT-SYNTAX("114"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("114"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET ::= `Set:difference`(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#Terminal(S("-Set")),#NonTerminal(S("Set@SET")),klabel(AttributeValue("Set:difference")),productionID(KString@KSTRING("1831477404")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("112"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("112"),Int@INT-SYNTAX("126")),classType(KString@KSTRING("org.kframework.attributes.Location"))),latex(AttributeValue("{#1}-_{\\it Set}{#2}")),function(AttributeValue("")),klabel(KString@KSTRING("Set:difference")),hook(AttributeValue("SET.difference"))] + syntax Bool@BOOL-SYNTAX ::= `Set:in`(K@SORT-K,Set@SET) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in")),#NonTerminal(S("Set@SET")),productionID(KString@KSTRING("511717113")),hook(AttributeValue("SET.in")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("115"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("115"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("Set:in")),relativeHook(AttributeValue("_Set_.in")),klabel(KString@KSTRING("Set:in"))] + axiom B("true") [#ModuleComment(S("rule S1:Set -Set (SetItem(K:K) S2:Set) => S1 -Set S2")),#(Location(Int@INT-SYNTAX("128"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("128"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" TODO(AndreiS): remove this if not used")),#(Location(Int@INT-SYNTAX("127"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("127"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("| \".\"")),#(Location(Int@INT-SYNTAX("101"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("101"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `Set:choice`(Set@SET) [#Terminal(S("choice")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),productionID(KString@KSTRING("1019384604")),klabel(AttributeValue("Set:choice")),klabel(KString@KSTRING("Set:choice")),hook(AttributeValue("SET.choice")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("124"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("124"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Construct a new Set as the union of two different sets ($A \\cup B$) ")),#(Location(Int@INT-SYNTAX("97"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("97"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET [hook(AttributeValue("SET.Set")),#(Location(Int@INT-SYNTAX("92"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_<=Set_`(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#Terminal(S("<=Set")),#NonTerminal(S("Set@SET")),#(Location(Int@INT-SYNTAX("118"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("118"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("SET.inclusion")),function(AttributeValue("")),productionID(KString@KSTRING("1237550792")),klabel(KString@KSTRING("_<=Set_"))] + syntax Bool@BOOL-SYNTAX ::= isSet@SET(K@SORT-K) [#Terminal(S("isSet@SET")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Set@SET")),klabel(KString@KSTRING("isSet@SET"))] + axiom B("true") [#ModuleComment(S(" Get the intersection of two sets ($A \\cap B$) ")),#(Location(Int@INT-SYNTAX("108"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("108"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" \\section{Description} The Set represents a mathematical set (a collection\n of unique items). ")),#(Location(Int@INT-SYNTAX("94"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a singleton Set (a Set with only one element $\\{ a \\}$). To add\n an element $a$ to a set $A$, construct the union of the singleton set\n $\\{ a \\}$ and $A$ ($\\{ a \\} \\cup A$). ")),#(Location(Int@INT-SYNTAX("103"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("105"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("requires notBool(K in S1)")),#(Location(Int@INT-SYNTAX("129"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("129"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_Set_"))] + axiom B("true") [#ModuleComment(S(" Check set inclusion ($A \\subseteq B$) ")),#(Location(Int@INT-SYNTAX("117"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("117"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= size(Set@SET) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),hook(AttributeValue("SET.size")),klabel(AttributeValue("size")),klabel(KString@KSTRING("size")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("517052730")),#(Location(Int@INT-SYNTAX("121"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Set@SET ::= .Set() [#Terminal(S(".Set")),latex(AttributeValue("\\dotCt{Set}")),klabel(KString@KSTRING(".Set")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("SET.unit")),function(AttributeValue("")),productionID(KString@KSTRING("1457410641")),#(Location(Int@INT-SYNTAX("100"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("100"),Int@INT-SYNTAX("88")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S("rule S:Set -Set .Set => S")),#(Location(Int@INT-SYNTAX("130"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("130"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" set difference axioms ")),#(Location(Int@INT-SYNTAX("126"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("126"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the difference of two sets ($A \\setminus B$)")),#(Location(Int@INT-SYNTAX("111"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET ::= SetItem(K@SORT-K) [#Terminal(S("SetItem")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("SetItem")),productionID(KString@KSTRING("98394724")),hook(AttributeValue("SET.element")),klabel(KString@KSTRING("SetItem")),#(Location(Int@INT-SYNTAX("106"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("106"),Int@INT-SYNTAX("71")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Set@SET ::= intersectSet(Set@SET,Set@SET) [#Terminal(S("intersectSet")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(",")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),hook(AttributeValue("SET.intersection")),klabel(AttributeValue("intersectSet")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("2129221032")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("109"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("109"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("intersectSet"))] + axiom B("true") [#ModuleComment(S(" Construct an empty Set ")),#(Location(Int@INT-SYNTAX("99"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("99"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("87"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module FLOAT-SYNTAX + import BOOL-SYNTAX [] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\+\\-]?Infinity([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),productionID(KString@KSTRING("1390869998")),token(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("322"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("322"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("([\\+\\-]?[0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][\\+\\-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+))?([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),token(AttributeValue("")),productionID(KString@KSTRING("496729294")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("321"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("321"),Int@INT-SYNTAX("147")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("NaN([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),token(AttributeValue("")),productionID(KString@KSTRING("2141817446")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("323"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("323"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING(""))] + syntax Float@FLOAT-SYNTAX [hook(AttributeValue("FLOAT.Float")),#(Location(Int@INT-SYNTAX("320"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("320"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isFloat@FLOAT-SYNTAX(K@SORT-K) [#Terminal(S("isFloat@FLOAT-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Float@FLOAT-SYNTAX")),klabel(KString@KSTRING("isFloat@FLOAT-SYNTAX"))] +endmodule [#(Location(Int@INT-SYNTAX("319"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("324"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BOOL-SYNTAX + import SORT-K [] + syntax Bool@BOOL-SYNTAX ::= isK@SORT-K(K@SORT-K) [#Terminal(S("isK@SORT-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("K@SORT-K")),klabel(KString@KSTRING("isK@SORT-K"))] + syntax Bool@BOOL-SYNTAX ::= isBool@BOOL-SYNTAX(K@SORT-K) [#Terminal(S("isBool@BOOL-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bool@BOOL-SYNTAX")),klabel(KString@KSTRING("isBool@BOOL-SYNTAX"))] + syntax Bool@BOOL-SYNTAX [hook(AttributeValue("BOOL.Bool")),#(Location(Int@INT-SYNTAX("196"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("196"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= true() [#Terminal(S("true")),token(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("197"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("197"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("76432244")),klabel(KString@KSTRING("true"))] + syntax Bool@BOOL-SYNTAX ::= false() [#Terminal(S("false")),productionID(KString@KSTRING("1010931249")),token(AttributeValue("")),klabel(KString@KSTRING("false")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("198"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("198"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("193"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("199"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module AUTO-FOLLOW + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" generates a follow restriction for every terminal which is a prefix")),#(Location(Int@INT-SYNTAX("166"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("166"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" #parse(\"ab\", \"K\")")),#(Location(Int@INT-SYNTAX("172"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("172"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= K K")),#(Location(Int@INT-SYNTAX("171"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("171"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"b\"")),#(Location(Int@INT-SYNTAX("169"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("169"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" of another terminal. This is useful to prevent ambiguities such as:")),#(Location(Int@INT-SYNTAX("167"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" In the above example, the terminal \"a\" is not allowed to be followed by a \"b\"")),#(Location(Int@INT-SYNTAX("173"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("173"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"a\"")),#(Location(Int@INT-SYNTAX("168"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("168"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"ab\"")),#(Location(Int@INT-SYNTAX("170"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("170"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" because it would turn the terminal into the terminal \"ab\".")),#(Location(Int@INT-SYNTAX("174"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("174"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("165"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("165"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("164"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("175"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-SORT-LATTICE + import K-TOP-SORT [] + import K-BOTTOM-SORT [] + import BOOL-SYNTAX [] +endmodule [#(Location(Int@INT-SYNTAX("149"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("152"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KCELLS + import KAST [] + import BOOL-SYNTAX [] + syntax Bag@KCELLS ::= #None(Cell@KCELLS) [#NonTerminal(S("Cell@KCELLS")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("84"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("364604394"))] + syntax Bag@KCELLS ::= #cells() [#Terminal(S(".::Bag")),klabel(KString@KSTRING("#cells")),#(Location(Int@INT-SYNTAX("83"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("83"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cells")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("341748265"))] + syntax Bag@KCELLS ::= #cells() [#Terminal(S(".Bag")),klabel(KString@KSTRING("#cells")),#(Location(Int@INT-SYNTAX("82"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("82"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cells")),productionID(KString@KSTRING("1663619914")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #None(Bag@KCELLS) [#NonTerminal(S("Bag@KCELLS")),#(Location(Int@INT-SYNTAX("86"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("86"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("107456312"))] + syntax Bag@KCELLS ::= #None(KBott@BASIC-K) [#NonTerminal(S("KBott@BASIC-K")),#(Location(Int@INT-SYNTAX("87"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("87"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1426329391"))] + syntax Bag@KCELLS ::= #cells(Bag@KCELLS,Bag@KCELLS) [#NonTerminal(S("Bag@KCELLS")),#NonTerminal(S("Bag@KCELLS")),assoc(AttributeValue("")),#(Location(Int@INT-SYNTAX("81"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("69")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#cells")),left(AttributeValue("")),productionID(KString@KSTRING("592959754")),unit(AttributeValue("#cells")),klabel(AttributeValue("#cells")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isBag@KCELLS(K@SORT-K) [#Terminal(S("isBag@KCELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bag@KCELLS")),klabel(KString@KSTRING("isBag@KCELLS"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#cells"))] + syntax Cell@KCELLS [#(Location(Int@INT-SYNTAX("80"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("80"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bag@KCELLS ::= `(_)`(Bag@KCELLS) [#Terminal(S("(")),#NonTerminal(S("Bag@KCELLS")),#Terminal(S(")")),productionID(KString@KSTRING("48914743")),#(Location(Int@INT-SYNTAX("85"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("85"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("(_)"))] + syntax Bool@BOOL-SYNTAX ::= isCell@KCELLS(K@SORT-K) [#Terminal(S("isCell@KCELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Cell@KCELLS")),klabel(KString@KSTRING("isCell@KCELLS"))] +endmodule [#(Location(Int@INT-SYNTAX("77"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("88"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BASIC-SYNTAX + import DOMAINS-SYNTAX [] + import BOOL-SYNTAX [] + axiom B("true") [#Context(``(``(#kseq(`_+_`(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil())))),_andBool_(isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),left(AttributeValue("")),strict(AttributeValue("")),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + axiom B("true") [#Context(``(``(#kseq(`_+_`(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil())))),_andBool_(isExp@BASIC-SYNTAX(#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),left(AttributeValue("")),strict(AttributeValue("")),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_+_"))] + syntax Bool@BOOL-SYNTAX ::= isExp@BASIC-SYNTAX(K@SORT-K) [#Terminal(S("isExp@BASIC-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Exp@BASIC-SYNTAX")),klabel(KString@KSTRING("isExp@BASIC-SYNTAX"))] + syntax Exp@BASIC-SYNTAX ::= `_+_`(Exp@BASIC-SYNTAX,Exp@BASIC-SYNTAX) [#NonTerminal(S("Exp@BASIC-SYNTAX")),#Terminal(S("+")),#NonTerminal(S("Exp@BASIC-SYNTAX")),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),left(AttributeValue("")),strict(AttributeValue("")),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + syntax Exp@BASIC-SYNTAX ::= #None(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("2"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("2"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1250142026"))] +endmodule [#(Location(Int@INT-SYNTAX("1"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STRING-SYNTAX + import BASIC-K [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= isString@STRING-SYNTAX(K@SORT-K) [#Terminal(S("isString@STRING-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("String@STRING-SYNTAX")),klabel(KString@KSTRING("isString@STRING-SYNTAX"))] + axiom B("true") [#ModuleComment(S(" | [\\\\][u] 4*Hex // \"\\uFFFF\" Backslash 'u' followed by four hexadecimal characters")),#(Location(Int@INT-SYNTAX("401"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("401"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" StringChar ::= ~[\\\"\\n\\r\\\\] // anything except for Newline, DoubleQuote and Backslash")),#(Location(Int@INT-SYNTAX("398"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("398"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" // the code must not be in the range [0xdfff, 0xd800] or exceed 0x10ffff")),#(Location(Int@INT-SYNTAX("403"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("403"),Int@INT-SYNTAX("107")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" DoubleQuote StringChar* DoubleQuote")),#(Location(Int@INT-SYNTAX("397"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("397"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Double Quoted Strings are of the form:")),#(Location(Int@INT-SYNTAX("396"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("396"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX [hook(AttributeValue("STRING.String")),#(Location(Int@INT-SYNTAX("404"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("404"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\\"](([^\\\"\n\r\\\\])|([\\\\][nrtf\\\"\\\\])|([\\\\][x][0-9a-fA-F]{2})|([\\\\][u][0-9a-fA-F]{4})|([\\\\][U][0-9a-fA-F]{8}))*[\\\"]"),S("#")),token(AttributeValue("")),productionID(KString@KSTRING("112049309")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("405"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("405"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING(""))] + axiom B("true") [#ModuleComment(S(" | [\\\\][nrtf\\\"\\\\] // Backslash followed by either 'nrtf', DoubleQuote or Backslash")),#(Location(Int@INT-SYNTAX("399"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("399"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | [\\\\][U] 8*Hex // \"\\UFFffFFff\" Backslash 'U' followed by eight hexadecimal characters")),#(Location(Int@INT-SYNTAX("402"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("402"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | [\\\\][x] 2*Hex // \"\\xFF\" Backslash 'x' followed by two hexadecimal characters")),#(Location(Int@INT-SYNTAX("400"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("400"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("393"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("406"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BASIC-K + import SORT-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" used by the backend")),#(Location(Int@INT-SYNTAX("22"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KLabel@BASIC-K ::= #SemanticCastToKLabel@BASIC-K(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKLabel@BASIC-K"))] + syntax KList@BASIC-K ::= #SemanticCastToKList@BASIC-K(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKList@BASIC-K"))] + syntax Bool@BOOL-SYNTAX ::= isKBott@BASIC-K(K@SORT-K) [#Terminal(S("isKBott@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KBott@BASIC-K")),klabel(KString@KSTRING("isKBott@BASIC-K"))] + syntax KLabel@BASIC-K ::= #OuterCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":>KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KList@BASIC-K ::= #SemanticCastToKList@BASIC-K(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKList@BASIC-K"))] + syntax KList@BASIC-K ::= #OuterCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":>KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax K@SORT-K ::= #SyntacticCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("::K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax K@SORT-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KItem@BASIC-K ::= #SyntacticCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("::KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + axiom B("true") [#ModuleComment(S(" here will be automatically added the casts for KLabel, KItem, K and KList")),#(Location(Int@INT-SYNTAX("20"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isBottom@BASIC-K(K@SORT-K) [#Terminal(S("isBottom@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bottom@BASIC-K")),klabel(KString@KSTRING("isBottom@BASIC-K"))] + syntax K@SORT-K ::= #SemanticCastToK@SORT-K(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SemanticCastToK@SORT-K"))] + syntax KLabel@BASIC-K [#(Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isKLabel@BASIC-K(K@SORT-K) [#Terminal(S("isKLabel@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KLabel@BASIC-K")),klabel(KString@KSTRING("isKLabel@BASIC-K"))] + syntax KLabel@BASIC-K ::= #OuterCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":>KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KLabel@BASIC-K ::= #SyntacticCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("::KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KList@BASIC-K ::= #InnerCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("<:KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax Bool@BOOL-SYNTAX ::= isMetaVariable@BASIC-K(K@SORT-K) [#Terminal(S("isMetaVariable@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("MetaVariable@BASIC-K")),klabel(KString@KSTRING("isMetaVariable@BASIC-K"))] + syntax K@SORT-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KConfigVar@BASIC-K [#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax MetaVariable@BASIC-K [#(Location(Int@INT-SYNTAX("23"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= #SemanticCastToKItem@BASIC-K(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S(":KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKItem@BASIC-K"))] + syntax KLabel@BASIC-K ::= #InnerCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("<:KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KList@BASIC-K [#(Location(Int@INT-SYNTAX("18"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= #SyntacticCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("::KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KLabel@BASIC-K ::= #SyntacticCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("::KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KBott@BASIC-K [#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #SyntacticCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("::KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KItem@BASIC-K [hook(AttributeValue("K.KItem")),#(Location(Int@INT-SYNTAX("14"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #InnerCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("<:KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax Bool@BOOL-SYNTAX ::= isKItem@BASIC-K(K@SORT-K) [#Terminal(S("isKItem@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KItem@BASIC-K")),klabel(KString@KSTRING("isKItem@BASIC-K"))] + syntax KList@BASIC-K ::= #SyntacticCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("::KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax Bool@BOOL-SYNTAX ::= isKResult@BASIC-K(K@SORT-K) [#Terminal(S("isKResult@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KResult@BASIC-K")),klabel(KString@KSTRING("isKResult@BASIC-K"))] + syntax K@SORT-K ::= #SyntacticCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("::K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax K@SORT-K ::= #SemanticCastToK@SORT-K(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SemanticCastToK@SORT-K"))] + syntax Bool@BOOL-SYNTAX ::= isKList@BASIC-K(K@SORT-K) [#Terminal(S("isKList@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KList@BASIC-K")),klabel(KString@KSTRING("isKList@BASIC-K"))] + syntax KBott@BASIC-K ::= #InnerCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("<:K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KLabel@BASIC-K ::= #SemanticCastToKLabel@BASIC-K(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKLabel@BASIC-K"))] + syntax K@SORT-K ::= #None(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("15"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1795960102"))] + syntax KBott@BASIC-K ::= #InnerCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("<:K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KItem@BASIC-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KLabel@BASIC-K ::= #InnerCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("<:KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KItem@BASIC-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax Bool@BOOL-SYNTAX ::= isKConfigVar@BASIC-K(K@SORT-K) [#Terminal(S("isKConfigVar@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KConfigVar@BASIC-K")),klabel(KString@KSTRING("isKConfigVar@BASIC-K"))] + syntax Bottom@BASIC-K [#(Location(Int@INT-SYNTAX("24"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #OuterCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":>KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KItem@BASIC-K ::= #SemanticCastToKItem@BASIC-K(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S(":KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKItem@BASIC-K"))] + syntax KResult@BASIC-K [#(Location(Int@INT-SYNTAX("19"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #InnerCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("<:KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KList@BASIC-K ::= #InnerCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("<:KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] +endmodule [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-EQUAL + import BOOL [] + import BASIC-K [] + import BOOL-SYNTAX [] + rule \implies(_andBool_(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),isK@SORT-K(#(_11:_,sort(String@STRING-SYNTAX("K@SORT-K"))))),\and(\rewrite(#if_#then_#else_#fi(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(_11:_,sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_=/=K_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("=/=K")),#NonTerminal(S("K@SORT-K")),productionID(KString@KSTRING("275266973")),hook(AttributeValue("KEQUAL.ne")),klabel(KString@KSTRING("_=/=K_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),smtlib(AttributeValue("distinct")),latex(AttributeValue("{#1}\\mathrel{\\neq_K}{#2}")),notEqualEqualK(AttributeValue("")),#(Location(Int@INT-SYNTAX("509"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("509"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_=/=K_"),S("_==K_")),#SyntaxPriorityGroup(S("_orElseBool_"),S("_orBool_"),S("_andThenBool_"),S("_impliesBool_"),S("_andBool_"),S("notBool_"),S("_xorBool_")))] + rule \implies(_andBool_(isK@SORT-K(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),isK@SORT-K(#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))))),\and(\rewrite(`_=/=K_`(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),notBool_(`_==K_`(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),isK@SORT-K(#(_10:_,sort(String@STRING-SYNTAX("K@SORT-K"))))),\and(\rewrite(#if_#then_#else_#fi(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_10:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_==K_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("==K")),#NonTerminal(S("K@SORT-K")),klabel(KString@KSTRING("_==K_")),smtlib(AttributeValue("=")),hook(AttributeValue("KEQUAL.eq")),#(Location(Int@INT-SYNTAX("508"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("508"),Int@INT-SYNTAX("121")),classType(KString@KSTRING("org.kframework.attributes.Location"))),equalEqualK(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),latex(AttributeValue("{#1}\\mathrel{=_K}{#2}")),productionID(KString@KSTRING("522553046"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=K_"),S("_==K_"))] + rule \implies(_andBool_(isBool@BOOL-SYNTAX(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),isBool@BOOL-SYNTAX(#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\and(\rewrite(`_==Bool_`(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),`_==K_`(#(#(#(K1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(K2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #if_#then_#else_#fi(Bool@BOOL-SYNTAX,K@SORT-K,K@SORT-K) [#Terminal(S("#if")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("#then")),#NonTerminal(S("K@SORT-K")),#Terminal(S("#else")),#NonTerminal(S("K@SORT-K")),#Terminal(S("#fi")),hook(AttributeValue("KEQUAL.ite")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("516"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("516"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1732502545")),klabel(KString@KSTRING("#if_#then_#else_#fi"))] +endmodule [#(Location(Int@INT-SYNTAX("503"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("520"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STDOUT-STREAM + import K-IO [] + import MAP [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" Send first char from the buffer to the server")),#(Location(Int@INT-SYNTAX("726"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("726"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(isList@LIST(#(_27:_,sort(String@STRING-SYNTAX("List@LIST")))),isInt@INT-SYNTAX(#(_25:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isInt@INT-SYNTAX(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_25:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_26:_)),ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),ListItem(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),#(_27:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_25:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_26:_)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Int2String(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))))),.List()),#(_27:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("706"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("714"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isString@STRING-SYNTAX(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\and(\rewrite(``(``(#KSequence(initStdoutCell(Init:_),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#ostream(#stdout())),ListItem(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isList@LIST(#(_31:_,sort(String@STRING-SYNTAX("List@LIST"))))),isInt@INT-SYNTAX(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),#(#(`_=/=String_`(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("735"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#ostream(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("730"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("730"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#(_31:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#ostream(#KSequence(`#write(_,_)`(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("730"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("730"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("731"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("731"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_31:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("728"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("735"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S("configuration ListItem(#ostream(#stderr)) ListItem($IO:String) ListItem(#buffer(\"\")) ")),#(Location(Int@INT-SYNTAX("693"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("693"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isList@LIST(#(_34:_,sort(String@STRING-SYNTAX("List@LIST"))))),isInt@INT-SYNTAX(#(_32:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_32:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_33:_)),ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),ListItem(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(_34:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_32:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_33:_)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))))),.List()),#(_34:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("716"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("724"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + syntax StdoutCell@STDOUT-STREAM ::= initStdoutCell(Map@MAP) [#Terminal(S("initStdoutCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initStdoutCell"))] + syntax Bool@BOOL-SYNTAX ::= isStdoutCell@STDOUT-STREAM(K@SORT-K) [#Terminal(S("isStdoutCell@STDOUT-STREAM")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StdoutCell@STDOUT-STREAM")),klabel(KString@KSTRING("isStdoutCell@STDOUT-STREAM"))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("723"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("723"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("703"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("703"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("713"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("713"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("\n syntax Stream ::= \"#noIO\"\n\n rule ListItem(#buffer(Buffer:String => Buffer +String Float2String(F)))\n (ListItem(F:Float) => .List)\n _:List [stdout, stderr]\n rule ListItem(#buffer(Buffer:String => Buffer +String Int2String(I)))\n (ListItem(I:Int) => .List)\n _:List [stdout, stderr]\n rule ListItem(#buffer(Buffer:String => Buffer +String S))\n (ListItem(S:String) => .List)\n _:List [stdout, stderr]\n\n rule (ListItem(#ostream(_:Int)) ListItem(#noIO) => .List)\n ListItem(#buffer(_))\n _:List [stdout, stderr]\n ")),#(Location(Int@INT-SYNTAX("737"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("753"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #ostream(Int@INT-SYNTAX) [#Terminal(S("#ostream")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("690"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("690"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#ostream")),klabel(AttributeValue("#ostream")),productionID(KString@KSTRING("1239807799"))] + rule \implies(_andBool_(_andBool_(_andBool_(isInt@INT-SYNTAX(#(_28:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),isFloat@FLOAT-SYNTAX(#(#(#(F:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isList@LIST(#(_30:_,sort(String@STRING-SYNTAX("List@LIST"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_28:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_29:_)),ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),ListItem(#(#(#(F:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX"))))),#(_30:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_28:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_29:_)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Float2String(#(#(#(F:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX")))))))),.List()),#(_30:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("696"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("704"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + syntax StdoutCell@STDOUT-STREAM ::= ``(List@LIST) [#Terminal(S("")),#NonTerminal(S("List@LIST")),#Terminal(S("")),cell(),topcell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(""))] +endmodule [#(Location(Int@INT-SYNTAX("687"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("755"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STRING + import FLOAT-SYNTAX [] + import BOOL-SYNTAX [] + import STRING-SYNTAX [] + import K-EQUAL [] + import INT [] + rule \implies(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(`_>=Int_`(#(#(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(`countAllOccurrences(_,_)`(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_+Int_`(#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("466"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),`countAllOccurrences(_,_)`(substrString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("466"),Int@INT-SYNTAX("139")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= `_+String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S("+String")),#NonTerminal(S("String@STRING-SYNTAX")),productionID(KString@KSTRING("1499867659")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+String_")),left(AttributeValue("")),function(AttributeValue("")),latex(AttributeValue("{#1}+_{\\scriptstyle\\it String}{#2}")),hook(AttributeValue("STRING.concat")),#(Location(Int@INT-SYNTAX("414"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("414"),Int@INT-SYNTAX("127")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax String@STRING-SYNTAX ::= substrString(String@STRING-SYNTAX,Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("substrString")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("258931371")),klabel(KString@KSTRING("substrString")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("422"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("422"),Int@INT-SYNTAX("87")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.substr")),klabel(AttributeValue("substrString"))] + syntax Int@INT-SYNTAX ::= `countAllOccurrences(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("countAllOccurrences")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("441"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("441"),Int@INT-SYNTAX("120")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.countAllOccurrences")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("countAllOccurrences(_,_)")),productionID(KString@KSTRING("1609124502"))] + syntax Int@INT-SYNTAX ::= lengthString(String@STRING-SYNTAX) [#Terminal(S("lengthString")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(AttributeValue("lengthString")),hook(AttributeValue("STRING.length")),#(Location(Int@INT-SYNTAX("418"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("418"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("904058452")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("lengthString"))] + syntax Float@FLOAT-SYNTAX ::= String2Float(String@STRING-SYNTAX) [#Terminal(S("String2Float")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("430"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("430"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.string2float")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("String2Float")),klabel(AttributeValue("String2Float")),function(AttributeValue("")),productionID(KString@KSTRING("2093010349"))] + syntax Bool@BOOL-SYNTAX ::= `_>=String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(">=String")),#NonTerminal(S("String@STRING-SYNTAX")),hook(AttributeValue("STRING.ge")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("450"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("450"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("922511709")),klabel(KString@KSTRING("_>=String_"))] + syntax String@STRING-SYNTAX ::= chrChar(Int@INT-SYNTAX) [#Terminal(S("chrChar")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("419"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("419"),Int@INT-SYNTAX("69")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1827725498")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("STRING.chr")),klabel(AttributeValue("chrChar")),klabel(KString@KSTRING("chrChar"))] + syntax String@STRING-SYNTAX ::= Base2String(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("Base2String")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("Base2String")),productionID(KString@KSTRING("1427646530")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("STRING.base2string")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("433"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("433"),Int@INT-SYNTAX("92")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("Base2String"))] + syntax Bool@BOOL-SYNTAX ::= `_>String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(">String")),#NonTerminal(S("String@STRING-SYNTAX")),productionID(KString@KSTRING("728885526")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_>String_")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("449"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("449"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.gt"))] + rule \implies(_andBool_(isString@STRING-SYNTAX(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\and(\rewrite(`_==String_`(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_==K_`(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("445"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("445"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= `#parseToken(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseToken")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("435"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("435"),Int@INT-SYNTAX("99")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("STRING.string2token")),productionID(KString@KSTRING("1939990953")),klabel(KString@KSTRING("#parseToken(_,_)"))] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("113")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isInt@INT-SYNTAX(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("154"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("155")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),#(#(`_=/=String_`(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("180"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("182")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("182")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(rfindChar(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("113")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("154"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("155")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`maxInt(_,_)`(rfindString(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("113")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),substrString(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("90"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("93"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("154"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("155")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),rfindChar(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("113")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),substrString(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("132"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("133")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),lengthString(#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("154"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("155")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("461"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("461"),Int@INT-SYNTAX("182")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= String2Base(String@STRING-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("String2Base")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("434"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("434"),Int@INT-SYNTAX("92")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1108924067")),klabel(KString@KSTRING("String2Base")),hook(AttributeValue("STRING.string2base")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("String2Base"))] + syntax Int@INT-SYNTAX ::= String2Int(String@STRING-SYNTAX) [#Terminal(S("String2Int")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("String2Int")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("431"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("431"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1280851663")),function(AttributeValue("")),hook(AttributeValue("STRING.string2int")),klabel(AttributeValue("String2Int"))] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(`_>=Int_`(#(#(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(`replaceFirst(_,_,_)`(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_+String_`(`_+String_`(substrString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("469"),Int@INT-SYNTAX("99")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("469"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),substrString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("96"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("97")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Float2String(Float@FLOAT-SYNTAX) [#Terminal(S("Float2String")),#Terminal(S("(")),#NonTerminal(S("Float@FLOAT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("Float2String")),klabel(AttributeValue("Float2String")),#(Location(Int@INT-SYNTAX("428"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("428"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1661123505")),hook(AttributeValue("STRING.float2string"))] + syntax Int@INT-SYNTAX ::= findChar(String@STRING-SYNTAX,String@STRING-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("findChar")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("425"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("425"),Int@INT-SYNTAX("89")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.findChar")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("findChar")),productionID(KString@KSTRING("2040467681")),klabel(KString@KSTRING("findChar"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==String_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=String_"))] + rule \implies(_andBool_(isString@STRING-SYNTAX(#(_17:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isInt@INT-SYNTAX(#(_18:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\and(\rewrite(rfindChar(#(_17:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("462"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("462"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_18:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("462"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("462"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("462"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("462"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(isInt@INT-SYNTAX(#(#(#(Count:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(`_>Int_`(#(#(#(Count:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(`replace(_,_,_,_)`(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Count:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`_+String_`(`_+String_`(substrString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("477"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("477"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("477"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("477"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`replace(_,_,_,_)`(substrString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),_-Int_(#(#(#(Count:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("158"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("159")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("476"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(isInt@INT-SYNTAX(#(_15:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),isString@STRING-SYNTAX(#(_14:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\and(\rewrite(findChar(#(_14:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("460"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("460"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_15:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("460"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("460"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("460"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("460"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_=/=String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S("=/=String")),#NonTerminal(S("String@STRING-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("1636506029")),hook(AttributeValue("STRING.ne")),#(Location(Int@INT-SYNTAX("443"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("443"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_=/=String_"))] + syntax String@STRING-SYNTAX ::= `replaceFirst(_,_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("replaceFirst")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("440"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("440"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("replaceFirst(_,_,_)")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("STRING.replaceFirst")),productionID(KString@KSTRING("60292059"))] + syntax Bool@BOOL-SYNTAX ::= `_<=String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S("<=String")),#NonTerminal(S("String@STRING-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_<=String_")),hook(AttributeValue("STRING.le")),function(AttributeValue("")),productionID(KString@KSTRING("1092572064")),#(Location(Int@INT-SYNTAX("448"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("448"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax String@STRING-SYNTAX ::= directionalityChar(String@STRING-SYNTAX) [#Terminal(S("directionalityChar")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(AttributeValue("directionalityChar")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("453"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("453"),Int@INT-SYNTAX("86")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("STRING.directionality")),productionID(KString@KSTRING("1258084361")),klabel(KString@KSTRING("directionalityChar"))] + syntax Bool@BOOL-SYNTAX ::= `_=String_`(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("457"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("457"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("457"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("457"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),notBool_(`_String_`(#(#(#(S1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("456"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("456"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("456"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("456"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_`(``(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#parseInput(#(_19:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("604"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("604"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#istream(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#parseInput(#(_19:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(`_+String_`(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),chrChar(`#getc(_)`(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("604"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("604"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#istream(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("601"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("608"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + rule \implies(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(`?Delimiters`:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(`?Sort`:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(_23:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(.List(),ListItem(#buffer(#(_23:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#dots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(ListItem(#parseInput(#(#(#(`?Sort`:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(`?Delimiters`:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(_23:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#dots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("671"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("676"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),unblock(AttributeValue(""))] + syntax StdinCell@STDIN-STREAM ::= ``(List@LIST) [#Terminal(S("")),#NonTerminal(S("List@LIST")),#Terminal(S("")),cell(),topcell(),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("114")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING(""))] + axiom B("true") [#ModuleComment(S(" way will get stuck in concrete execution mode with real IO enabled (i.e.,")),#(Location(Int@INT-SYNTAX("663"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("663"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #istream(Int@INT-SYNTAX) [#Terminal(S("#istream")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1620890840")),klabel(AttributeValue("#istream")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("594"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("594"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#istream"))] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isList@LIST(#(_24:_,sort(String@STRING-SYNTAX("List@LIST"))))),#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_>Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(String@STRING-SYNTAX("\"Int@INT-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("623"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("623"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#(_24:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(String2Int(substrString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("75")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))))),ListItem(#buffer(substrString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_24:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("622"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" TODO: More patterns need to be supported as well. In that case, we need to")),#(Location(Int@INT-SYNTAX("668"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("668"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" under `--io on` option), while they will still work in symbolic execution")),#(Location(Int@INT-SYNTAX("664"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("664"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("")),#(Location(Int@INT-SYNTAX("667"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("667"),Int@INT-SYNTAX("5")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isList@LIST(#(_22:_,sort(String@STRING-SYNTAX("List@LIST"))))),isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("618"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("613"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("613"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#(_22:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("614"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("614"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_22:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("612"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("618"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S("\n syntax Stream ::= \"#noIO\"\n\n rule ListItem(#buffer(_))\n (ListItem(#noIO) ListItem(#istream(_:Int)) => .List) [stdin]\n ")),#(Location(Int@INT-SYNTAX("678"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("683"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" mode or concrete execution mode with real IO disabled (i.e., under `--io")),#(Location(Int@INT-SYNTAX("665"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("665"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" read one character at a time until we read whitespace")),#(Location(Int@INT-SYNTAX("599"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("599"),Int@INT-SYNTAX("59")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" when necessary according to user-defined rules, since otherwise it will")),#(Location(Int@INT-SYNTAX("657"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("657"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" input stream cell, e.g.,")),#(Location(Int@INT-SYNTAX("660"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("660"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Non-supported rules that refer to the input stream cell in a sophisticated")),#(Location(Int@INT-SYNTAX("662"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("662"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(isString@STRING-SYNTAX(#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isList@LIST(#(_20:_,sort(String@STRING-SYNTAX("List@LIST"))))),isString@STRING-SYNTAX(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(_andBool_(#(#(_andBool_(#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("640"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("640"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("640"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("640"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"Int@INT-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_>Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#(_20:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parse(substrString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("71")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_20:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("633"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax StdinCell@STDIN-STREAM ::= initStdinCell(Map@MAP) [#Terminal(S("initStdinCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initStdinCell"))] + axiom B("true") [#ModuleComment(S(" have a way to specify such patterns.")),#(Location(Int@INT-SYNTAX("669"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("669"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" NOTE: This unblocking rule will be instantiated and inserted carefully")),#(Location(Int@INT-SYNTAX("656"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("656"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Currently, it supports only a simple pattern matching on the top of the")),#(Location(Int@INT-SYNTAX("659"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("659"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" when we reach whitespace, if it parses create a ListItem")),#(Location(Int@INT-SYNTAX("610"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("610"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(isList@LIST(#(_21:_,sort(String@STRING-SYNTAX("List@LIST")))),isString@STRING-SYNTAX(#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),isString@STRING-SYNTAX(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(_andBool_(#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_<=Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(\rewrite(``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#(_21:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("648"),Int@INT-SYNTAX("53"),Int@INT-SYNTAX("648"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_21:_,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("646"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" rule read() => V ... ListItem(V:Int) => .List ... ")),#(Location(Int@INT-SYNTAX("661"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("661"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(isString@STRING-SYNTAX(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$STDIN"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),isString@STRING-SYNTAX(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),\and(\rewrite(``(``(#KSequence(initStdinCell(Init:_),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(``(#noDots(),_List_(_List_(ListItem(#buffer(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$STDIN"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#istream(#stdin()))),#noDots()),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + axiom B("true") [#ModuleComment(S(" a hack: handle the case when we read integers without the help of the IO server")),#(Location(Int@INT-SYNTAX("620"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("620"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isStdinCell@STDIN-STREAM(K@SORT-K) [#Terminal(S("isStdinCell@STDIN-STREAM")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StdinCell@STDIN-STREAM")),klabel(KString@KSTRING("isStdinCell@STDIN-STREAM"))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #parseInput(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseInput")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("361398902")),klabel(AttributeValue("#parseInput")),klabel(KString@KSTRING("#parseInput")),#(Location(Int@INT-SYNTAX("595"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("595"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" lead to a diverging (i.e., non-terminating) transition system definition.")),#(Location(Int@INT-SYNTAX("658"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("658"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("591"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("685"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-TOP-SORT + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("137"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("137"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" K ::= Sort")),#(Location(Int@INT-SYNTAX("138"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("139"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("139"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("136"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("136"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("135"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("140"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DOMAINS + import DOMAINS-SYNTAX [] + import K-IO [] + import SET [] + import BOOL-SYNTAX [] + import BASIC-K [] + import STRING [] + import INT [] + import LIST [] + import BOOL [] + import MAP [] +endmodule [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module INT + import INT-SYNTAX [] + import BOOL [] + import K-EQUAL [] + import BOOL-SYNTAX [] + syntax Int@INT-SYNTAX ::= _xorInt_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("xorInt")),#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("284"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("284"),Int@INT-SYNTAX("134")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1637290981")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_xorInt_")),left(AttributeValue("")),hook(AttributeValue("INT.xor")),function(AttributeValue("")),latex(AttributeValue("{#1}\\mathrel{\\oplus_{\\scriptstyle\\it Int}}{#2}"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_divInt_"),S("_%Int_"),S("_/Int_"),S("_*Int_"),S("_modInt_"))] + syntax Int@INT-SYNTAX ::= `~Int_`(Int@INT-SYNTAX) [#Terminal(S("~Int")),#NonTerminal(S("Int@INT-SYNTAX")),hook(AttributeValue("INT.not")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("263"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("263"),Int@INT-SYNTAX("121")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("~Int_")),latex(AttributeValue("\\mathop{\\sim_{\\scriptstyle\\it Int}}{#1}")),function(AttributeValue("")),productionID(KString@KSTRING("961712517"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_/Int_"))] + syntax Int@INT-SYNTAX ::= `maxInt(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("maxInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),smtlib(AttributeValue("int_max")),#(Location(Int@INT-SYNTAX("288"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("288"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1642030774")),hook(AttributeValue("INT.max")),function(AttributeValue("")),klabel(KString@KSTRING("maxInt(_,_)"))] + syntax Int@INT-SYNTAX ::= `(_)`(Int@INT-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("290"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("290"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)")),productionID(KString@KSTRING("514455215"))] + syntax Bool@BOOL-SYNTAX ::= `_>Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">Int")),#NonTerminal(S("Int@INT-SYNTAX")),klabel(KString@KSTRING("_>Int_")),productionID(KString@KSTRING("959869407")),smtlib(AttributeValue(">")),latex(AttributeValue("{#1}\\mathrel{>_{\\scriptstyle\\it Int}}{#2}")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("303"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("303"),Int@INT-SYNTAX("133")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("INT.gt"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_modInt_"))] + syntax Int@INT-SYNTAX ::= `_*Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("*Int")),#NonTerminal(S("Int@INT-SYNTAX")),smtlib(AttributeValue("*")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("INT.mul")),klabel(KString@KSTRING("_*Int_")),productionID(KString@KSTRING("482082765")),#(Location(Int@INT-SYNTAX("267"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("267"),Int@INT-SYNTAX("143")),classType(KString@KSTRING("org.kframework.attributes.Location"))),latex(AttributeValue("{#1}\\mathrel{\\ast_{\\scriptstyle\\it Int}}{#2}"))] + syntax Int@INT-SYNTAX ::= _-Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("-Int")),#NonTerminal(S("Int@INT-SYNTAX")),klabel(KString@KSTRING("_-Int_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("277"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("277"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("INT.sub")),latex(AttributeValue("{#1}\\mathrel{-_{\\scriptstyle\\it Int}}{#2}")),smtlib(AttributeValue("-")),productionID(KString@KSTRING("105374791"))] + syntax Int@INT-SYNTAX ::= _^Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("^Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),klabel(KString@KSTRING("_^Int_")),function(AttributeValue("")),latex(AttributeValue("{#1}\\mathrel{{\\char`\\^}_{\\!\\scriptstyle\\it Int}}{#2}")),productionID(KString@KSTRING("1034568234")),hook(AttributeValue("INT.pow")),#(Location(Int@INT-SYNTAX("265"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("265"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">=Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("302"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("302"),Int@INT-SYNTAX("137")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("INT.ge")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_>=Int_")),productionID(KString@KSTRING("550402284")),latex(AttributeValue("{#1}\\mathrel{\\geq_{\\scriptstyle\\it Int}}{#2}")),smtlib(AttributeValue(">="))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_&Int_"))] + syntax Int@INT-SYNTAX ::= `_<=Int_"))] + rule \implies(_andBool_(isInt@INT-SYNTAX(#(#(#(I1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),isInt@INT-SYNTAX(#(#(#(I2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\and(\rewrite(`_=/=Int_`(#(#(#(I1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),notBool_(`_==Int_`(#(#(#(I1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("309"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("309"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= absInt(Int@INT-SYNTAX) [#Terminal(S("absInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),smtlib(AttributeValue("int_abs")),#(Location(Int@INT-SYNTAX("289"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("289"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1357563986")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("INT.abs")),klabel(AttributeValue("absInt")),klabel(KString@KSTRING("absInt"))] + syntax Bool@BOOL-SYNTAX ::= `_=/=Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("=/=Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("distinct")),#(Location(Int@INT-SYNTAX("305"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("305"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_=/=Int_")),productionID(KString@KSTRING("116237769")),hook(AttributeValue("INT.ne")),latex(AttributeValue("{#1}\\mathrel{{=}{/}{=}_{\\scriptstyle\\it Int}}{#2}"))] + syntax Int@INT-SYNTAX ::= _%Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("%Int")),#NonTerminal(S("Int@INT-SYNTAX")),latex(AttributeValue("{#1}\\mathrel{\\%_{\\scriptstyle\\it Int}}{#2}")),#(Location(Int@INT-SYNTAX("271"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("271"),Int@INT-SYNTAX("144")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1209702763")),klabel(KString@KSTRING("_%Int_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("mod")),hook(AttributeValue("INT.tmod"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_+Int_"))] + axiom B("true") [#ModuleComment(S(" divInt and modInt implement e-division ")),#(Location(Int@INT-SYNTAX("272"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("272"),Int@INT-SYNTAX("59")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `_&Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("&Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("282"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("282"),Int@INT-SYNTAX("130")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("_&Int_")),hook(AttributeValue("INT.and")),productionID(KString@KSTRING("318857719")),latex(AttributeValue("{#1}\\mathrel{\\&_{\\scriptstyle\\it Int}}{#2}"))] + syntax Bool@BOOL-SYNTAX ::= `_Int_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_<>Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">>Int")),#NonTerminal(S("Int@INT-SYNTAX")),latex(AttributeValue("{#1}\\mathrel{\\gg_{\\scriptstyle\\it Int}}{#2}")),#(Location(Int@INT-SYNTAX("279"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("279"),Int@INT-SYNTAX("131")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1010856212")),hook(AttributeValue("INT.shr")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_>>Int_")),left(AttributeValue("")),function(AttributeValue(""))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("~Int_")),#SyntaxPriorityGroup(S("_^Int_")),#SyntaxPriorityGroup(S("_divInt_"),S("_%Int_"),S("_/Int_"),S("_*Int_"),S("_modInt_")),#SyntaxPriorityGroup(S("_+Int_"),S("_-Int_")),#SyntaxPriorityGroup(S("_>>Int_"),S("_<>Int_"),S("_<>Int_"))] + syntax Int@INT-SYNTAX ::= _divInt_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("divInt")),#NonTerminal(S("Int@INT-SYNTAX")),hook(AttributeValue("INT.ediv")),klabel(KString@KSTRING("_divInt_")),#(Location(Int@INT-SYNTAX("273"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("273"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("1028780142")),smtlib(AttributeValue("div"))] + syntax K@SORT-K ::= srandInt(Int@INT-SYNTAX) [#Terminal(S("srandInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("INT.srand")),function(AttributeValue("")),klabel(AttributeValue("srandInt")),#(Location(Int@INT-SYNTAX("316"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("316"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("257608164")),klabel(KString@KSTRING("srandInt"))] + rule \implies(isInt@INT-SYNTAX(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("313"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("313"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),\and(\rewrite(freshInt(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("313"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("313"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("313"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("313"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("313"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("313"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_<=Int_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_xorInt_"))] +endmodule [#(Location(Int@INT-SYNTAX("258"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("317"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module REQUIRES-ENSURES + import BASIC-K [] + import BOOL-SYNTAX [] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleEnsures(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),latex(AttributeValue("{#1}{}{#3}")),productionID(KString@KSTRING("1418334255")),klabel(KString@KSTRING("#ruleEnsures")),klabel(AttributeValue("#ruleEnsures")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("130"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("130"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequires(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("when")),#NonTerminal(S("K@SORT-K")),klabel(AttributeValue("#ruleRequires")),latex(AttributeValue("{#1}{#2}{}")),klabel(KString@KSTRING("#ruleRequires")),productionID(KString@KSTRING("720167805")),#(Location(Int@INT-SYNTAX("129"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("129"),Int@INT-SYNTAX("103")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequires(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("requires")),#NonTerminal(S("K@SORT-K")),klabel(AttributeValue("#ruleRequires")),latex(AttributeValue("{#1}{#2}{}")),klabel(KString@KSTRING("#ruleRequires")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("128"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("128"),Int@INT-SYNTAX("103")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("63468833"))] + syntax Bool@BOOL-SYNTAX ::= isRuleContent@REQUIRES-ENSURES(K@SORT-K) [#Terminal(S("isRuleContent@REQUIRES-ENSURES")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("RuleContent@REQUIRES-ENSURES")),klabel(KString@KSTRING("isRuleContent@REQUIRES-ENSURES"))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequiresEnsures(K@SORT-K,K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("requires")),#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),productionID(KString@KSTRING("1466073198")),latex(AttributeValue("{#1}{#2}{#3}")),klabel(KString@KSTRING("#ruleRequiresEnsures")),#(Location(Int@INT-SYNTAX("131"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#ruleRequiresEnsures"))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleNoConditions(K@SORT-K) [#NonTerminal(S("K@SORT-K")),allowChainSubsort(AttributeValue("")),klabel(KString@KSTRING("#ruleNoConditions")),klabel(AttributeValue("#ruleNoConditions")),latex(AttributeValue("{#1}{}{}")),productionID(KString@KSTRING("346224929")),#(Location(Int@INT-SYNTAX("127"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("127"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequiresEnsures(K@SORT-K,K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("when")),#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),latex(AttributeValue("{#1}{#2}{#3}")),klabel(KString@KSTRING("#ruleRequiresEnsures")),productionID(KString@KSTRING("398690014")),#(Location(Int@INT-SYNTAX("132"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("132"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#ruleRequiresEnsures"))] +endmodule [#(Location(Int@INT-SYNTAX("124"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("133"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module LIST + import INT-SYNTAX [] + import BASIC-K [] + import BOOL-SYNTAX [] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_List_"))] + axiom B("true") [#ModuleComment(S(" \\section{Description} \\K lists are ordered collections that may contain\n duplicate elements. These behave more like lists in functional programming\n languages than arrays in imperative programming languages; there's no\n numerical indexing, but instead specific elements are refered to using the\n Mylist,Mylist construct in combination with the MyListItem construct. It's\n worth noting that \\K lists aren't exactly like lists in functional languages;\n they're associative, which means that it's easy to access elements at both\n ends of the lists and concatenate them. For example, L:Mylist,E accesses\n element E at the end of a list. ")),#(Location(Int@INT-SYNTAX("140"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("148"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the list length ")),#(Location(Int@INT-SYNTAX("189"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("189"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST ::= _List_(List@LIST,List@LIST) [#NonTerminal(S("List@LIST")),#NonTerminal(S("List@LIST")),element(AttributeValue("ListItem")),assoc(AttributeValue("")),#(Location(Int@INT-SYNTAX("171"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("171"),Int@INT-SYNTAX("156")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_List_")),klabel(AttributeValue("_List_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("2041605291")),smtlib(AttributeValue("smt_seq_concat")),unit(AttributeValue(".List")),hook(AttributeValue("LIST.concat"))] + axiom B("true") [#ModuleComment(S(" Construct a new List as the concatenation of two Lists. This is similar to\n the append \"@\" operation in many functional programming languages. ")),#(Location(Int@INT-SYNTAX("169"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("170"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Remove elements from the beginning and the end of the List. ")),#(Location(Int@INT-SYNTAX("183"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("183"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Check element membership in the given list ")),#(Location(Int@INT-SYNTAX("186"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("186"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST ::= .List() [#Terminal(S(".List")),hook(AttributeValue("LIST.unit")),#(Location(Int@INT-SYNTAX("173"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("173"),Int@INT-SYNTAX("111")),classType(KString@KSTRING("org.kframework.attributes.Location"))),smtlib(AttributeValue("smt_seq_nil")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(".List")),function(AttributeValue("")),latex(AttributeValue("\\dotCt{List}")),productionID(KString@KSTRING("1205406622"))] + syntax List@LIST ::= ListItem(K@SORT-K) [#Terminal(S("ListItem")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(AttributeValue("ListItem")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("ListItem")),productionID(KString@KSTRING("1794717576")),#(Location(Int@INT-SYNTAX("176"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("176"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),smtlib(AttributeValue("smt_seq_elem"))] + syntax List@LIST ::= `List:range`(List@LIST,Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("range")),#Terminal(S("(")),#NonTerminal(S("List@LIST")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),hook(AttributeValue("LIST.range")),klabel(KString@KSTRING("List:range")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1378084334")),#(Location(Int@INT-SYNTAX("184"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("184"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("List:range"))] + axiom B("true") [#ModuleComment(S("TODO(AndreiS): move the paragraph below")),#(Location(Int@INT-SYNTAX("150"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("150"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" \\section{User-Defined Lists} It is very common in \\K to define a shorthand\n for lists of user-defined sorts. \\K 's builtin way of doing this is to use\n List\\{KItem,\"Separator\"\\}, where \"Separator\" is any valid character or\n sequence of characters used to separate distinct elements.\n For example, after defining \\\\\n syntax KItem ::= Elt\\\\\n a user could then define\n syntax Elts ::= List\\{Elt,\",\"\\} \\\\\n which would be a comma-separated list whose elements are all of sort Elt. A\n user could just as well define \\\\\n syntax Elts ::= List\\{Elt,\"and\"\\} \\\\\n which would be a list containing elements of sort Elt that are separated with\n the word \"and\". If only one argument is given, the separator is asumed to be\n commas. So, \\\\\n syntax Elts = List\\{Elt\\} \\\\\n would define a comma-separated list containing elements of sort Elt.\n ")),#(Location(Int@INT-SYNTAX("151"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get an element form the List by index. Positive indices mean from the\n beginning (0 is the first element), and negative indices mean from the end\n (-1 is the last element). ")),#(Location(Int@INT-SYNTAX("178"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("180"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isList@LIST(K@SORT-K) [#Terminal(S("isList@LIST")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("List@LIST")),klabel(KString@KSTRING("isList@LIST"))] + axiom B("true") [#ModuleComment(S("| \".\"")),#(Location(Int@INT-SYNTAX("174"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("174"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct an empty List: ")),#(Location(Int@INT-SYNTAX("172"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("172"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST [hook(AttributeValue("LIST.List")),#(Location(Int@INT-SYNTAX("138"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= _inList_(K@SORT-K,List@LIST) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in")),#NonTerminal(S("List@LIST")),productionID(KString@KSTRING("487694075")),#(Location(Int@INT-SYNTAX("187"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("187"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("_inList_")),hook(AttributeValue("LIST.in")),klabel(AttributeValue("_inList_"))] + syntax Int@INT-SYNTAX ::= sizeList(List@LIST) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("List@LIST")),#Terminal(S(")")),smtlib(AttributeValue("smt_seq_len")),productionID(KString@KSTRING("77269878")),hook(AttributeValue("LIST.size")),#(Location(Int@INT-SYNTAX("190"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("190"),Int@INT-SYNTAX("109")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("sizeList")),function(AttributeValue("")),klabel(AttributeValue("sizeList"))] + syntax K@SORT-K ::= `List:get`(List@LIST,Int@INT-SYNTAX) [#NonTerminal(S("List@LIST")),#Terminal(S("[")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("479397964")),#(Location(Int@INT-SYNTAX("181"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("181"),Int@INT-SYNTAX("86")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("LIST.get")),klabel(KString@KSTRING("List:get")),klabel(AttributeValue("List:get"))] + axiom B("true") [#ModuleComment(S(" Construct a singleton List (a list with only one element) ")),#(Location(Int@INT-SYNTAX("175"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("175"),Int@INT-SYNTAX("67")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("133"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("191"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module PROGRAM-LISTS + import SORT-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" | \".Es\" [userList(\"*\"), klabel('.Es)]")),#(Location(Int@INT-SYNTAX("182"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("182"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" into a series of productions more suitable for programs:")),#(Location(Int@INT-SYNTAX("183"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("183"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | Es#Terminator // if the list is *")),#(Location(Int@INT-SYNTAX("188"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("188"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= E \",\" Es [userList(\"*\"), klabel('_,_)]")),#(Location(Int@INT-SYNTAX("181"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("181"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es#Terminator ::= \"\" [klabel('.Es)]")),#(Location(Int@INT-SYNTAX("184"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("184"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= Ne#Es")),#(Location(Int@INT-SYNTAX("187"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("187"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" replaces the default productions for lists:")),#(Location(Int@INT-SYNTAX("180"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("180"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | E Es#Terminator [klabel('_,_)]")),#(Location(Int@INT-SYNTAX("186"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("186"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Ne#Es ::= E \",\" Ne#Es [klabel('_,_)]")),#(Location(Int@INT-SYNTAX("185"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("185"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("179"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("179"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("177"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("189"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module LANGUAGE-PARSING + import BASIC [] + import K-TERM [] + import ID-PROGRAM-PARSING [] +endmodule [] + +module SEMANTICS + import BASIC [] + syntax KItem@BASIC-K ::= #None(KCell@BASIC) [#NonTerminal(S("KCell@BASIC"))] + syntax KItem@BASIC-K ::= #None(Stream@K-IO) [#NonTerminal(S("Stream@K-IO"))] + syntax KItem@BASIC-K ::= #None(TCell@BASIC) [#NonTerminal(S("TCell@BASIC"))] + syntax KItem@BASIC-K ::= #None(Set@SET) [#NonTerminal(S("Set@SET"))] + syntax KItem@BASIC-K ::= #None(Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX"))] + syntax KItem@BASIC-K ::= #None(KResult@BASIC-K) [#NonTerminal(S("KResult@BASIC-K"))] + syntax KItem@BASIC-K ::= #None(KCellOpt@BASIC) [#NonTerminal(S("KCellOpt@BASIC"))] + syntax KItem@BASIC-K ::= #None(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX"))] + syntax KItem@BASIC-K ::= #None(List@LIST) [#NonTerminal(S("List@LIST"))] + syntax KItem@BASIC-K ::= #None(MetaVariable@BASIC-K) [#NonTerminal(S("MetaVariable@BASIC-K"))] + syntax KItem@BASIC-K ::= #None(Bottom@BASIC-K) [#NonTerminal(S("Bottom@BASIC-K"))] + syntax KItem@BASIC-K ::= #None(IOError@K-IO) [#NonTerminal(S("IOError@K-IO"))] + syntax KItem@BASIC-K ::= #None(Id@ID) [#NonTerminal(S("Id@ID"))] + syntax KItem@BASIC-K ::= #None(Map@MAP) [#NonTerminal(S("Map@MAP"))] + syntax KItem@BASIC-K ::= #None(Exp@BASIC-SYNTAX) [#NonTerminal(S("Exp@BASIC-SYNTAX"))] + syntax KItem@BASIC-K ::= #None(TCellFragment@BASIC) [#NonTerminal(S("TCellFragment@BASIC"))] + syntax KItem@BASIC-K ::= #None(Float@FLOAT-SYNTAX) [#NonTerminal(S("Float@FLOAT-SYNTAX"))] + syntax KItem@BASIC-K ::= #None(String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX"))] +endmodule [] + +module SORT-K + syntax K@SORT-K [hook(AttributeValue("K.K")),#(Location(Int@INT-SYNTAX("8"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("7"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module ID-PROGRAM-PARSING + import ID [] + import BOOL-SYNTAX [] + syntax Id@ID ::= ``() [#RegexTerminal(S("[A-Za-z0-9\\_]"),S("[A-Za-z\\_][A-Za-z0-9\\_]*"),S("#")),productionID(KString@KSTRING("1423561005")),token(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),notInRules(AttributeValue("")),#(Location(Int@INT-SYNTAX("487"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("487"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),autoReject(AttributeValue("")),klabel(KString@KSTRING(""))] +endmodule [#(Location(Int@INT-SYNTAX("485"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("488"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BOOL + import BASIC-K [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= _orBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("orBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),smtlib(AttributeValue("or")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("BOOL.or")),productionID(KString@KSTRING("386163331")),latex(AttributeValue("{#1}\\vee_{\\scriptstyle\\it Bool}{#2}")),klabel(KString@KSTRING("_orBool_")),boolOperation(AttributeValue("")),#(Location(Int@INT-SYNTAX("208"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("208"),Int@INT-SYNTAX("144")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= _andBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("andBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),latex(AttributeValue("{#1}\\wedge_{\\scriptstyle\\it Bool}{#2}")),klabel(KString@KSTRING("_andBool_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),hook(AttributeValue("BOOL.and")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("205"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("205"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1049817027")),smtlib(AttributeValue("and")),boolOperation(AttributeValue(""))] + rule \implies(isBool@BOOL-SYNTAX(#(_5:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_andBool_(#(_5:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(notBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_xorBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\and(\rewrite(_orElseBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_andBool_"))] + rule \implies(isBool@BOOL-SYNTAX(#(_4:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_impliesBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_4:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= _xorBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("xorBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("207"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("207"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("BOOL.xor")),klabel(KString@KSTRING("_xorBool_")),productionID(KString@KSTRING("776700275")),smtlib(AttributeValue("xor")),boolOperation(AttributeValue(""))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("notBool_")),#SyntaxPriorityGroup(S("_andThenBool_"),S("_andBool_")),#SyntaxPriorityGroup(S("_xorBool_")),#SyntaxPriorityGroup(S("_orElseBool_"),S("_orBool_")),#SyntaxPriorityGroup(S("_impliesBool_")),#SyntaxPriorityGroup(S("_==Bool_"),S("_=/=Bool_")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_xorBool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(_3:_,#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),_2:_),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(_1:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_impliesBool_(#(_1:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(_7:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_andBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_7:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_orBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_=/=Bool_`(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("=/=Bool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),productionID(KString@KSTRING("235237152")),#(Location(Int@INT-SYNTAX("213"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("213"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("distinct")),hook(AttributeValue("BOOL.ne")),klabel(KString@KSTRING("_=/=Bool_"))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_xorBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\and(\rewrite(_andThenBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=Bool_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_orElseBool_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_orBool_"))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_andBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= notBool_(Bool@BOOL-SYNTAX) [#Terminal(S("notBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Location(Int@INT-SYNTAX("204"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("204"),Int@INT-SYNTAX("136")),classType(KString@KSTRING("org.kframework.attributes.Location"))),smtlib(AttributeValue("not")),klabel(KString@KSTRING("notBool_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("BOOL.not")),latex(AttributeValue("\\neg_{\\scriptstyle\\it Bool}{#1}")),productionID(KString@KSTRING("1661081225")),boolOperation(AttributeValue(""))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_impliesBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(_0:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_orBool_(#(_0:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_impliesBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),notBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_andBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(_6:_,#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(isBool@BOOL-SYNTAX(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),isBool@BOOL-SYNTAX(#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\and(\rewrite(_xorBool_(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),notBool_(`_==Bool_`(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\and(\rewrite(_andThenBool_(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(isBool@BOOL-SYNTAX(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),isBool@BOOL-SYNTAX(#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\and(\rewrite(`_=/=Bool_`(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),notBool_(`_==Bool_`(#(#(#(B1:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_xorBool_(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==Bool_"),S("_=/=Bool_"))] + syntax Bool@BOOL-SYNTAX ::= `_==Bool_`(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("==Bool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),smtlib(AttributeValue("=")),hook(AttributeValue("BOOL.eq")),#(Location(Int@INT-SYNTAX("212"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("212"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),productionID(KString@KSTRING("884452399")),function(AttributeValue("")),klabel(KString@KSTRING("_==Bool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),_8:_),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_andThenBool_"))] + syntax Bool@BOOL-SYNTAX ::= _impliesBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("impliesBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),hook(AttributeValue("BOOL.implies")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("210"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("210"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1516500233")),smtlib(AttributeValue("=>")),klabel(KString@KSTRING("_impliesBool_")),boolOperation(AttributeValue(""))] + rule \implies(isK@SORT-K(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\and(\rewrite(_orElseBool_(#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(K:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(isBool@BOOL-SYNTAX(#(_9:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_orBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_9:_,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(notBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==Bool_"))] + syntax Bool@BOOL-SYNTAX ::= _orElseBool_(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("orElseBool")),#NonTerminal(S("K@SORT-K")),smtlib(AttributeValue("or")),#(Location(Int@INT-SYNTAX("209"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("209"),Int@INT-SYNTAX("104")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("1540374340")),klabel(KString@KSTRING("_orElseBool_")),hook(AttributeValue("BOOL.orElse")),boolOperation(AttributeValue(""))] + syntax Bool@BOOL-SYNTAX ::= _andThenBool_(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("andThenBool")),#NonTerminal(S("K@SORT-K")),#(Location(Int@INT-SYNTAX("206"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("206"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_andThenBool_")),productionID(KString@KSTRING("23211803")),hook(AttributeValue("BOOL.andThen")),smtlib(AttributeValue("and")),boolOperation(AttributeValue(""))] + rule \implies(isBool@BOOL-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\and(\rewrite(_orBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `(_)`(Bool@BOOL-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("214"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("214"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),bracket(AttributeValue("")),productionID(KString@KSTRING("893192050")),klabel(KString@KSTRING("(_)"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_impliesBool_"))] +endmodule [#(Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("251"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSTRING + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" optionally qualified strings, like in Scala \"abc\", i\"abc\", r\"a*bc\", etc.")),#(Location(Int@INT-SYNTAX("29"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KString@KSTRING ::= ``() [#RegexTerminal(S("#"),S("[\\\"](([^\\\"\n\r\\\\])|([\\\\][nrtf\\\"\\\\])|([\\\\][x][0-9a-fA-F]{2})|([\\\\][u][0-9a-fA-F]{4})|([\\\\][U][0-9a-fA-F]{8}))*[\\\"]"),S("#")),token(AttributeValue("")),productionID(KString@KSTRING("2008966511")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("28"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("205")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("org.kframework.kore.KString"))] + syntax Bool@BOOL-SYNTAX ::= isKString@KSTRING(K@SORT-K) [#Terminal(S("isKString@KSTRING")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KString@KSTRING")),klabel(KString@KSTRING("isKString@KSTRING"))] +endmodule [#(Location(Int@INT-SYNTAX("27"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K + import AUTO-CASTS [] + import KSEQ-SYMBOLIC [] + import BOOL-SYNTAX [] + import AUTO-FOLLOW [] + import K-SORT-LATTICE [] + import REQUIRES-ENSURES [] + syntax KBott@BASIC-K ::= #KRewrite(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("=>")),#NonTerminal(S("K@SORT-K")),hook(AttributeValue("org.kframework.kore.KRewrite")),klabel(KString@KSTRING("#KRewrite")),non-assoc(AttributeValue("")),productionID(KString@KSTRING("1908981452")),klabel(AttributeValue("#KRewrite")),#(Location(Int@INT-SYNTAX("211"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("211"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("non-assoc"),S("#KRewrite"))] +endmodule [#(Location(Int@INT-SYNTAX("205"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("214"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BASIC + import BASIC-SYNTAX [] + import DOMAINS [] + import MAP [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= isTCell@BASIC(K@SORT-K) [#Terminal(S("isTCell@BASIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("TCell@BASIC")),klabel(KString@KSTRING("isTCell@BASIC"))] + syntax KCellOpt@BASIC ::= noKCell() [#Terminal(S("noKCell")),cellOptAbsent(KString@KSTRING("KCell")),klabel(KString@KSTRING("noKCell"))] + syntax Bool@BOOL-SYNTAX ::= isTCellFragment@BASIC(K@SORT-K) [#Terminal(S("isTCellFragment@BASIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("TCellFragment@BASIC")),klabel(KString@KSTRING("isTCellFragment@BASIC"))] + syntax KCell@BASIC ::= ``(K@SORT-K) [#Terminal(S("")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),cell(),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),maincell(),klabel(KString@KSTRING("")),#(org.kframework.attributes.Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax KItem@BASIC-K ::= `#freezer_+_1`(K@SORT-K) [#Terminal(S("#freezer_+_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_+_1"))] + syntax KResult@BASIC-K ::= #None(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("11"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("764419760"))] + syntax TCell@BASIC ::= ``(KCell@BASIC) [#Terminal(S("")),#NonTerminal(S("KCell@BASIC")),#Terminal(S("")),cell(),topcell(),klabel(KString@KSTRING("")),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= isKCellOpt@BASIC(K@SORT-K) [#Terminal(S("isKCellOpt@BASIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCellOpt@BASIC")),klabel(KString@KSTRING("isKCellOpt@BASIC"))] + syntax KCell@BASIC ::= initKCell(Map@MAP) [#Terminal(S("initKCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initKCell"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(initTCell(Init:_),``(initKCell(Init:_))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + rule \implies(_andBool_(_andBool_(isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))),_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))))),\and(\rewrite(``(``(#KSequence(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),``(``(#KSequence(`_+_`(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),left(AttributeValue("")),strict(AttributeValue("")),cool(),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + syntax KItem@BASIC-K ::= `#freezer_+_0`(K@SORT-K) [#Terminal(S("#freezer_+_0")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_+_0"))] + rule \implies(_andBool_(_andBool_(isExp@BASIC-SYNTAX(#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))),_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))))),\and(\rewrite(``(``(#KSequence(`_+_`(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),heat(),left(AttributeValue("")),strict(AttributeValue("")),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + syntax KCellOpt@BASIC ::= #None(KCell@BASIC) [#NonTerminal(S("KCell@BASIC"))] + syntax TCell@BASIC ::= initTCell(Map@MAP) [#Terminal(S("initTCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initTCell"))] + rule \implies(_andBool_(isInt@INT-SYNTAX(#(#(#(A:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),isInt@INT-SYNTAX(#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\and(\rewrite(``(``(#KSequence(`_+_`(#(#(#(A:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(`_+Int_`(#(#(#(A:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(B:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(isExp@BASIC-SYNTAX(#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))),_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))))),\and(\rewrite(``(``(#KSequence(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),``(``(#KSequence(`_+_`(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),left(AttributeValue("")),strict(AttributeValue("")),cool(),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + rule \implies(_andBool_(_andBool_(isExp@BASIC-SYNTAX(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),isExp@BASIC-SYNTAX(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))),_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))))))),\and(\rewrite(``(``(#KSequence(`_+_`(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(``(#KSequence(#(HOLE:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:_,sort(String@STRING-SYNTAX("Exp@BASIC-SYNTAX")))),#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K")))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+_")),heat(),left(AttributeValue("")),strict(AttributeValue("")),#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("20224131"))] + rule \implies(isExp@BASIC-SYNTAX(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\and(\rewrite(initKCell(Init:_),``(`Map:lookup`(Init:_,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + syntax TCellFragment@BASIC ::= `-fragment`(KCellOpt@BASIC) [#Terminal(S("-fragment")),#NonTerminal(S("KCellOpt@BASIC")),#Terminal(S("-fragment")),cellFragment(KString@KSTRING("TCell")),klabel(KString@KSTRING("-fragment"))] + syntax K@SORT-K [] + syntax Bool@BOOL-SYNTAX ::= isKCell@BASIC(K@SORT-K) [#Terminal(S("isKCell@BASIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCell@BASIC")),klabel(KString@KSTRING("isKCell@BASIC"))] +endmodule [#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./basic.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module CONFIG-CELLS + import RULE-LISTS [] + import KCELLS [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= is#CellProperty@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellProperty@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellProperty@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellProperty@CONFIG-CELLS"))] + syntax #CellProperty@CONFIG-CELLS ::= #cellProperty(#CellName@CONFIG-CELLS,KString@KSTRING) [#NonTerminal(S("#CellName@CONFIG-CELLS")),#Terminal(S("=")),#NonTerminal(S("KString@KSTRING")),productionID(KString@KSTRING("741669172")),#(Location(Int@INT-SYNTAX("119"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("119"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cellProperty")),klabel(KString@KSTRING("#cellProperty")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= is#CellProperties@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellProperties@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellProperties@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellProperties@CONFIG-CELLS"))] + syntax Cell@KCELLS ::= #externalCell(#CellName@CONFIG-CELLS) [#Terminal(S("<")),#NonTerminal(S("#CellName@CONFIG-CELLS")),#Terminal(S("/>")),#(Location(Int@INT-SYNTAX("114"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("114"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1210898719")),klabel(AttributeValue("#externalCell")),klabel(KString@KSTRING("#externalCell")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= is#CellName@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellName@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellName@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellName@CONFIG-CELLS"))] + syntax #CellProperties@CONFIG-CELLS ::= #cellPropertyListTerminator() [#Terminal(S("")),#(Location(Int@INT-SYNTAX("118"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("118"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("558569884")),klabel(AttributeValue("#cellPropertyListTerminator")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#cellPropertyListTerminator"))] + syntax Cell@KCELLS ::= #breakCell() [#Terminal(S("")),#(Location(Int@INT-SYNTAX("115"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("115"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#breakCell")),klabel(KString@KSTRING("#breakCell")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1975546571"))] + syntax Cell@KCELLS ::= #configCell(#CellName@CONFIG-CELLS,#CellProperties@CONFIG-CELLS,K@SORT-K,#CellName@CONFIG-CELLS) [#Terminal(S("<")),#NonTerminal(S("#CellName@CONFIG-CELLS")),#NonTerminal(S("#CellProperties@CONFIG-CELLS")),#Terminal(S(">")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),productionID(KString@KSTRING("1088872417")),klabel(KString@KSTRING("#configCell")),klabel(AttributeValue("#configCell")),#(Location(Int@INT-SYNTAX("113"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax #CellProperties@CONFIG-CELLS ::= #cellPropertyList(#CellProperty@CONFIG-CELLS,#CellProperties@CONFIG-CELLS) [#NonTerminal(S("#CellProperty@CONFIG-CELLS")),#NonTerminal(S("#CellProperties@CONFIG-CELLS")),klabel(AttributeValue("#cellPropertyList")),productionID(KString@KSTRING("1567885839")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("117"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("117"),Int@INT-SYNTAX("86")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#cellPropertyList"))] + syntax #CellName@CONFIG-CELLS ::= ``() [#RegexTerminal(S("#"),S("[a-zA-Z0-9\\-]+"),S("#")),token(AttributeValue("")),productionID(KString@KSTRING("874217650")),klabel(KString@KSTRING("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("111"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("108"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module MAP + import SET [] + import LIST [] + import BOOL-SYNTAX [] + syntax Map@MAP ::= `_[_<-undef]`(Map@MAP,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("<-")),#Terminal(S("undef")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_[_<-undef]")),function(AttributeValue("")),productionID(KString@KSTRING("932285561")),hook(AttributeValue("MAP.remove")),#(Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_|->_")),#SyntaxPriorityGroup(S(".Map"),S("_Map_")))] + syntax Map@MAP ::= removeAll(Map@MAP,Set@SET) [#Terminal(S("removeAll")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(",")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),productionID(KString@KSTRING("1277009227")),klabel(KString@KSTRING("removeAll")),hook(AttributeValue("MAP.removeAll")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("removeAll")),#(Location(Int@INT-SYNTAX("67"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Check map inclusion ")),#(Location(Int@INT-SYNTAX("80"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("80"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct an empty Map ")),#(Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= .Map() [#Terminal(S(".Map")),latex(AttributeValue("\\dotCt{Map}")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(".Map")),function(AttributeValue("")),hook(AttributeValue("MAP.unit")),productionID(KString@KSTRING("502800944")),#(Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= `_in_keys(_)`(K@SORT-K,Map@MAP) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in_keys")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),productionID(KString@KSTRING("665726928")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("_in_keys(_)")),hook(AttributeValue("MAP.in_keys")),#(Location(Int@INT-SYNTAX("72"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("72"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Get an arbitrarily chosen key of the Map ")),#(Location(Int@INT-SYNTAX("83"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("83"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST ::= values(Map@MAP) [#Terminal(S("values")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("75"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("75"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("102617125")),klabel(AttributeValue("values")),klabel(KString@KSTRING("values")),hook(AttributeValue("MAP.values"))] + axiom B("true") [#ModuleComment(S("| \".\" [function, hook(MAP.unit)]")),#(Location(Int@INT-SYNTAX("39"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get a List consisting of all values in the Map: ")),#(Location(Int@INT-SYNTAX("74"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the difference of two maps interpreted as sets of entries\n ($M_1 \\setminus M2$) ")),#(Location(Int@INT-SYNTAX("57"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("58"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Update the Map by removing all key/value pairs with the key in the Set. ")),#(Location(Int@INT-SYNTAX("66"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("66"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("non-assoc"),S("_|->_"))] + axiom B("true") [#ModuleComment(S(" Construct a singleton Map (a Map with only one key/value pair). The key\n is on the left and the value is on the right ")),#(Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("\\section{Description} The Map represents a generalized associative array.\n Each key can be paired with an arbitrary value, and can be used to reference\n its associated value. Multiple bindings for the same key are not allowed. ")),#(Location(Int@INT-SYNTAX("29"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= sizeMap(Map@MAP) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),klabel(AttributeValue("sizeMap")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1826699684")),#(Location(Int@INT-SYNTAX("78"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("78"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("sizeMap")),hook(AttributeValue("MAP.size"))] + axiom B("true") [#ModuleComment(S(" Remove key/value pair associated with the key from map? ")),#(Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= `_[_<-_]`(Map@MAP,K@SORT-K,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("<-")),#NonTerminal(S("K@SORT-K")),#Terminal(S("]")),productionID(KString@KSTRING("802600647")),klabel(KString@KSTRING("_[_<-_]")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("MAP.update")),function(AttributeValue("")),prefer(AttributeValue(""))] + syntax Set@SET ::= keys(Map@MAP) [#Terminal(S("keys")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),klabel(AttributeValue("keys")),klabel(KString@KSTRING("keys")),relativeHook(AttributeValue("_Map_.keys")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("225472281")),#(Location(Int@INT-SYNTAX("70"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("MAP.keys"))] + syntax Bool@BOOL-SYNTAX ::= isMap@MAP(K@SORT-K) [#Terminal(S("isMap@MAP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Map@MAP")),klabel(KString@KSTRING("isMap@MAP"))] + axiom B("true") [#ModuleComment(S(" Get a Set consisting of all keys in the Map:")),#(Location(Int@INT-SYNTAX("69"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("69"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a new Map consisting of key/value pairs of two Maps (the keys of\n the two Maps are assumed disjoint) ")),#(Location(Int@INT-SYNTAX("33"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= _Map_(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#NonTerminal(S("Map@MAP")),assoc(AttributeValue("")),#(Location(Int@INT-SYNTAX("35"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("_Map_")),hook(AttributeValue("MAP.concat")),comm(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),element(AttributeValue("_|->_")),productionID(KString@KSTRING("1800031768")),index(AttributeValue("0")),unit(AttributeValue(".Map")),klabel(KString@KSTRING("_Map_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_Map_"))] + syntax Map@MAP ::= `(_)`(Map@MAP) [#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("2039810346")),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax Map@MAP ::= `_|->_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("|->")),#NonTerminal(S("K@SORT-K")),#(Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("101")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_|->_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1276504061")),latex(AttributeValue("{#1}\\mapsto{#2}")),hook(AttributeValue("MAP.element"))] + syntax Map@MAP [hook(AttributeValue("MAP.Map")),#(Location(Int@INT-SYNTAX("27"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= _-Map_(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#Terminal(S("-Map")),#NonTerminal(S("Map@MAP")),#(Location(Int@INT-SYNTAX("59"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),latex(AttributeValue("{#1}-_{\\it Map}{#2}")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("MAP.difference")),function(AttributeValue("")),productionID(KString@KSTRING("1014166943")),klabel(KString@KSTRING("_-Map_"))] + axiom B("true") [#ModuleComment(S(" Update the first map by adding all key/value pairs in the second map. If a\n key in the first map exists also in the second map, its associated value will\n be overwritten by the value from the second map. ")),#(Location(Int@INT-SYNTAX("61"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `Map:lookup`(Map@MAP,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),relativeHook(AttributeValue("_Map_.lookup")),productionID(KString@KSTRING("1139700454")),#(Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("Map:lookup")),klabel(KString@KSTRING("Map:lookup")),hook(AttributeValue("MAP.lookup"))] + axiom B("true") [#ModuleComment(S(" Retrieve the value associated with the given key ")),#(Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= updateMap(Map@MAP,Map@MAP) [#Terminal(S("updateMap")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(",")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("64"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("64"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("updateMap")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("990355670")),hook(AttributeValue("MAP.updateAll")),function(AttributeValue("")),klabel(AttributeValue("updateMap"))] + axiom B("true") [#ModuleComment(S(" Get the Map size (number of key/value pairs) ")),#(Location(Int@INT-SYNTAX("77"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("77"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" breaks klabel uniqueness")),#(Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Update a Map in form of of keys and values: ")),#(Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_<=Map_`(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#Terminal(S("<=Map")),#NonTerminal(S("Map@MAP")),productionID(KString@KSTRING("867148091")),klabel(KString@KSTRING("_<=Map_")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("81"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("MAP.inclusion"))] + syntax K@SORT-K ::= `Map:choice`(Map@MAP) [#Terminal(S("choice")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("Map:choice")),function(AttributeValue("")),klabel(AttributeValue("Map:choice")),productionID(KString@KSTRING("71587369")),hook(AttributeValue("MAP.choice")),#(Location(Int@INT-SYNTAX("84"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("23"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("85"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KAST + import BASIC-K [] + import KSTRING [] + import BOOL-SYNTAX [] + syntax KItem@BASIC-K ::= #None(KBott@BASIC-K) [#NonTerminal(S("KBott@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("97652294"))] + syntax KList@BASIC-K ::= #EmptyKList() [#Terminal(S(".KList")),hook(AttributeValue("org.kframework.kore.EmptyKList")),productionID(KString@KSTRING("1295226194")),#(Location(Int@INT-SYNTAX("45"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#EmptyKList")),klabel(KString@KSTRING("#EmptyKList")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #InjectedKLabel(KLabel@BASIC-K) [#Terminal(S("#klabel")),#Terminal(S("(")),#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("org.kframework.kore.InjectedKLabel")),klabel(AttributeValue("#InjectedKLabel")),klabel(KString@KSTRING("#InjectedKLabel")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1796371666"))] + axiom B("true") [#ModuleComment(S(" something that doesn't collide with meta-variables")),#(Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #EmptyKList() [#Terminal(S(".::KList")),hook(AttributeValue("org.kframework.kore.EmptyKList")),#(Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#EmptyKList")),productionID(KString@KSTRING("252651381")),klabel(KString@KSTRING("#EmptyKList")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #None(K@SORT-K) [#NonTerminal(S("K@SORT-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("44"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1059063940"))] + axiom B("true") [#ModuleComment(S(" we need to fix this issue so we can add this production back.")),#(Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#KList"))] + syntax KBott@BASIC-K ::= #KToken(KString@KSTRING,KString@KSTRING) [#Terminal(S("#token")),#Terminal(S("(")),#NonTerminal(S("KString@KSTRING")),#Terminal(S(",")),#NonTerminal(S("KString@KSTRING")),#Terminal(S(")")),hook(AttributeValue("org.kframework.kore.KToken")),klabel(AttributeValue("#KToken")),#(Location(Int@INT-SYNTAX("35"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("93314457")),klabel(KString@KSTRING("#KToken")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("TODO(dwightguth): there is some kind of weird issue with this production which is causing AddEmptyLists to behave incorrectly.")),#(Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #KApply(KLabel@BASIC-K,KList@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("KList@BASIC-K")),#Terminal(S(")")),klabel(AttributeValue("#KApply")),hook(AttributeValue("org.kframework.kore.KApply")),#(Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#KApply")),productionID(KString@KSTRING("2076287037")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | KList \",,\" KList [klabel(#KList), left, assoc, unit(#EmptyKList), hook(org.kframework.kore.KList), prefer]")),#(Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #KList(KList@BASIC-K,KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(",")),#NonTerminal(S("KList@BASIC-K")),klabel(KString@KSTRING("#KList")),assoc(AttributeValue("")),unit(AttributeValue("#EmptyKList")),hook(AttributeValue("org.kframework.kore.KList")),left(AttributeValue("")),productionID(KString@KSTRING("1514840818")),#(Location(Int@INT-SYNTAX("47"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("126")),classType(KString@KSTRING("org.kframework.attributes.Location"))),prefer(AttributeValue("")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#KList"))] + syntax KLabel@BASIC-K ::= ``() [#RegexTerminal(S("[a-zA-Z0-9]"),S("[#a-z][a-zA-Z0-9@\\-]*"),S("#")),token(AttributeValue("")),autoReject(AttributeValue("")),productionID(KString@KSTRING("1381713434")),klabel(KString@KSTRING("")),hook(AttributeValue("org.kframework.kore.KLabel")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax KLabel@BASIC-K ::= ``() [#RegexTerminal(S("#"),S("`(\\\\`|\\\\\\\\|[^`\\\\\n\r])+`"),S("#")),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("97")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("2146608740")),klabel(KString@KSTRING("")),hook(AttributeValue("org.kframework.kore.KLabel")),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("32"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/manasvi/Documents/k/kernel/target/../../k-distribution/include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] diff --git a/src/test/resources/imp.kore b/src/test/resources/imp.kore new file mode 100644 index 0000000..fa49718 --- /dev/null +++ b/src/test/resources/imp.kore @@ -0,0 +1,951 @@ +[#MainModule(S("SEMANTICS")),#EntryModules(S("K-BOTTOM-SORT"),S("K-REFLECTION"),S("ID"),S("RULE-PARSER"),S("AUTO-CASTS"),S("KSEQ"),S("K-TERM"),S("INT-SYNTAX"),S("RULE-LISTS"),S("DEFAULT-CONFIGURATION"),S("KSEQ-SYMBOLIC"),S("DOMAINS-SYNTAX"),S("RULE-CELLS"),S("K-IO"),S("SET"),S("FLOAT-SYNTAX"),S("BOOL-SYNTAX"),S("AUTO-FOLLOW"),S("K-SORT-LATTICE"),S("KCELLS"),S("IMP-SYNTAX"),S("STRING-SYNTAX"),S("BASIC-K"),S("K-EQUAL"),S("STDOUT-STREAM"),S("STRING"),S("STDIN-STREAM"),S("K-TOP-SORT"),S("IMP"),S("DOMAINS"),S("INT"),S("REQUIRES-ENSURES"),S("LIST"),S("PROGRAM-LISTS"),S("LANGUAGE-PARSING"),S("SEMANTICS"),S("SORT-K"),S("ID-PROGRAM-PARSING"),S("BOOL"),S("KSTRING"),S("K"),S("CONFIG-CELLS"),S("MAP"),S("KAST")),syntaxModule(KString@KSTRING("IMP-SYNTAX"))] + +module K-BOTTOM-SORT + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("143"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("143"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("144"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("144"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("146"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("146"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= KBott")),#(Location(Int@INT-SYNTAX("145"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("145"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("142"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("147"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-REFLECTION + import BASIC-K [] + import STRING [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" undefined")),#(Location(Int@INT-SYNTAX("532"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("532"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= getKLabel(K@SORT-K) [#Terminal(S("getKLabel")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),productionID(KString@KSTRING("1537471098")),#(Location(Int@INT-SYNTAX("529"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("529"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("getKLabel")),function(AttributeValue("")),hook(AttributeValue("KREFLECTION.getKLabel")),klabel(AttributeValue("getKLabel"))] + syntax Bool@BOOL-SYNTAX ::= isList@K-REFLECTION(K@SORT-K) [#Terminal(S("isList@K-REFLECTION")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("List@K-REFLECTION")),klabel(KString@KSTRING("isList@K-REFLECTION"))] + syntax List@K-REFLECTION ::= #argv() [#Terminal(S("#argv")),klabel(KString@KSTRING("#argv")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1876443073")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("533"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("533"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("KREFLECTION.argv"))] + axiom B("true") [#ModuleComment(S(" meaningful only for the purposes of compilation to a binary, otherwise")),#(Location(Int@INT-SYNTAX("531"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("531"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #configuration() [#Terminal(S("#configuration")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#configuration")),#(Location(Int@INT-SYNTAX("526"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("526"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("416841088")),impure(AttributeValue("")),hook(AttributeValue("KREFLECTION.configuration"))] + syntax String@STRING-SYNTAX ::= #sort(K@SORT-K) [#Terminal(S("#sort")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#sort")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("257608605")),function(AttributeValue("")),hook(AttributeValue("KREFLECTION.sort")),#(Location(Int@INT-SYNTAX("527"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("527"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#sort"))] + syntax KItem@BASIC-K ::= #fresh(String@STRING-SYNTAX) [#Terminal(S("#fresh")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("2082781203")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("528"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("528"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("#fresh")),klabel(AttributeValue("#fresh")),impure(AttributeValue("")),hook(AttributeValue("KREFLECTION.fresh"))] +endmodule [#(Location(Int@INT-SYNTAX("522"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("535"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module ID + import STRING [] + import BOOL-SYNTAX [] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(freshId(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),String2Id(`_+String_`(#(#(String@STRING-SYNTAX("\"_\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),Int2String(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("500"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("500"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isId@ID(K@SORT-K) [#Terminal(S("isId@ID")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Id@ID")),klabel(KString@KSTRING("isId@ID"))] + syntax Id@ID ::= freshId(Int@INT-SYNTAX) [#Terminal(S("freshId")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("freshId")),function(AttributeValue("")),freshGenerator(AttributeValue("")),#(Location(Int@INT-SYNTAX("499"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("499"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("259219561")),klabel(AttributeValue("freshId"))] + syntax Id@ID [#(Location(Int@INT-SYNTAX("493"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("493"),Int@INT-SYNTAX("11")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Id@ID ::= String2Id(String@STRING-SYNTAX) [#Terminal(S("String2Id")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),klabel(AttributeValue("String2Id")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("496"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("496"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("String2Id")),function(AttributeValue("")),productionID(KString@KSTRING("1899223686"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(String2Id(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`#parseToken(_,_)`(#(#(String@STRING-SYNTAX("\"Id@ID\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("497"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("497"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Id2String(Id@ID) [#Terminal(S("Id2String")),#Terminal(S("(")),#NonTerminal(S("Id@ID")),#Terminal(S(")")),klabel(AttributeValue("Id2String")),klabel(KString@KSTRING("Id2String")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1409154977")),function(AttributeValue("")),hook(AttributeValue("STRING.token2string")),#(Location(Int@INT-SYNTAX("495"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("495"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("490"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("501"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-PARSER + import RULE-CELLS [] + import RULE-LISTS [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" TODO: (radumereuta) don't use modules as markers to generate parsers")),#(Location(Int@INT-SYNTAX("105"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("105"),Int@INT-SYNTAX("74")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" imported in modules which generate rule parsers")),#(Location(Int@INT-SYNTAX("104"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("104"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("101"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("106"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module AUTO-CASTS + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" Sort ::= Sort \":Sort\"")),#(Location(Int@INT-SYNTAX("158"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("158"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("161"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("161"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= K \":>Sort\"")),#(Location(Int@INT-SYNTAX("160"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("160"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("155"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("155"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Sort ::= Sort \"::Sort\"")),#(Location(Int@INT-SYNTAX("157"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("157"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" KBott ::= Sort \"<:Sort\"")),#(Location(Int@INT-SYNTAX("159"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("159"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("156"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("156"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("154"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("162"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSEQ + import KAST [] + import K-TOP-SORT [] + import BOOL-SYNTAX [] + syntax KBott@BASIC-K ::= `(_)`(K@SORT-K) [#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("71399214")),#(Location(Int@INT-SYNTAX("63"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax KBott@BASIC-K ::= #KSequence(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("~>")),#NonTerminal(S("K@SORT-K")),assoc(AttributeValue("")),hook(AttributeValue("org.kframework.kore.KSequence")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#KSequence")),unit(AttributeValue("#EmptyK")),klabel(AttributeValue("#KSequence")),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("61"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("61"),Int@INT-SYNTAX("114")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("257608164"))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".")),klabel(AttributeValue("#EmptyK")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK")),productionID(KString@KSTRING("2036127838")),#(Location(Int@INT-SYNTAX("59"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#KSequence"))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".::K")),klabel(AttributeValue("#EmptyK")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("60"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1509791656")),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK"))] + syntax KBott@BASIC-K ::= #EmptyK() [#Terminal(S(".K")),klabel(AttributeValue("#EmptyK")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1076607567")),klabel(KString@KSTRING("#EmptyK")),hook(AttributeValue("org.kframework.kore.EmptyK")),#(Location(Int@INT-SYNTAX("58"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("58"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("64"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-TERM + import AUTO-CASTS [] + import KSEQ-SYMBOLIC [] + import BOOL-SYNTAX [] + import AUTO-FOLLOW [] + import K-SORT-LATTICE [] +endmodule [#(Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module INT-SYNTAX + import BOOL-SYNTAX [] + syntax Int@INT-SYNTAX [hook(AttributeValue("INT.Int")),#(Location(Int@INT-SYNTAX("254"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("254"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\+-]?[0-9]+"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("255"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("255"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1982787818")),klabel(KString@KSTRING("")),prefer(AttributeValue(""))] + syntax Bool@BOOL-SYNTAX ::= isInt@INT-SYNTAX(K@SORT-K) [#Terminal(S("isInt@INT-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Int@INT-SYNTAX")),klabel(KString@KSTRING("isInt@INT-SYNTAX"))] +endmodule [#(Location(Int@INT-SYNTAX("253"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("256"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-LISTS + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" adds the subsort production to the parsing module only:")),#(Location(Int@INT-SYNTAX("193"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("193"),Int@INT-SYNTAX("61")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= E [userList(\"*\")]")),#(Location(Int@INT-SYNTAX("194"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("194"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("192"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("192"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("191"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("196"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DEFAULT-CONFIGURATION + import BASIC-K [] + import MAP [] + import BOOL-SYNTAX [] + syntax KCell@DEFAULT-CONFIGURATION ::= ``(K@SORT-K) [#Terminal(S("")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),cell(),topcell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),maincell(),klabel(KString@KSTRING(""))] + syntax Bool@BOOL-SYNTAX ::= isKCell@DEFAULT-CONFIGURATION(K@SORT-K) [#Terminal(S("isKCell@DEFAULT-CONFIGURATION")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCell@DEFAULT-CONFIGURATION")),klabel(KString@KSTRING("isKCell@DEFAULT-CONFIGURATION"))] + syntax KCell@DEFAULT-CONFIGURATION ::= initKCell(Map@MAP) [#Terminal(S("initKCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initKCell"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(initKCell(Init:K@SORT-K),``(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + axiom B("true") [#Bubble(S("config"),S(" $PGM:K ")),#(Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("201"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),contentStartLine(Int@INT-SYNTAX("201")),contentStartColumn(Int@INT-SYNTAX("17"))] +endmodule [#(Location(Int@INT-SYNTAX("198"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("202"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSEQ-SYMBOLIC + import KSEQ [] + import BOOL-SYNTAX [] + syntax #KVariable@KSEQ-SYMBOLIC ::= ``() [#RegexTerminal(S("[A-Za-z0-9_\\$!\\?]"),S("(\\!|\\?)?([A-Z][A-Za-z0-9'_]*|_)"),S("#")),productionID(KString@KSTRING("1390869998")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("70"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("143")),classType(KString@KSTRING("org.kframework.attributes.Location"))),autoReject(AttributeValue("")),klabel(KString@KSTRING("")),hook(AttributeValue("org.kframework.kore.KVariable"))] + syntax KConfigVar@BASIC-K ::= ``() [#RegexTerminal(S("[A-Za-z0-9_\\$!\\?]"),S("(\\$)([A-Z][A-Za-z0-9'_]*)"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("2141817446")),autoReject(AttributeValue("")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("71"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("71"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax KBott@BASIC-K ::= ``(KConfigVar@BASIC-K) [#NonTerminal(S("KConfigVar@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("73"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("73"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1904253191"))] + syntax KBott@BASIC-K ::= ``(#KVariable@KSEQ-SYMBOLIC) [#NonTerminal(S("#KVariable@KSEQ-SYMBOLIC")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("72"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("72"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1577592551"))] + syntax Bool@BOOL-SYNTAX ::= is#KVariable@KSEQ-SYMBOLIC(K@SORT-K) [#Terminal(S("is#KVariable@KSEQ-SYMBOLIC")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#KVariable@KSEQ-SYMBOLIC")),klabel(KString@KSTRING("is#KVariable@KSEQ-SYMBOLIC"))] + syntax KLabel@BASIC-K ::= ``(#KVariable@KSEQ-SYMBOLIC) [#NonTerminal(S("#KVariable@KSEQ-SYMBOLIC")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("74"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1961173763"))] +endmodule [#(Location(Int@INT-SYNTAX("68"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("75"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DOMAINS-SYNTAX + import INT-SYNTAX [] + import STRING-SYNTAX [] + import ID [] + import BOOL-SYNTAX [] +endmodule [#(Location(Int@INT-SYNTAX("4"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module RULE-CELLS + import KCELLS [] + import BOOL-SYNTAX [] + syntax #OptionalDots@RULE-CELLS ::= #dots() [#Terminal(S("...")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1496355635")),#(Location(Int@INT-SYNTAX("97"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("97"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#dots")),klabel(AttributeValue("#dots"))] + axiom B("true") [#ModuleComment(S(" generates, for all productions that have the attribute 'cell' or 'maincell',")),#(Location(Int@INT-SYNTAX("93"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("93"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= is#OptionalDots@RULE-CELLS(K@SORT-K) [#Terminal(S("is#OptionalDots@RULE-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#OptionalDots@RULE-CELLS")),klabel(KString@KSTRING("is#OptionalDots@RULE-CELLS"))] + axiom B("true") [#ModuleComment(S("syntax Cell ::= \"\" #OptionalDots K #OptionalDots \"\" [klabel()]")),#(Location(Int@INT-SYNTAX("95"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" a production like below:")),#(Location(Int@INT-SYNTAX("94"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("94"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("92"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax #OptionalDots@RULE-CELLS ::= #noDots() [#Terminal(S("")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#noDots")),#(Location(Int@INT-SYNTAX("98"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#noDots")),productionID(KString@KSTRING("1484171695"))] +endmodule [#(Location(Int@INT-SYNTAX("90"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("99"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-IO + import STRING [] + import LIST [] + import BOOL-SYNTAX [] + syntax IOError@K-IO ::= #EINVAL() [#Terminal(S("#EINVAL")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("145"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("153")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1515638188")),klabel(KString@KSTRING("#EINVAL"))] + syntax KItem@BASIC-K ::= `#stat(_)`(String@STRING-SYNTAX) [#Terminal(S("#stat")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("555"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("555"),Int@INT-SYNTAX("75")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("838473569")),function(AttributeValue("")),impure(AttributeValue("")),klabel(KString@KSTRING("#stat(_)")),hook(AttributeValue("IO.stat"))] + syntax KItem@BASIC-K ::= #parse(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parse")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1426963578")),#(Location(Int@INT-SYNTAX("559"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("559"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#parse")),impure(AttributeValue("")),klabel(KString@KSTRING("#parse")),hook(AttributeValue("IO.parse"))] + syntax IOError@K-IO ::= #EOF() [#Terminal(S("#EOF")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("785570251")),klabel(KString@KSTRING("#EOF"))] + syntax IOError@K-IO ::= #ENOTDIR() [#Terminal(S("#ENOTDIR")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("875313400")),klabel(KString@KSTRING("#ENOTDIR"))] + syntax KItem@BASIC-K ::= #system(String@STRING-SYNTAX) [#Terminal(S("#system")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("IO.system")),#(Location(Int@INT-SYNTAX("580"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("580"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("1180244251")),klabel(AttributeValue("#system")),klabel(KString@KSTRING("#system")),impure(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" input")),#(Location(Int@INT-SYNTAX("560"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("560"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stdin(),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("571"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("571"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("571"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("571"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `#tell(_)`(Int@INT-SYNTAX) [#Terminal(S("#tell")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1846501247")),klabel(KString@KSTRING("#tell(_)")),function(AttributeValue("")),hook(AttributeValue("IO.tell")),#(Location(Int@INT-SYNTAX("545"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("545"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),impure(AttributeValue(""))] + syntax IOError@K-IO ::= #ENAMETOOLONG() [#Terminal(S("#ENAMETOOLONG")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1213818572")),klabel(KString@KSTRING("#ENAMETOOLONG"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stdout(),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("572"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("572"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("572"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("572"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `#putc(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#putc")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.putc")),productionID(KString@KSTRING("829149076")),impure(AttributeValue("")),klabel(KString@KSTRING("#putc(_,_)")),#(Location(Int@INT-SYNTAX("552"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("552"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" stdout ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("71"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" System")),#(Location(Int@INT-SYNTAX("578"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("578"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" start symbol")),#(Location(Int@INT-SYNTAX("561"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("561"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= `#read(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#read")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#read(_,_)")),productionID(KString@KSTRING("424398527")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("548"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("548"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),impure(AttributeValue("")),hook(AttributeValue("IO.read"))] + syntax KItem@BASIC-K ::= `#lstat(_)`(String@STRING-SYNTAX) [#Terminal(S("#lstat")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("IO.lstat")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("556"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("556"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("9797126")),impure(AttributeValue("")),klabel(KString@KSTRING("#lstat(_)"))] + axiom B("true") [#ModuleComment(S(" ------------------------------")),#(Location(Int@INT-SYNTAX("577"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("577"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax IOError@K-IO ::= #EBADF() [#Terminal(S("#EBADF")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("110"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("117")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("501705927")),klabel(KString@KSTRING("#EBADF"))] + syntax K@SORT-K ::= `#close(_)`(Int@INT-SYNTAX) [#Terminal(S("#close")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("268084911")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#close(_)")),function(AttributeValue("")),hook(AttributeValue("IO.close")),impure(AttributeValue("")),#(Location(Int@INT-SYNTAX("550"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("550"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax IOError@K-IO ::= #noparse() [#Terminal(S("#noparse")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("224100622")),klabel(KString@KSTRING("#noparse"))] + syntax K@SORT-K ::= `#write(_,_)`(Int@INT-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#write")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1678046232")),#(Location(Int@INT-SYNTAX("553"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("553"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("IO.write")),klabel(KString@KSTRING("#write(_,_)")),impure(AttributeValue(""))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#stderr(),#(#(Int@INT-SYNTAX("2"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("573"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("573"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("573"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("573"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `#open(_)`(String@STRING-SYNTAX) [#Terminal(S("#open")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("936653983")),#(Location(Int@INT-SYNTAX("543"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("543"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("#open(_)"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`#open(_)`(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`#open(_,_)`(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"rw\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("565"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("565"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `#seek(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("#seek")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("551"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("551"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("#seek(_,_)")),hook(AttributeValue("IO.seek")),impure(AttributeValue("")),productionID(KString@KSTRING("1406014249"))] + syntax IOError@K-IO ::= #ENOENT() [#Terminal(S("#ENOENT")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1138410383")),klabel(KString@KSTRING("#ENOENT"))] + syntax KItem@BASIC-K ::= `#systemResult(_,_,_)`(Int@INT-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#systemResult")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("110")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1432569632")),klabel(KString@KSTRING("#systemResult(_,_,_)"))] + syntax Int@INT-SYNTAX ::= #stdin() [#Terminal(S("#stdin")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("567"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("567"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("1225038340")),klabel(KString@KSTRING("#stdin"))] + syntax Int@INT-SYNTAX ::= `#getc(_)`(Int@INT-SYNTAX) [#Terminal(S("#getc")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("546"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("546"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("#getc(_)")),productionID(KString@KSTRING("671471369")),hook(AttributeValue("IO.getc")),impure(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" exit code ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #buffer(K@SORT-K) [#Terminal(S("#buffer")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#buffer")),productionID(KString@KSTRING("70323523")),klabel(AttributeValue("#buffer")),#(Location(Int@INT-SYNTAX("575"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("575"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax IOError@K-IO ::= #EACCES() [#Terminal(S("#EACCES")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("69"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("210281271")),klabel(KString@KSTRING("#EACCES"))] + syntax Int@INT-SYNTAX ::= #getTime() [#Terminal(S("#getTime")),hook(AttributeValue("IO.getTime")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1055096410")),#(Location(Int@INT-SYNTAX("547"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("547"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),impure(AttributeValue("")),klabel(KString@KSTRING("#getTime"))] + syntax Int@INT-SYNTAX ::= #stderr() [#Terminal(S("#stderr")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("569"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("569"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#stderr")),productionID(KString@KSTRING("658909832")),function(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" module name")),#(Location(Int@INT-SYNTAX("562"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("562"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= `#open(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#open")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),hook(AttributeValue("IO.open")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#open(_,_)")),productionID(KString@KSTRING("1128948651")),function(AttributeValue("")),impure(AttributeValue("")),#(Location(Int@INT-SYNTAX("544"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("544"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= isStream@K-IO(K@SORT-K) [#Terminal(S("isStream@K-IO")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Stream@K-IO")),klabel(KString@KSTRING("isStream@K-IO"))] + syntax Bool@BOOL-SYNTAX ::= isIOError@K-IO(K@SORT-K) [#Terminal(S("isIOError@K-IO")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("IOError@K-IO")),klabel(KString@KSTRING("isIOError@K-IO"))] + syntax KItem@BASIC-K ::= `#opendir(_)`(String@STRING-SYNTAX) [#Terminal(S("#opendir")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("844112759")),function(AttributeValue("")),hook(AttributeValue("IO.opendir")),impure(AttributeValue("")),#(Location(Int@INT-SYNTAX("557"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("557"),Int@INT-SYNTAX("81")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#opendir(_)"))] + syntax IOError@K-IO ::= #ESPIPE() [#Terminal(S("#ESPIPE")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1421866327")),klabel(KString@KSTRING("#ESPIPE"))] + syntax IOError@K-IO ::= #EISDIR() [#Terminal(S("#EISDIR")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("133"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("141")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1497018177")),klabel(KString@KSTRING("#EISDIR"))] + axiom B("true") [#ModuleComment(S(" stderr ")),#(Location(Int@INT-SYNTAX("581"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("581"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax IOError@K-IO ::= #ELOOP() [#Terminal(S("#ELOOP")),#(Location(Int@INT-SYNTAX("541"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("541"),Int@INT-SYNTAX("88")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1560940633")),klabel(KString@KSTRING("#ELOOP"))] + syntax Int@INT-SYNTAX ::= #stdout() [#Terminal(S("#stdout")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("568"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("568"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1906879951")),function(AttributeValue("")),klabel(KString@KSTRING("#stdout"))] + syntax KItem@BASIC-K ::= #parseInModule(String@STRING-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseInModule")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#parseInModule")),function(AttributeValue("")),hook(AttributeValue("IO.parseInModule")),#(Location(Int@INT-SYNTAX("560"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("563"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#parseInModule")),impure(AttributeValue("")),productionID(KString@KSTRING("1022081840"))] +endmodule [#(Location(Int@INT-SYNTAX("537"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("583"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module SET + import INT-SYNTAX [] + import BASIC-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" Get the difference of two sets ($A \\setminus B$)")),#(Location(Int@INT-SYNTAX("111"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET ::= `(_)`(Set@SET) [#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),productionID(KString@KSTRING("442987331")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("102"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("102"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax Set@SET ::= _Set_(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#NonTerminal(S("Set@SET")),assoc(AttributeValue("")),klabel(KString@KSTRING("_Set_")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),unit(AttributeValue(".Set")),idem(AttributeValue("")),comm(AttributeValue("")),productionID(KString@KSTRING("164974746")),left(AttributeValue("")),function(AttributeValue("")),klabel(AttributeValue("_Set_")),element(AttributeValue("SetItem")),#(Location(Int@INT-SYNTAX("98"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("SET.concat"))] + axiom B("true") [#ModuleComment(S(" Construct a singleton Set (a Set with only one element $\\{ a \\}$). To add\n an element $a$ to a set $A$, construct the union of the singleton set\n $\\{ a \\}$ and $A$ ($\\{ a \\} \\cup A$). ")),#(Location(Int@INT-SYNTAX("103"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("105"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" \\section{Description} The Set represents a mathematical set (a collection\n of unique items). ")),#(Location(Int@INT-SYNTAX("94"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("95"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("| \".\"")),#(Location(Int@INT-SYNTAX("101"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("101"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the intersection of two sets ($A \\cap B$) ")),#(Location(Int@INT-SYNTAX("108"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("108"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET ::= `Set:difference`(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#Terminal(S("-Set")),#NonTerminal(S("Set@SET")),klabel(AttributeValue("Set:difference")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("112"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("112"),Int@INT-SYNTAX("126")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1026055550")),latex(AttributeValue("{#1}-_{\\it Set}{#2}")),function(AttributeValue("")),klabel(KString@KSTRING("Set:difference")),hook(AttributeValue("SET.difference"))] + syntax Bool@BOOL-SYNTAX ::= `Set:in`(K@SORT-K,Set@SET) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in")),#NonTerminal(S("Set@SET")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("195228908")),hook(AttributeValue("SET.in")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("115"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("115"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("Set:in")),relativeHook(AttributeValue("_Set_.in")),klabel(KString@KSTRING("Set:in"))] + axiom B("true") [#ModuleComment(S(" Get an arbitrarily chosen element of the Set ")),#(Location(Int@INT-SYNTAX("123"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= `Set:choice`(Set@SET) [#Terminal(S("choice")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),klabel(AttributeValue("Set:choice")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("Set:choice")),hook(AttributeValue("SET.choice")),function(AttributeValue("")),productionID(KString@KSTRING("1170727939")),#(Location(Int@INT-SYNTAX("124"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("124"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Construct an empty Set ")),#(Location(Int@INT-SYNTAX("99"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("99"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" TODO(AndreiS): remove this if not used")),#(Location(Int@INT-SYNTAX("127"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("127"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the cardinality of a set ($|A|$) ")),#(Location(Int@INT-SYNTAX("120"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("120"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("requires notBool(K in S1)")),#(Location(Int@INT-SYNTAX("129"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("129"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_<=Set_`(Set@SET,Set@SET) [#NonTerminal(S("Set@SET")),#Terminal(S("<=Set")),#NonTerminal(S("Set@SET")),#(Location(Int@INT-SYNTAX("118"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("118"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1574598287")),hook(AttributeValue("SET.inclusion")),function(AttributeValue("")),klabel(KString@KSTRING("_<=Set_"))] + syntax Bool@BOOL-SYNTAX ::= isSet@SET(K@SORT-K) [#Terminal(S("isSet@SET")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Set@SET")),klabel(KString@KSTRING("isSet@SET"))] + syntax Set@SET [hook(AttributeValue("SET.Set")),#(Location(Int@INT-SYNTAX("92"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Check element membership in a set ($a \\in A$) ")),#(Location(Int@INT-SYNTAX("114"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("114"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("rule S:Set -Set .Set => S")),#(Location(Int@INT-SYNTAX("130"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("130"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a new Set as the union of two different sets ($A \\cup B$) ")),#(Location(Int@INT-SYNTAX("97"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("97"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" set difference axioms ")),#(Location(Int@INT-SYNTAX("126"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("126"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_Set_"))] + axiom B("true") [#ModuleComment(S(" Check set inclusion ($A \\subseteq B$) ")),#(Location(Int@INT-SYNTAX("117"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("117"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= size(Set@SET) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),hook(AttributeValue("SET.size")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("size")),klabel(KString@KSTRING("size")),productionID(KString@KSTRING("978508707")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("121"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Set@SET ::= .Set() [#Terminal(S(".Set")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),latex(AttributeValue("\\dotCt{Set}")),klabel(KString@KSTRING(".Set")),hook(AttributeValue("SET.unit")),function(AttributeValue("")),productionID(KString@KSTRING("2125238280")),#(Location(Int@INT-SYNTAX("100"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("100"),Int@INT-SYNTAX("88")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Set@SET ::= SetItem(K@SORT-K) [#Terminal(S("SetItem")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(AttributeValue("SetItem")),productionID(KString@KSTRING("2087258327")),hook(AttributeValue("SET.element")),klabel(KString@KSTRING("SetItem")),#(Location(Int@INT-SYNTAX("106"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("106"),Int@INT-SYNTAX("71")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S("rule S1:Set -Set (SetItem(K:K) S2:Set) => S1 -Set S2")),#(Location(Int@INT-SYNTAX("128"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("128"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Set@SET ::= intersectSet(Set@SET,Set@SET) [#Terminal(S("intersectSet")),#Terminal(S("(")),#NonTerminal(S("Set@SET")),#Terminal(S(",")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),hook(AttributeValue("SET.intersection")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("intersectSet")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("109"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("109"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("intersectSet")),productionID(KString@KSTRING("1261153343"))] +endmodule [#(Location(Int@INT-SYNTAX("87"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module FLOAT-SYNTAX + import BOOL-SYNTAX [] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\+\\-]?Infinity([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("231786897")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("322"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("322"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("([\\+\\-]?[0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][\\+\\-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+))?([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("119290689")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("321"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("321"),Int@INT-SYNTAX("147")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Float@FLOAT-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("NaN([fFdD]|([pP][0-9]+[xX][0-9]+))?"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("142247393")),#(Location(Int@INT-SYNTAX("323"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("323"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING(""))] + syntax Float@FLOAT-SYNTAX [hook(AttributeValue("FLOAT.Float")),#(Location(Int@INT-SYNTAX("320"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("320"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isFloat@FLOAT-SYNTAX(K@SORT-K) [#Terminal(S("isFloat@FLOAT-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Float@FLOAT-SYNTAX")),klabel(KString@KSTRING("isFloat@FLOAT-SYNTAX"))] +endmodule [#(Location(Int@INT-SYNTAX("319"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("324"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BOOL-SYNTAX + import SORT-K [] + syntax Bool@BOOL-SYNTAX ::= isK@SORT-K(K@SORT-K) [#Terminal(S("isK@SORT-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("K@SORT-K")),klabel(KString@KSTRING("isK@SORT-K"))] + syntax Bool@BOOL-SYNTAX [hook(AttributeValue("BOOL.Bool")),#(Location(Int@INT-SYNTAX("196"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("196"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isBool@BOOL-SYNTAX(K@SORT-K) [#Terminal(S("isBool@BOOL-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bool@BOOL-SYNTAX")),klabel(KString@KSTRING("isBool@BOOL-SYNTAX"))] + syntax Bool@BOOL-SYNTAX ::= true() [#Terminal(S("true")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("197"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("197"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("361398902")),klabel(KString@KSTRING("true"))] + syntax Bool@BOOL-SYNTAX ::= false() [#Terminal(S("false")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),klabel(KString@KSTRING("false")),productionID(KString@KSTRING("510063093")),#(Location(Int@INT-SYNTAX("198"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("198"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("193"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("199"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module AUTO-FOLLOW + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" syntax K ::= K K")),#(Location(Int@INT-SYNTAX("171"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("171"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"ab\"")),#(Location(Int@INT-SYNTAX("170"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("170"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"b\"")),#(Location(Int@INT-SYNTAX("169"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("169"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("165"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("165"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates a follow restriction for every terminal which is a prefix")),#(Location(Int@INT-SYNTAX("166"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("166"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" because it would turn the terminal into the terminal \"ab\".")),#(Location(Int@INT-SYNTAX("174"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("174"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" of another terminal. This is useful to prevent ambiguities such as:")),#(Location(Int@INT-SYNTAX("167"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" #parse(\"ab\", \"K\")")),#(Location(Int@INT-SYNTAX("172"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("172"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" syntax K ::= \"a\"")),#(Location(Int@INT-SYNTAX("168"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("168"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" In the above example, the terminal \"a\" is not allowed to be followed by a \"b\"")),#(Location(Int@INT-SYNTAX("173"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("173"),Int@INT-SYNTAX("83")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("164"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("175"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-SORT-LATTICE + import K-TOP-SORT [] + import K-BOTTOM-SORT [] + import BOOL-SYNTAX [] +endmodule [#(Location(Int@INT-SYNTAX("149"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("152"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KCELLS + import KAST [] + import BOOL-SYNTAX [] + syntax Bag@KCELLS ::= ``(Cell@KCELLS) [#NonTerminal(S("Cell@KCELLS")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("84"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1610525991"))] + syntax Bag@KCELLS ::= #cells() [#Terminal(S(".::Bag")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#cells")),#(Location(Int@INT-SYNTAX("83"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("83"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cells")),productionID(KString@KSTRING("1164440413"))] + syntax Bag@KCELLS ::= #cells() [#Terminal(S(".Bag")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#cells")),#(Location(Int@INT-SYNTAX("82"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("82"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cells")),productionID(KString@KSTRING("771775563"))] + syntax K@SORT-K ::= ``(Bag@KCELLS) [#NonTerminal(S("Bag@KCELLS")),#(Location(Int@INT-SYNTAX("86"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("86"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("112797691"))] + syntax Cell@KCELLS [#(Location(Int@INT-SYNTAX("80"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("80"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bag@KCELLS ::= ``(KBott@BASIC-K) [#NonTerminal(S("KBott@BASIC-K")),#(Location(Int@INT-SYNTAX("87"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("87"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("7967307"))] + syntax Bag@KCELLS ::= #cells(Bag@KCELLS,Bag@KCELLS) [#NonTerminal(S("Bag@KCELLS")),#NonTerminal(S("Bag@KCELLS")),assoc(AttributeValue("")),productionID(KString@KSTRING("1766505436")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("81"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("69")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#cells")),left(AttributeValue("")),unit(AttributeValue("#cells")),klabel(AttributeValue("#cells"))] + syntax Bool@BOOL-SYNTAX ::= isBag@KCELLS(K@SORT-K) [#Terminal(S("isBag@KCELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bag@KCELLS")),klabel(KString@KSTRING("isBag@KCELLS"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#cells"))] + syntax Bag@KCELLS ::= `(_)`(Bag@KCELLS) [#Terminal(S("(")),#NonTerminal(S("Bag@KCELLS")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("530737374")),#(Location(Int@INT-SYNTAX("85"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("85"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax Bool@BOOL-SYNTAX ::= isCell@KCELLS(K@SORT-K) [#Terminal(S("isCell@KCELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Cell@KCELLS")),klabel(KString@KSTRING("isCell@KCELLS"))] +endmodule [#(Location(Int@INT-SYNTAX("77"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("88"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module IMP-SYNTAX + import DOMAINS-SYNTAX [] + import BOOL-SYNTAX [] + axiom B("true") [#Context(``(``(#kseq(`_&&_`(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("11"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("1")),productionID(KString@KSTRING("1337866219")),klabel(KString@KSTRING("_&&_"))] + syntax AExp@IMP-SYNTAX ::= `(_)`(AExp@IMP-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("AExp@IMP-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("7"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("7"),Int@INT-SYNTAX("55")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("388104475")),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + axiom B("true") [#Context(``(``(#kseq(`_+_`(#(K0:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),klabel(KString@KSTRING("_+_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),productionID(KString@KSTRING("1760670079"))] + syntax Stmt@IMP-SYNTAX ::= ``(Block@IMP-SYNTAX) [#NonTerminal(S("Block@IMP-SYNTAX")),#(Location(Int@INT-SYNTAX("15"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1642785848"))] + syntax AExp@IMP-SYNTAX ::= `_+_`(AExp@IMP-SYNTAX,AExp@IMP-SYNTAX) [#NonTerminal(S("AExp@IMP-SYNTAX")),#Terminal(S("+")),#NonTerminal(S("AExp@IMP-SYNTAX")),klabel(KString@KSTRING("_+_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),productionID(KString@KSTRING("1760670079"))] + syntax Block@IMP-SYNTAX ::= `{}`() [#Terminal(S("{")),#Terminal(S("}")),#(Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1176968662")),klabel(KString@KSTRING("{}"))] + syntax Bool@BOOL-SYNTAX ::= isStmt@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isStmt@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Stmt@IMP-SYNTAX")),klabel(KString@KSTRING("isStmt@IMP-SYNTAX"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_/_"))] + axiom B("true") [#Context(``(``(#kseq(`_/_`(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue(""))] + syntax BExp@IMP-SYNTAX ::= `_<=_`(AExp@IMP-SYNTAX,AExp@IMP-SYNTAX) [#NonTerminal(S("AExp@IMP-SYNTAX")),#Terminal(S("<=")),#NonTerminal(S("AExp@IMP-SYNTAX")),klabel(KString@KSTRING("_<=_")),latex(AttributeValue("{#1}\\leq{#2}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + axiom B("true") [#Context(``(``(#kseq(`_+_`(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),klabel(KString@KSTRING("_+_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),productionID(KString@KSTRING("1760670079"))] + syntax Block@IMP-SYNTAX ::= `{_}`(Stmt@IMP-SYNTAX) [#Terminal(S("{")),#NonTerminal(S("Stmt@IMP-SYNTAX")),#Terminal(S("}")),#(Location(Int@INT-SYNTAX("14"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("297490204")),klabel(KString@KSTRING("{_}"))] + syntax AExp@IMP-SYNTAX ::= `_/_`(AExp@IMP-SYNTAX,AExp@IMP-SYNTAX) [#NonTerminal(S("AExp@IMP-SYNTAX")),#Terminal(S("/")),#NonTerminal(S("AExp@IMP-SYNTAX")),productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue(""))] + axiom B("true") [#Context(``(``(#kseq(`_<=_`(#(K0:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),isKResult@BASIC-K(#(K0:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),klabel(KString@KSTRING("_<=_")),latex(AttributeValue("{#1}\\leq{#2}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + syntax Ids@IMP-SYNTAX ::= `_,_`(Id@ID,Ids@IMP-SYNTAX) [#NonTerminal(S("Id@ID")),#Terminal(S(",")),#NonTerminal(S("Ids@IMP-SYNTAX")),klabel(KString@KSTRING("_,_")),right(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("22"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),userList(KString@KSTRING("*")),productionID(KString@KSTRING("1077072774"))] + syntax AExp@IMP-SYNTAX ::= ``(Id@ID) [#NonTerminal(S("Id@ID")),#(Location(Int@INT-SYNTAX("4"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1097324923"))] + syntax Stmt@IMP-SYNTAX ::= `while(_)_`(BExp@IMP-SYNTAX,Block@IMP-SYNTAX) [#Terminal(S("while")),#Terminal(S("(")),#NonTerminal(S("BExp@IMP-SYNTAX")),#Terminal(S(")")),#NonTerminal(S("Block@IMP-SYNTAX")),#(Location(Int@INT-SYNTAX("19"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1465346452")),klabel(KString@KSTRING("while(_)_"))] + syntax BExp@IMP-SYNTAX ::= `_&&_`(BExp@IMP-SYNTAX,BExp@IMP-SYNTAX) [#NonTerminal(S("BExp@IMP-SYNTAX")),#Terminal(S("&&")),#NonTerminal(S("BExp@IMP-SYNTAX")),#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("11"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("1")),productionID(KString@KSTRING("1337866219")),klabel(KString@KSTRING("_&&_"))] + syntax Bool@BOOL-SYNTAX ::= isBlock@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isBlock@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Block@IMP-SYNTAX")),klabel(KString@KSTRING("isBlock@IMP-SYNTAX"))] + syntax Bool@BOOL-SYNTAX ::= isAExp@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isAExp@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("AExp@IMP-SYNTAX")),klabel(KString@KSTRING("isAExp@IMP-SYNTAX"))] + syntax AExp@IMP-SYNTAX ::= ``(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("4"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("708348097"))] + syntax BExp@IMP-SYNTAX ::= `(_)`(BExp@IMP-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("BExp@IMP-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)")),productionID(KString@KSTRING("313082880")),#(Location(Int@INT-SYNTAX("12"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("55")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#Context(``(``(#kseq(`if(_)_else_`(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:_,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),klabel(KString@KSTRING("if(_)_else_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),strict(AttributeValue("1")),productionID(KString@KSTRING("1872973138")),#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax BExp@IMP-SYNTAX ::= ``(Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Location(Int@INT-SYNTAX("8"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("965586344"))] + syntax Pgm@IMP-SYNTAX ::= `int_;_`(Ids@IMP-SYNTAX,Stmt@IMP-SYNTAX) [#Terminal(S("int")),#NonTerminal(S("Ids@IMP-SYNTAX")),#Terminal(S(";")),#NonTerminal(S("Stmt@IMP-SYNTAX")),#(Location(Int@INT-SYNTAX("21"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1664598529")),klabel(KString@KSTRING("int_;_"))] + axiom B("true") [#Context(``(``(#kseq(`_<=_`(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),klabel(KString@KSTRING("_<=_")),latex(AttributeValue("{#1}\\leq{#2}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_&&_"))] + syntax Bool@BOOL-SYNTAX ::= isIds@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isIds@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Ids@IMP-SYNTAX")),klabel(KString@KSTRING("isIds@IMP-SYNTAX"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("__"))] + syntax Bool@BOOL-SYNTAX ::= isBExp@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isBExp@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("BExp@IMP-SYNTAX")),klabel(KString@KSTRING("isBExp@IMP-SYNTAX"))] + axiom B("true") [#Context(``(``(#kseq(`_/_`(#(K0:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue(""))] + syntax BExp@IMP-SYNTAX ::= `!_`(BExp@IMP-SYNTAX) [#Terminal(S("!")),#NonTerminal(S("BExp@IMP-SYNTAX")),#(Location(Int@INT-SYNTAX("10"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("10"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("!_")),productionID(KString@KSTRING("660339123")),strict(AttributeValue(""))] + syntax Stmt@IMP-SYNTAX ::= `if(_)_else_`(BExp@IMP-SYNTAX,Block@IMP-SYNTAX,Block@IMP-SYNTAX) [#Terminal(S("if")),#Terminal(S("(")),#NonTerminal(S("BExp@IMP-SYNTAX")),#Terminal(S(")")),#NonTerminal(S("Block@IMP-SYNTAX")),#Terminal(S("else")),#NonTerminal(S("Block@IMP-SYNTAX")),klabel(KString@KSTRING("if(_)_else_")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),strict(AttributeValue("1")),productionID(KString@KSTRING("1872973138")),#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Stmt@IMP-SYNTAX ::= `_=_;`(Id@ID,AExp@IMP-SYNTAX) [#NonTerminal(S("Id@ID")),#Terminal(S("=")),#NonTerminal(S("AExp@IMP-SYNTAX")),#Terminal(S(";")),#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("307400933")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_=_;")),strict(AttributeValue("2"))] + axiom B("true") [#Context(``(``(#kseq(`_=_;`(#(K0:_,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("307400933")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_=_;")),strict(AttributeValue("2"))] + axiom B("true") [#Context(``(``(#kseq(`!_`(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#kseq(#(DotVar1:_,sort(String@STRING-SYNTAX("K@SORT-K"))),#kseqnil()))),DotVar0:_),Bool@BOOL-SYNTAX("true")),#(Location(Int@INT-SYNTAX("10"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("10"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("!_")),productionID(KString@KSTRING("660339123")),strict(AttributeValue(""))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_+_"))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("while(_)_"),S("_=_;"),S("if(_)_else_")),#SyntaxPriorityGroup(S("__")))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_/_")),#SyntaxPriorityGroup(S("_+_"),S("(_)")))] + syntax Ids@IMP-SYNTAX ::= `.List{"_,_"}`() [#Terminal(S(".Ids")),klabel(KString@KSTRING(".List{\"_,_\"}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("22"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),userList(KString@KSTRING("*")),productionID(KString@KSTRING("1077072774"))] + syntax Bool@BOOL-SYNTAX ::= isPgm@IMP-SYNTAX(K@SORT-K) [#Terminal(S("isPgm@IMP-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Pgm@IMP-SYNTAX")),klabel(KString@KSTRING("isPgm@IMP-SYNTAX"))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_<=_"),S("!_")),#SyntaxPriorityGroup(S("_&&_"),S("(_)")))] + syntax Stmt@IMP-SYNTAX ::= __(Stmt@IMP-SYNTAX,Stmt@IMP-SYNTAX) [#NonTerminal(S("Stmt@IMP-SYNTAX")),#NonTerminal(S("Stmt@IMP-SYNTAX")),klabel(KString@KSTRING("__")),productionID(KString@KSTRING("1740223770")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("20"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("3"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STRING-SYNTAX + import BASIC-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" | [\\\\][U] 8*Hex // \"\\UFFffFFff\" Backslash 'U' followed by eight hexadecimal characters")),#(Location(Int@INT-SYNTAX("402"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("402"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | [\\\\][nrtf\\\"\\\\] // Backslash followed by either 'nrtf', DoubleQuote or Backslash")),#(Location(Int@INT-SYNTAX("399"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("399"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isString@STRING-SYNTAX(K@SORT-K) [#Terminal(S("isString@STRING-SYNTAX")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("String@STRING-SYNTAX")),klabel(KString@KSTRING("isString@STRING-SYNTAX"))] + axiom B("true") [#ModuleComment(S(" | [\\\\][u] 4*Hex // \"\\uFFFF\" Backslash 'u' followed by four hexadecimal characters")),#(Location(Int@INT-SYNTAX("401"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("401"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" StringChar ::= ~[\\\"\\n\\r\\\\] // anything except for Newline, DoubleQuote and Backslash")),#(Location(Int@INT-SYNTAX("398"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("398"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX [hook(AttributeValue("STRING.String")),#(Location(Int@INT-SYNTAX("404"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("404"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" // the code must not be in the range [0xdfff, 0xd800] or exceed 0x10ffff")),#(Location(Int@INT-SYNTAX("403"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("403"),Int@INT-SYNTAX("107")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | [\\\\][x] 2*Hex // \"\\xFF\" Backslash 'x' followed by two hexadecimal characters")),#(Location(Int@INT-SYNTAX("400"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("400"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" DoubleQuote StringChar* DoubleQuote")),#(Location(Int@INT-SYNTAX("397"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("397"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= ``() [#RegexTerminal(S("#"),S("[\\\"](([^\\\"\n\r\\\\])|([\\\\][nrtf\\\"\\\\])|([\\\\][x][0-9a-fA-F]{2})|([\\\\][u][0-9a-fA-F]{4})|([\\\\][U][0-9a-fA-F]{8}))*[\\\"]"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("405"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("405"),Int@INT-SYNTAX("169")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("")),productionID(KString@KSTRING("243194708"))] + axiom B("true") [#ModuleComment(S(" Double Quoted Strings are of the form:")),#(Location(Int@INT-SYNTAX("396"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("396"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("393"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("406"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BASIC-K + import SORT-K [] + import BOOL-SYNTAX [] + syntax KLabel@BASIC-K ::= #SemanticCastToKLabel@BASIC-K(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKLabel@BASIC-K"))] + syntax KList@BASIC-K ::= #SemanticCastToKList@BASIC-K(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKList@BASIC-K"))] + syntax MetaVariable@BASIC-K [#(Location(Int@INT-SYNTAX("23"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isKBott@BASIC-K(K@SORT-K) [#Terminal(S("isKBott@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KBott@BASIC-K")),klabel(KString@KSTRING("isKBott@BASIC-K"))] + syntax KLabel@BASIC-K ::= #OuterCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":>KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KList@BASIC-K ::= #SemanticCastToKList@BASIC-K(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKList@BASIC-K"))] + syntax KList@BASIC-K ::= #OuterCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":>KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KConfigVar@BASIC-K [#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #SyntacticCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("::K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KResult@BASIC-K [#(Location(Int@INT-SYNTAX("19"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KItem@BASIC-K ::= #SyntacticCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("::KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + axiom B("true") [#ModuleComment(S(" used by the backend")),#(Location(Int@INT-SYNTAX("22"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bottom@BASIC-K [#(Location(Int@INT-SYNTAX("24"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KLabel@BASIC-K [#(Location(Int@INT-SYNTAX("13"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("13"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isBottom@BASIC-K(K@SORT-K) [#Terminal(S("isBottom@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Bottom@BASIC-K")),klabel(KString@KSTRING("isBottom@BASIC-K"))] + syntax K@SORT-K ::= #SemanticCastToK@SORT-K(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SemanticCastToK@SORT-K"))] + syntax KList@BASIC-K [#(Location(Int@INT-SYNTAX("18"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K [#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isKLabel@BASIC-K(K@SORT-K) [#Terminal(S("isKLabel@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KLabel@BASIC-K")),klabel(KString@KSTRING("isKLabel@BASIC-K"))] + syntax KLabel@BASIC-K ::= #OuterCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":>KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KLabel@BASIC-K ::= #SyntacticCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("::KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KList@BASIC-K ::= #InnerCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("<:KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax Bool@BOOL-SYNTAX ::= isMetaVariable@BASIC-K(K@SORT-K) [#Terminal(S("isMetaVariable@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("MetaVariable@BASIC-K")),klabel(KString@KSTRING("isMetaVariable@BASIC-K"))] + syntax K@SORT-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KItem@BASIC-K ::= #SemanticCastToKItem@BASIC-K(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S(":KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKItem@BASIC-K"))] + syntax KLabel@BASIC-K ::= #InnerCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("<:KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KItem@BASIC-K ::= #SyntacticCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("::KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KLabel@BASIC-K ::= #SyntacticCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("::KLabel")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KList@BASIC-K ::= #SyntacticCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("::KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax KBott@BASIC-K ::= #InnerCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("<:KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax Bool@BOOL-SYNTAX ::= isKItem@BASIC-K(K@SORT-K) [#Terminal(S("isKItem@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KItem@BASIC-K")),klabel(KString@KSTRING("isKItem@BASIC-K"))] + syntax KList@BASIC-K ::= #SyntacticCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("::KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax Bool@BOOL-SYNTAX ::= isKResult@BASIC-K(K@SORT-K) [#Terminal(S("isKResult@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KResult@BASIC-K")),klabel(KString@KSTRING("isKResult@BASIC-K"))] + syntax K@SORT-K ::= #SyntacticCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("::K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SyntacticCast"))] + syntax K@SORT-K ::= #SemanticCastToK@SORT-K(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#SemanticCastToK@SORT-K"))] + axiom B("true") [#ModuleComment(S(" here will be automatically added the casts for KLabel, KItem, K and KList")),#(Location(Int@INT-SYNTAX("20"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isKList@BASIC-K(K@SORT-K) [#Terminal(S("isKList@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KList@BASIC-K")),klabel(KString@KSTRING("isKList@BASIC-K"))] + syntax KBott@BASIC-K ::= #InnerCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("<:K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KLabel@BASIC-K ::= #SemanticCastToKLabel@BASIC-K(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(":KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKLabel@BASIC-K"))] + syntax K@SORT-K ::= ``(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("15"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("558216562"))] + syntax KBott@BASIC-K ::= #InnerCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("<:K@SORT-K")),sort(String@STRING-SYNTAX("K@SORT-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KItem@BASIC-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KLabel@BASIC-K ::= #InnerCast(KLabel@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("<:KLabel@BASIC-K")),sort(String@STRING-SYNTAX("KLabel@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KItem@BASIC-K [hook(AttributeValue("K.KItem")),#(Location(Int@INT-SYNTAX("14"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KItem@BASIC-K ::= #OuterCast(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S(":>KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax Bool@BOOL-SYNTAX ::= isKConfigVar@BASIC-K(K@SORT-K) [#Terminal(S("isKConfigVar@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KConfigVar@BASIC-K")),klabel(KString@KSTRING("isKConfigVar@BASIC-K"))] + syntax KList@BASIC-K ::= #OuterCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(":>KList@BASIC-K")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#OuterCast"))] + syntax KItem@BASIC-K ::= #SemanticCastToKItem@BASIC-K(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S(":KItem")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#SemanticCastToKItem@BASIC-K"))] + syntax KBott@BASIC-K ::= #InnerCast(KItem@BASIC-K) [#NonTerminal(S("KItem@BASIC-K")),#Terminal(S("<:KItem@BASIC-K")),sort(String@STRING-SYNTAX("KItem@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] + syntax KList@BASIC-K ::= #InnerCast(KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S("<:KList")),sort(String@STRING-SYNTAX("KList@BASIC-K")),klabel(KString@KSTRING("#InnerCast"))] +endmodule [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-EQUAL + import BOOL [] + import BASIC-K [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= `_=/=K_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("=/=K")),#NonTerminal(S("K@SORT-K")),hook(AttributeValue("KEQUAL.ne")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_=/=K_")),function(AttributeValue("")),smtlib(AttributeValue("distinct")),latex(AttributeValue("{#1}\\mathrel{\\neq_K}{#2}")),notEqualEqualK(AttributeValue("")),productionID(KString@KSTRING("900636745")),#(Location(Int@INT-SYNTAX("509"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("509"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_=/=K_"),S("_==K_")),#SyntaxPriorityGroup(S("_orElseBool_"),S("_orBool_"),S("_andThenBool_"),S("_impliesBool_"),S("_andBool_"),S("notBool_"),S("_xorBool_")))] + syntax Bool@BOOL-SYNTAX ::= `_==K_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("==K")),#NonTerminal(S("K@SORT-K")),productionID(KString@KSTRING("379478400")),klabel(KString@KSTRING("_==K_")),smtlib(AttributeValue("=")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("KEQUAL.eq")),#(Location(Int@INT-SYNTAX("508"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("508"),Int@INT-SYNTAX("121")),classType(KString@KSTRING("org.kframework.attributes.Location"))),equalEqualK(AttributeValue("")),function(AttributeValue("")),latex(AttributeValue("{#1}\\mathrel{=_K}{#2}"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#if_#then_#else_#fi(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_11:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("518"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("518"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_=/=K_`(#(#(#(K1:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K2:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),notBool_(`_==K_`(#(#(#(K1:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("10")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(#(K2:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("512"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("512"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_==Bool_`(#(#(#(K1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(K2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),`_==K_`(#(#(#(K1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(K2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("514"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("514"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=K_"),S("_==K_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(#if_#then_#else_#fi(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(_10:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("517"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("517"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= #if_#then_#else_#fi(Bool@BOOL-SYNTAX,K@SORT-K,K@SORT-K) [#Terminal(S("#if")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("#then")),#NonTerminal(S("K@SORT-K")),#Terminal(S("#else")),#NonTerminal(S("K@SORT-K")),#Terminal(S("#fi")),hook(AttributeValue("KEQUAL.ite")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("516"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("516"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("27362884")),klabel(KString@KSTRING("#if_#then_#else_#fi"))] +endmodule [#(Location(Int@INT-SYNTAX("503"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("520"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STDOUT-STREAM + import K-IO [] + import MAP [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("703"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("703"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(#match(ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"))),#match(ListItem(#(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("3")))),#match(ListItem(_33:_),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#match(ListItem(#ostream(#(_32:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(#(_34:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("0")))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_32:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_33:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Int2String(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))))),.List()),#(_34:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("706"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("714"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(#KRewrite(#KSequence(OR(AND(initStdoutCell(Init:K@SORT-K),OR(isRule(K@SORT-K("13716457")))),AND(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),OR(isRule(K@SORT-K("599460237")),isRule(K@SORT-K("1353915770")),isRule(K@SORT-K("-799365493")),isRule(K@SORT-K("948234663"))))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),OR(AND(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_25:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_26:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))))),.List()),#(_27:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("948234663"))),AND(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#ostream(#KSequence(`#write(_,_)`(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("730"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("730"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("731"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("731"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_28:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-799365493"))),AND(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_29:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_30:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Float2String(#(#(#(F:Float@FLOAT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX")))))))),.List()),#(_31:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("599460237"))),AND(#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_32:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_33:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("709"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("709"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Int2String(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("710"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("710"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))))),.List()),#(_34:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1353915770"))),AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(#ostream(#stdout())),ListItem(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("13716457")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [automaton()] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(#match(ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"))),#match(#(_27:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("0")))),#match(ListItem(#ostream(#(_25:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("3")))),#match(ListItem(_26:_),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_25:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_26:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("719"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("719"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("720"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("720"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))))),.List()),#(_27:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("716"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("724"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + syntax StdoutCell@STDOUT-STREAM ::= initStdoutCell(Map@MAP) [#Terminal(S("initStdoutCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initStdoutCell"))] + syntax Bool@BOOL-SYNTAX ::= isStdoutCell@STDOUT-STREAM(K@SORT-K) [#Terminal(S("isStdoutCell@STDOUT-STREAM")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StdoutCell@STDOUT-STREAM")),klabel(KString@KSTRING("isStdoutCell@STDOUT-STREAM"))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"))),#match(#(_28:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("0")))),#match(ListItem(#ostream(#kseq(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#kseqnil()))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("730"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("730"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#(#(`_=/=String_`(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("735"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#ostream(#KSequence(`#write(_,_)`(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("15")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("729"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("729"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("730"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("730"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("731"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("731"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_28:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("728"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("735"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("723"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("723"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Send first char from the buffer to the server")),#(Location(Int@INT-SYNTAX("726"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("726"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(#match(#(_31:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("0"))),#match(ListItem(_30:_),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#match(ListItem(#buffer(#(#(#(Buffer:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2")))),#match(ListItem(#(#(#(F:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX")))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("3")))),#match(ListItem(#ostream(#(_29:_,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(_List_(_List_(ListItem(#ostream(#(_29:Int@INT-SYNTAX,sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),ListItem(_30:K@SORT-K)),ListItem(#buffer(`_+String_`(#(#(#(Buffer:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("699"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("699"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),Float2String(#(#(#(F:Float@FLOAT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("700"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("700"),Int@INT-SYNTAX("19")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Float@FLOAT-SYNTAX")))))))),.List()),#(_31:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("696"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("704"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(initStdoutCell(Init:K@SORT-K),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(#ostream(#stdout())),ListItem(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("92"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [initializer(),topRule()] + axiom B("true") [#ModuleComment(S("configuration ListItem(#ostream(#stderr)) ListItem($IO:String) ListItem(#buffer(\"\")) ")),#(Location(Int@INT-SYNTAX("693"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("693"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("\n syntax Stream ::= \"#noIO\"\n\n rule ListItem(#buffer(Buffer:String => Buffer +String Float2String(F)))\n (ListItem(F:Float) => .List)\n _:List [stdout, stderr]\n rule ListItem(#buffer(Buffer:String => Buffer +String Int2String(I)))\n (ListItem(I:Int) => .List)\n _:List [stdout, stderr]\n rule ListItem(#buffer(Buffer:String => Buffer +String S))\n (ListItem(S:String) => .List)\n _:List [stdout, stderr]\n\n rule (ListItem(#ostream(_:Int)) ListItem(#noIO) => .List)\n ListItem(#buffer(_))\n _:List [stdout, stderr]\n ")),#(Location(Int@INT-SYNTAX("737"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("753"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("734"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("734"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #ostream(Int@INT-SYNTAX) [#Terminal(S("#ostream")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("778731861")),#(Location(Int@INT-SYNTAX("690"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("690"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#ostream")),klabel(AttributeValue("#ostream"))] + axiom B("true") [#ModuleComment(S(" [stdout, stderr]")),#(Location(Int@INT-SYNTAX("713"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("713"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax StdoutCell@STDOUT-STREAM ::= ``(List@LIST) [#Terminal(S("")),#NonTerminal(S("List@LIST")),#Terminal(S("")),cell(),topcell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("692"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("692"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(""))] +endmodule [#(Location(Int@INT-SYNTAX("687"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("755"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module STRING + import FLOAT-SYNTAX [] + import BOOL-SYNTAX [] + import STRING-SYNTAX [] + import K-EQUAL [] + import INT [] + syntax String@STRING-SYNTAX ::= `_+String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S("+String")),#NonTerminal(S("String@STRING-SYNTAX")),productionID(KString@KSTRING("1926096844")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_+String_")),left(AttributeValue("")),function(AttributeValue("")),latex(AttributeValue("{#1}+_{\\scriptstyle\\it String}{#2}")),hook(AttributeValue("STRING.concat")),#(Location(Int@INT-SYNTAX("414"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("414"),Int@INT-SYNTAX("127")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax String@STRING-SYNTAX ::= substrString(String@STRING-SYNTAX,Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("substrString")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("substrString")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),productionID(KString@KSTRING("1716093734")),#(Location(Int@INT-SYNTAX("422"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("422"),Int@INT-SYNTAX("87")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.substr")),klabel(AttributeValue("substrString"))] + syntax Int@INT-SYNTAX ::= `countAllOccurrences(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("countAllOccurrences")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("441"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("441"),Int@INT-SYNTAX("120")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.countAllOccurrences")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("542365801")),function(AttributeValue("")),klabel(KString@KSTRING("countAllOccurrences(_,_)"))] + syntax Int@INT-SYNTAX ::= lengthString(String@STRING-SYNTAX) [#Terminal(S("lengthString")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("lengthString")),hook(AttributeValue("STRING.length")),#(Location(Int@INT-SYNTAX("418"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("418"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),productionID(KString@KSTRING("1105322512")),klabel(KString@KSTRING("lengthString"))] + syntax Float@FLOAT-SYNTAX ::= String2Float(String@STRING-SYNTAX) [#Terminal(S("String2Float")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("430"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("430"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.string2float")),klabel(KString@KSTRING("String2Float")),klabel(AttributeValue("String2Float")),function(AttributeValue("")),productionID(KString@KSTRING("1217875525"))] + syntax Bool@BOOL-SYNTAX ::= `_>=String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(">=String")),#NonTerminal(S("String@STRING-SYNTAX")),productionID(KString@KSTRING("1249875355")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("STRING.ge")),#(Location(Int@INT-SYNTAX("450"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("450"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("_>=String_"))] + syntax String@STRING-SYNTAX ::= chrChar(Int@INT-SYNTAX) [#Terminal(S("chrChar")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("419"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("419"),Int@INT-SYNTAX("69")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("171802996")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),hook(AttributeValue("STRING.chr")),klabel(AttributeValue("chrChar")),klabel(KString@KSTRING("chrChar"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_=/=String_`(#(#(#(S1:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("444"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("444"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("444"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("444"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),notBool_(`_==String_`(#(#(#(S1:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("444"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("444"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("444"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("444"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("444"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("444"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Base2String(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("Base2String")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),klabel(KString@KSTRING("Base2String")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("STRING.base2string")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("433"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("433"),Int@INT-SYNTAX("92")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("802243390")),klabel(AttributeValue("Base2String"))] + syntax Bool@BOOL-SYNTAX ::= `_>String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(">String")),#NonTerminal(S("String@STRING-SYNTAX")),productionID(KString@KSTRING("1048855692")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_>String_")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("449"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("449"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.gt"))] + syntax KItem@BASIC-K ::= `#parseToken(_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseToken")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("435"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("435"),Int@INT-SYNTAX("99")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("929383713")),function(AttributeValue("")),hook(AttributeValue("STRING.string2token")),klabel(KString@KSTRING("#parseToken(_,_)"))] + rule \implies(#(#(`_=Int_`(#(#(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),\and(\rewrite(`replaceFirst(_,_,_)`(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_+String_`(`_+String_`(substrString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("98"),Int@INT-SYNTAX("469"),Int@INT-SYNTAX("99")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("469"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Replacement:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),substrString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("470"),Int@INT-SYNTAX("96"),Int@INT-SYNTAX("470"),Int@INT-SYNTAX("97")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("471"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("469"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("471"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Float2String(Float@FLOAT-SYNTAX) [#Terminal(S("Float2String")),#Terminal(S("(")),#NonTerminal(S("Float@FLOAT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("585324508")),function(AttributeValue("")),klabel(KString@KSTRING("Float2String")),klabel(AttributeValue("Float2String")),#(Location(Int@INT-SYNTAX("428"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("428"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.float2string"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`replace(_,_,_,_)`(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("480"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("480"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(_13:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(_14:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("480"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("480"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("480"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("480"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("480"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("480"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= findChar(String@STRING-SYNTAX,String@STRING-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("findChar")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("425"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("425"),Int@INT-SYNTAX("89")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.findChar")),function(AttributeValue("")),klabel(AttributeValue("findChar")),klabel(KString@KSTRING("findChar")),productionID(KString@KSTRING("888473870"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==String_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=String_"))] + rule \implies(#(#(`_>Int_`(#(#(#(Count:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),\and(\rewrite(`replace(_,_,_,_)`(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Count:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`_+String_`(`_+String_`(substrString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("477"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("477"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("477"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("477"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Replacement:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`replace(_,_,_,_)`(substrString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("119")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(#(ToReplace:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("123"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("132")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Replacement:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("134"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("145")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),_-Int_(#(#(#(Count:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("479"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("478"),Int@INT-SYNTAX("158"),Int@INT-SYNTAX("478"),Int@INT-SYNTAX("159")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("476"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("479"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_=/=String_`(String@STRING-SYNTAX,String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S("=/=String")),#NonTerminal(S("String@STRING-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("1973233403")),hook(AttributeValue("STRING.ne")),#(Location(Int@INT-SYNTAX("443"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("443"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_=/=String_"))] + syntax String@STRING-SYNTAX ::= `replaceFirst(_,_,_)`(String@STRING-SYNTAX,String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("replaceFirst")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("440"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("440"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("245765246")),klabel(KString@KSTRING("replaceFirst(_,_,_)")),function(AttributeValue("")),hook(AttributeValue("STRING.replaceFirst"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_>=String_`(#(#(#(S1:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("457"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("457"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("457"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("457"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),notBool_(`_String_`(#(#(#(S1:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("456"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("456"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("456"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("456"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_=Int_`(#(#(findString(#(#(#(Source:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),\and(\rewrite(`countAllOccurrences(_,_)`(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),`_+Int_`(#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("62"),Int@INT-SYNTAX("466"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),`countAllOccurrences(_,_)`(substrString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(ToCount:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("466"),Int@INT-SYNTAX("139")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(ToCount:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),lengthString(#(#(#(Source:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),#(#(#(ToCount:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("467"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("466"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("467"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax String@STRING-SYNTAX ::= Int2String(Int@INT-SYNTAX) [#Terminal(S("Int2String")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("432"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("432"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("STRING.int2string")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1471086700")),function(AttributeValue("")),klabel(AttributeValue("Int2String")),klabel(KString@KSTRING("Int2String"))] + syntax Int@INT-SYNTAX ::= ordChar(String@STRING-SYNTAX) [#Terminal(S("ordChar")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("1107217291")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("STRING.ord")),#(Location(Int@INT-SYNTAX("420"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("420"),Int@INT-SYNTAX("69")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(AttributeValue("ordChar")),klabel(KString@KSTRING("ordChar"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_<=String_`(#(#(#(S1:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("455"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("455"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(S2:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("455"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("455"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),notBool_(`_ .List) [stdin]\n ")),#(Location(Int@INT-SYNTAX("678"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("683"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" a hack: handle the case when we read integers without the help of the IO server")),#(Location(Int@INT-SYNTAX("620"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("620"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(#match(#(_20:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"),Int@INT-SYNTAX("0"))),#match(ListItem(#parseInput(#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("613"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("613"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("618"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("614"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("614"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_20:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("612"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("618"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + rule \implies(_andBool_(_andBool_(_andBool_(#match(#(_23:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"),Int@INT-SYNTAX("0"))),#match(ListItem(#parseInput(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#(#(_andBool_(#(#(_andBool_(#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("640"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("640"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("640"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("640"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"Int@INT-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_>Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(#parse(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("71")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Sort:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_23:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("633"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("643"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("61")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax StdinCell@STDIN-STREAM ::= ``(List@LIST) [#Terminal(S("")),#NonTerminal(S("List@LIST")),#Terminal(S("")),cell(),topcell(),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("114")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING(""))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Currently, it supports only a simple pattern matching on the top of the")),#(Location(Int@INT-SYNTAX("659"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("659"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(#match(#(_24:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"),Int@INT-SYNTAX("0"))),#match(ListItem(#parseInput(#(#(String@STRING-SYNTAX("\"Int@INT-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("623"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("623"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_>Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(String2Int(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("75")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_24:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("622"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("630"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + syntax Stream@K-IO ::= #istream(Int@INT-SYNTAX) [#Terminal(S("#istream")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#istream")),#(Location(Int@INT-SYNTAX("594"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("594"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("690052870")),klabel(KString@KSTRING("#istream"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(#KRewrite(#KSequence(OR(AND(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),OR(AND(#noDots(),OR(isRule(K@SORT-K("-1845759432")),isRule(K@SORT-K("437577074")),isRule(K@SORT-K("887536870")),isRule(K@SORT-K("497986170")),isRule(K@SORT-K("-222347728")))),AND(#dots(),OR(isRule(K@SORT-K("1523719359")))))),OR(isRule(K@SORT-K("-1845759432")),isRule(K@SORT-K("437577074")),isRule(K@SORT-K("887536870")),isRule(K@SORT-K("497986170")),isRule(K@SORT-K("1523719359")),isRule(K@SORT-K("-222347728")))),AND(initStdinCell(Init:K@SORT-K),OR(isRule(K@SORT-K("1447879121"))))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),OR(AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parse(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("635"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("635"),Int@INT-SYNTAX("71")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),#(#(#(Sort:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("641"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("641"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("639"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("639"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("636"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("636"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("642"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("642"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_23:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("497986170"))),AND(#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#parseInput(#(_21:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(`_+String_`(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),chrChar(`#getc(_)`(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("604"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("604"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#istream(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("437577074"))),AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(String2Int(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("624"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("624"),Int@INT-SYNTAX("75")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),`_+Int_`(findChar(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("628"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("628"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("76"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("625"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("625"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("629"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("629"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_24:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("887536870"))),AND(#KSequence(``(#noDots(),_List_(ListItem(#parseInput(#(#(#(`?Sort`:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(`?Delimiters`:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(_22:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#dots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1523719359"))),AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(#(Sort:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("648"),Int@INT-SYNTAX("53"),Int@INT-SYNTAX("648"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_19:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1845759432"))),AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(#buffer(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$STDIN"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#istream(#stdin()))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1447879121"))),AND(#KSequence(``(#noDots(),_List_(_List_(ListItem(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("617"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("617"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),ListItem(#buffer(#(#(String@STRING-SYNTAX("\"\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("614"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("614"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),#(_20:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-222347728")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [automaton()] + axiom B("true") [#ModuleComment(S(" under `--io on` option), while they will still work in symbolic execution")),#(Location(Int@INT-SYNTAX("664"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("664"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" NOTE: This unblocking rule will be instantiated and inserted carefully")),#(Location(Int@INT-SYNTAX("656"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("656"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" read one character at a time until we read whitespace")),#(Location(Int@INT-SYNTAX("599"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("599"),Int@INT-SYNTAX("59")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" input stream cell, e.g.,")),#(Location(Int@INT-SYNTAX("660"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("660"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" lead to a diverging (i.e., non-terminating) transition system definition.")),#(Location(Int@INT-SYNTAX("658"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("658"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" have a way to specify such patterns.")),#(Location(Int@INT-SYNTAX("669"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("669"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" TODO: More patterns need to be supported as well. In that case, we need to")),#(Location(Int@INT-SYNTAX("668"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("668"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" off`, `--search`, or `--debug` options).")),#(Location(Int@INT-SYNTAX("666"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("666"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" rule read() => V ... ListItem(V:Int) => .List ... ")),#(Location(Int@INT-SYNTAX("661"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("661"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Non-supported rules that refer to the input stream cell in a sophisticated")),#(Location(Int@INT-SYNTAX("662"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("662"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax StdinCell@STDIN-STREAM ::= initStdinCell(Map@MAP) [#Terminal(S("initStdinCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initStdinCell"))] + axiom B("true") [#ModuleComment(S(" when we reach whitespace, if it parses create a ListItem")),#(Location(Int@INT-SYNTAX("610"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("610"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" [stdin]")),#(Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(_andBool_(_andBool_(#match(ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("604"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("604"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"))),#match(ListItem(#parseInput(#(_21:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),`_==K_`(.List(),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("4"),Int@INT-SYNTAX("0")))),#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#match(ListItem(#istream(#(#(#(N:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("3")))),#(#(`_==Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("608"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(_List_(ListItem(#parseInput(#(_21:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(`_+String_`(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("607"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("607"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),chrChar(`#getc(_)`(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))))))),ListItem(#(#(String@STRING-SYNTAX("\"on\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("604"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("604"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),ListItem(#istream(#(#(#(N:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("605"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("605"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("601"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("608"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + rule \implies(_andBool_(`_==K_`(.List(),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("0"))),#match(ListItem(#buffer(#(_22:_,sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#dots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(ListItem(#parseInput(#(#(#(`?Sort`:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(`?Delimiters`:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("672"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("672"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(#(_22:String@STRING-SYNTAX,sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))),#dots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("671"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("676"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),unblock(AttributeValue("")),topRule()] + axiom B("true") [#ModuleComment(S(" way will get stuck in concrete execution mode with real IO enabled (i.e.,")),#(Location(Int@INT-SYNTAX("663"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("663"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isStdinCell@STDIN-STREAM(K@SORT-K) [#Terminal(S("isStdinCell@STDIN-STREAM")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StdinCell@STDIN-STREAM")),klabel(KString@KSTRING("isStdinCell@STDIN-STREAM"))] + axiom B("true") [#ModuleComment(S(" when necessary according to user-defined rules, since otherwise it will")),#(Location(Int@INT-SYNTAX("657"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("657"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(_andBool_(_andBool_(#match(#(_19:_,sort(String@STRING-SYNTAX("List@LIST"))),`List:range`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("2"),Int@INT-SYNTAX("0"))),#match(ListItem(#parseInput(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("0")))),#match(ListItem(#buffer(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),`List:get`(#(_0:_,sort(String@STRING-SYNTAX("List@LIST"))),Int@INT-SYNTAX("1")))),#(#(_andBool_(#(#(_andBool_(#(#(`_=/=Int_`(#(#(findChar(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("-1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_=/=String_`(#(#(#(Sort:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(String@STRING-SYNTAX("\"String@STRING-SYNTAX\""),#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(`_<=Int_`(#(#(lengthString(#(#(#(S:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(#KSequence(``(#noDots(),#(_0:List@LIST,sort(String@STRING-SYNTAX("List@LIST"))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(#parseInput(#(#(#(Sort:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("652"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("652"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(#(Delimiters:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("651"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("651"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))))),ListItem(#buffer(substrString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX"))),#(#(Int@INT-SYNTAX("1"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("648"),Int@INT-SYNTAX("53"),Int@INT-SYNTAX("648"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),lengthString(#(#(#(S:String@STRING-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("653"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("653"),Int@INT-SYNTAX("30")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("String@STRING-SYNTAX")))))))),#(_19:List@LIST,sort(String@STRING-SYNTAX("List@LIST")))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("646"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("654"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),stream(AttributeValue("")),topRule()] + axiom B("true") [#ModuleComment(S(" mode or concrete execution mode with real IO disabled (i.e., under `--io")),#(Location(Int@INT-SYNTAX("665"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("665"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Stream@K-IO ::= #parseInput(String@STRING-SYNTAX,String@STRING-SYNTAX) [#Terminal(S("#parseInput")),#Terminal(S("(")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("String@STRING-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1219273867")),klabel(AttributeValue("#parseInput")),klabel(KString@KSTRING("#parseInput")),#(Location(Int@INT-SYNTAX("595"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("595"),Int@INT-SYNTAX("47")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(initStdinCell(Init:K@SORT-K),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(``(#noDots(),_List_(_List_(ListItem(#buffer(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$STDIN"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$IO"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("597"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("597"),Int@INT-SYNTAX("70")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),ListItem(#istream(#stdin()))),#noDots()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [initializer(),topRule()] +endmodule [#(Location(Int@INT-SYNTAX("591"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("685"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K-TOP-SORT + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("136"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("136"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" generates, for all sorts, productions of the form:")),#(Location(Int@INT-SYNTAX("137"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("137"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" K ::= Sort")),#(Location(Int@INT-SYNTAX("138"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" this is part of the mechanism that allows concrete user syntax in K")),#(Location(Int@INT-SYNTAX("139"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("139"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("135"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("140"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module IMP + import DOMAINS [] + import IMP-SYNTAX [] + import MAP [] + import BOOL-SYNTAX [] + syntax TCell@IMP ::= ``(KCell@IMP,StateCell@IMP) [#Terminal(S("")),#NonTerminal(S("KCell@IMP")),#NonTerminal(S("StateCell@IMP")),#Terminal(S("")),cell(),topcell(),klabel(KString@KSTRING("")),color(KString@KSTRING("yellow")),#(org.kframework.attributes.Location(Int@INT-SYNTAX("30"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_+_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_+_")),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),productionID(KString@KSTRING("1760670079"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`if(_)_else_`(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_37:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + syntax KCellOpt@IMP ::= noKCell() [#Terminal(S("noKCell")),cellOptAbsent(KString@KSTRING("KCell")),klabel(KString@KSTRING("noKCell"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(initTCell(Init:K@SORT-K),``(initKCell(Init:K@SORT-K),initStateCell())),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + syntax KItem@BASIC-K ::= `#freezer_/_0`(K@SORT-K) [#Terminal(S("#freezer_/_0")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_/_0"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(`if(_)_else_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),`{_}`(__(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))))),`{}`()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("55")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),structural(AttributeValue("")),topRule()] + syntax KCell@IMP ::= ``(K@SORT-K) [#Terminal(S("")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),cell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("30"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),color(KString@KSTRING("green")),maincell(),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(""))] + syntax KResult@BASIC-K ::= ``(Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Location(Int@INT-SYNTAX("28"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("638169719"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`{_}`(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),structural(AttributeValue("")),topRule()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(initStateCell(),``(.Map())),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`{}`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("45"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),structural(AttributeValue("")),topRule()] + syntax KItem@BASIC-K ::= `#freezer_+_1`(K@SORT-K) [#Terminal(S("#freezer_+_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_+_1"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_/_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("")),cool()] + syntax KResult@BASIC-K ::= ``(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("28"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("193178046"))] + syntax Bool@BOOL-SYNTAX ::= isTCell@IMP(K@SORT-K) [#Terminal(S("isTCell@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("TCell@IMP")),klabel(KString@KSTRING("isTCell@IMP"))] + axiom B("true") [#ModuleComment(S(" verification ids")),#(Location(Int@INT-SYNTAX("58"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("58"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isStateCellOpt@IMP(K@SORT-K) [#Terminal(S("isStateCellOpt@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StateCellOpt@IMP")),klabel(KString@KSTRING("isStateCellOpt@IMP"))] + rule \implies(_andBool_(#match(#(#(#(Rho:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP"))),#(_0:_,sort(String@STRING-SYNTAX("Map@MAP")))),#(#(notBool_(#(#(`Set:in`(#(#(#(X:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(keys(#(#(#(Rho:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP")))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("14"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\and(``(``(\rewrite(`int_;_`(`_,_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX")))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),`int_;_`(#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX"))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))))),``(\rewrite(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))),_Map_(#(#(#(Rho:Map@MAP,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP"))),`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + syntax KItem@BASIC-K ::= `#freezer_&&_1`(K@SORT-K) [#Terminal(S("#freezer_&&_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_&&_1"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(__(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#KSequence(#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),structural(AttributeValue("")),topRule()] + rule \implies(_andBool_(isKResult@BASIC-K(#(K0:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_<=_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_<=_")),topRule(),latex(AttributeValue("{#1}\\leq{#2}")),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" Block")),#(Location(Int@INT-SYNTAX("44"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KCell@IMP ::= initKCell(Map@MAP) [#Terminal(S("initKCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initKCell"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(initKCell(Init:K@SORT-K),``(`Map:lookup`(Init:K@SORT-K,#(#(KConfigVar@BASIC-K("$PGM"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("31"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))))),\next(Bool@BOOL-SYNTAX("true")))) [initializer()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_=_;`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),topRule(),productionID(KString@KSTRING("307400933")),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_=_;")),strict(AttributeValue("2"))] + rule \implies(_andBool_(#match(#(DotVar2:_,sort(String@STRING-SYNTAX("Map@MAP"))),`_[_<-undef]`(#(_0:_,sort(String@STRING-SYNTAX("Map@MAP"))),#(#(#(X:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))))),#match(_38:_,`Map:lookup`(#(_0:_,sort(String@STRING-SYNTAX("Map@MAP"))),#(#(#(X:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID")))))),\and(``(``(\rewrite(#KSequence(`_=_;`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),``(\rewrite(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))),_Map_(`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar2:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("73")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`if(_)_else_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("if(_)_else_")),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),strict(AttributeValue("1")),productionID(KString@KSTRING("1872973138")),#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_&&_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("11"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("1")),productionID(KString@KSTRING("1337866219")),klabel(KString@KSTRING("_&&_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`_&&_`(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_<=_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_<=_")),topRule(),latex(AttributeValue("{#1}\\leq{#2}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),cool(),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + syntax KItem@BASIC-K ::= `#freezer_+_0`(K@SORT-K) [#Terminal(S("#freezer_+_0")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_+_0"))] + syntax Bool@BOOL-SYNTAX ::= isStateCell@IMP(K@SORT-K) [#Terminal(S("isStateCell@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("StateCell@IMP")),klabel(KString@KSTRING("isStateCell@IMP"))] + syntax KCellOpt@IMP ::= ``(KCell@IMP) [#NonTerminal(S("KCell@IMP"))] + syntax KItem@BASIC-K ::= `#freezer_<=_0`(K@SORT-K) [#Terminal(S("#freezer_<=_0")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_<=_0"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`_&&_`(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_39:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_+_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_+_")),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),cool(),productionID(KString@KSTRING("1760670079"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_/_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue(""))] + axiom B("true") [#ModuleComment(S(" AExp")),#(Location(Int@INT-SYNTAX("35"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_<=_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_<=_")),topRule(),latex(AttributeValue("{#1}\\leq{#2}")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),cool(),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + syntax TCellFragment@IMP ::= `-fragment`(KCellOpt@IMP,StateCellOpt@IMP) [#Terminal(S("-fragment")),#NonTerminal(S("KCellOpt@IMP")),#NonTerminal(S("StateCellOpt@IMP")),#Terminal(S("-fragment")),cellFragment(KString@KSTRING("TCell")),klabel(KString@KSTRING("-fragment"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_<=_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_<=_")),topRule(),latex(AttributeValue("{#1}\\leq{#2}")),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("9"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("130764844")),seqstrict(AttributeValue(""))] + syntax StateCellOpt@IMP ::= ``(StateCell@IMP) [#NonTerminal(S("StateCell@IMP"))] + axiom B("true") [#ModuleComment(S(" BExp")),#(Location(Int@INT-SYNTAX("39"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax TCell@IMP ::= initTCell(Map@MAP) [#Terminal(S("initTCell")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),initializer(),function(),klabel(KString@KSTRING("initTCell"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_&&_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("11"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("1")),productionID(KString@KSTRING("1337866219")),cool(),klabel(KString@KSTRING("_&&_"))] + rule \implies(_andBool_(#match(#(#(I:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),`Map:lookup`(#(_0:_,sort(String@STRING-SYNTAX("Map@MAP"))),#(#(#(X:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))))),#match(#(DotVar2:_,sort(String@STRING-SYNTAX("Map@MAP"))),`_[_<-undef]`(#(_0:_,sort(String@STRING-SYNTAX("Map@MAP"))),#(#(#(X:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID")))))),\and(``(``(\rewrite(#KSequence(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(I:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),``(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + syntax KItem@BASIC-K ::= `#freezerif(_)_else_1`(K@SORT-K,K@SORT-K) [#Terminal(S("#freezerif(_)_else_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(",")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezerif(_)_else_1"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`!_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer!_0`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [topRule(),#(Location(Int@INT-SYNTAX("10"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("10"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("!_")),productionID(KString@KSTRING("660339123")),strict(AttributeValue(""))] + syntax Bool@BOOL-SYNTAX ::= isTCellFragment@IMP(K@SORT-K) [#Terminal(S("isTCellFragment@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("TCellFragment@IMP")),klabel(KString@KSTRING("isTCellFragment@IMP"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_=_;`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(Location(Int@INT-SYNTAX("16"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),topRule(),productionID(KString@KSTRING("307400933")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_=_;")),cool(),strict(AttributeValue("2"))] + syntax KItem@BASIC-K ::= `#freezer_/_1`(K@SORT-K) [#Terminal(S("#freezer_/_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_/_1"))] + axiom B("true") [#ModuleComment(S(" Pgm")),#(Location(Int@INT-SYNTAX("53"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("53"),Int@INT-SYNTAX("7")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax StateCell@IMP ::= ``(Map@MAP) [#Terminal(S("")),#NonTerminal(S("Map@MAP")),#Terminal(S("")),cell(),#(org.kframework.attributes.Location(Int@INT-SYNTAX("30"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),color(KString@KSTRING("red")),klabel(KString@KSTRING(""))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer!_0`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`!_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [topRule(),#(Location(Int@INT-SYNTAX("10"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("10"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("!_")),productionID(KString@KSTRING("660339123")),strict(AttributeValue("")),cool()] + axiom B("true") [#ModuleComment(S(" Stmt")),#(Location(Int@INT-SYNTAX("47"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("8")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isKCell@IMP(K@SORT-K) [#Terminal(S("isKCell@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCell@IMP")),klabel(KString@KSTRING("isKCell@IMP"))] + syntax Bool@BOOL-SYNTAX ::= isKCellOpt@IMP(K@SORT-K) [#Terminal(S("isKCellOpt@IMP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KCellOpt@IMP")),klabel(KString@KSTRING("isKCellOpt@IMP"))] + syntax StateCell@IMP ::= initStateCell() [#Terminal(S("initStateCell")),initializer(),function(),klabel(KString@KSTRING("initStateCell"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`_+_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(`_+Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_/_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue(""))] + syntax StateCellOpt@IMP ::= noStateCell() [#Terminal(S("noStateCell")),cellOptAbsent(KString@KSTRING("StateCell")),klabel(KString@KSTRING("noStateCell"))] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_/_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [productionID(KString@KSTRING("351962798")),#(Location(Int@INT-SYNTAX("5"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("5"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_/_")),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),strict(AttributeValue("")),cool()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`if(_)_else_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("if(_)_else_")),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),strict(AttributeValue("1")),productionID(KString@KSTRING("1872973138")),cool(),#(Location(Int@INT-SYNTAX("17"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Id@ID ::= n() [#Terminal(S("n")),token(AttributeValue("")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("n")),productionID(KString@KSTRING("691098155")),#(Location(Int@INT-SYNTAX("59"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`_<=_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(`_<=Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`int_;_`(`.List{"_,_"}`(),#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),structural(AttributeValue("")),topRule()] + syntax KItem@BASIC-K ::= `#freezer_<=_1`(K@SORT-K) [#Terminal(S("#freezer_<=_1")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_<=_1"))] + syntax Id@ID ::= sum() [#Terminal(S("sum")),token(AttributeValue("")),productionID(KString@KSTRING("1987360300")),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("sum")),#(Location(Int@INT-SYNTAX("60"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("60"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`if(_)_else_`(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(_35:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(\rewrite(#KSequence(`!_`(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(notBool_(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))))),\and(``(``(\rewrite(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),#KSequence(`_+_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_+_")),topRule(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),cool(),productionID(KString@KSTRING("1760670079"))] + syntax KItem@BASIC-K ::= `#freezer_=_;0`(K@SORT-K) [#Terminal(S("#freezer_=_;0")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer_=_;0"))] + rule \implies(#(#(`_=/=Int_`(#(#(#(I2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),\and(``(``(\rewrite(#KSequence(`_/_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(`_/Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),topRule()] + syntax K@SORT-K [] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(#KRewrite(OR(AND(`int_;_`(`_,_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX")))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-2042143462")))),AND(#KSequence(OR(AND(`_+_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))))),OR(isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("1668945451")))),AND(`_&&_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("828396164"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-1441915690")))),OR(AND(#(_39:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("828396164"))),AND(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1441915690"))))),OR(isRule(K@SORT-K("828396164")),isRule(K@SORT-K("-1441915690")),isRule(K@SORT-K("-2119516101")))),AND(`{_}`(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("801877613")))),AND(`if(_)_else_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-253489982"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("1044855691")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(_37:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982"))),AND(#(_35:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))))),OR(isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("-253489982")))),AND(`_=_;`(OR(AND(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1426745059"))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1547329554")))),OR(AND(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1547329554"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1426745059"))))),OR(isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-1547329554")))),AND(`!_`(OR(AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-133314472"))),AND(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),isRule(K@SORT-K("-1115781310"))))),OR(isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("-1115781310")))),AND(`_<=_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))))),OR(isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("1007287357")))),AND(`int_;_`(`.List{"_,_"}`(),#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1897515373")))),AND(`_/_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))))),OR(isRule(K@SORT-K("458825590")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("-362805565")))),AND(`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1762956723")))),AND(__(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("2056209854")))),AND(`{}`(),OR(isRule(K@SORT-K("185630652")))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("4114016"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("16497720")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("62439284")))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730"))))),OR(AND(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1651559554")))),AND(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("16497720")))),AND(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("62439284")))),AND(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1574379563")))),AND(`#freezer!_0`(),OR(isRule(K@SORT-K("52455237")))),AND(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),OR(isRule(K@SORT-K("-1087628972")))),AND(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1229373845")))),AND(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("553250730")))),AND(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("771814581")))),AND(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1834170265")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#EmptyK(),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("52455237")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#KSequence(`_<=_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1229373845"))),AND(#KSequence(`_+Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1869811340"))),AND(#KSequence(`_&&_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("62439284"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("883215674"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1861470032"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1961865699"))),AND(#KSequence(notBool_(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1115781310"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1426745059"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("185630652"))),AND(#KSequence(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1441915690"))),AND(#KSequence(`_<=_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("771814581"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-253489982"))),AND(#KSequence(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#KSequence(#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("2056209854"))),AND(#KSequence(`_/_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("553250730"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1007287357"))),AND(#KSequence(`!_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("52455237"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer!_0`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-133314472"))),AND(#KSequence(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("828396164"))),AND(#KSequence(#(#(I:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("4114016"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-362805565"))),AND(#KSequence(`if(_)_else_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("16497720"))),AND(`int_;_`(#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX"))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),isRule(K@SORT-K("-2042143462"))),AND(#KSequence(`if(_)_else_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),`{_}`(__(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))))),`{}`()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1762956723"))),AND(#KSequence(`_+_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1651559554"))),AND(#KSequence(`_=_;`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1087628972"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1668945451"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-2119516101"))),AND(#KSequence(`_/_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1834170265"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1897515373"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("801877613"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("458825590"))),AND(#KSequence(`_+_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1574379563"))),AND(#KSequence(`_/Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-853757395"))),AND(#KSequence(`_<=Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1926041068"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1044855691"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("-1547329554")))))),OR(AND(``(#KRewrite(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))),OR(AND(_Map_(`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar2:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP")))),isRule(K@SORT-K("-1547329554"))),AND(_Map_(#(#(#(Rho:Map@MAP,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP"))),`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),isRule(K@SORT-K("-2042143462")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("-2042143462")))),AND(DotVar0:K@SORT-K,OR(isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690")))))),\next(Bool@BOOL-SYNTAX("true")))) [automaton()] + rule \implies(_andBool_(Bool@BOOL-SYNTAX("true"),notBool_(isKResult@BASIC-K(#(HOLE:_,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))))),\and(``(``(\rewrite(#KSequence(`_+_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))))),DotVar0:K@SORT-K),\next(Bool@BOOL-SYNTAX("true")))) [klabel(KString@KSTRING("_+_")),topRule(),heat(),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("6"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("6"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),strict(AttributeValue("")),productionID(KString@KSTRING("1760670079"))] + syntax KItem@BASIC-K ::= `#freezer!_0`() [#Terminal(S("#freezer!_0")),#Terminal(S("(")),#Terminal(S(")")),klabel(KString@KSTRING("#freezer!_0"))] +endmodule [#(Location(Int@INT-SYNTAX("26"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("61"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module DOMAINS + import DOMAINS-SYNTAX [] + import K-IO [] + import SET [] + import BOOL-SYNTAX [] + import BASIC-K [] + import STRING [] + import INT [] + import LIST [] + import BOOL [] + import MAP [] +endmodule [#(Location(Int@INT-SYNTAX("11"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module INT + import INT-SYNTAX [] + import BOOL [] + import K-EQUAL [] + import BOOL-SYNTAX [] + syntax Int@INT-SYNTAX ::= _xorInt_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("xorInt")),#NonTerminal(S("Int@INT-SYNTAX")),#(Location(Int@INT-SYNTAX("284"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("284"),Int@INT-SYNTAX("134")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_xorInt_")),left(AttributeValue("")),hook(AttributeValue("INT.xor")),function(AttributeValue("")),productionID(KString@KSTRING("565372776")),latex(AttributeValue("{#1}\\mathrel{\\oplus_{\\scriptstyle\\it Int}}{#2}"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_divInt_"),S("_%Int_"),S("_/Int_"),S("_*Int_"),S("_modInt_"))] + syntax Int@INT-SYNTAX ::= `~Int_`(Int@INT-SYNTAX) [#Terminal(S("~Int")),#NonTerminal(S("Int@INT-SYNTAX")),productionID(KString@KSTRING("2053591126")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("INT.not")),#(Location(Int@INT-SYNTAX("263"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("263"),Int@INT-SYNTAX("121")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("~Int_")),latex(AttributeValue("\\mathop{\\sim_{\\scriptstyle\\it Int}}{#1}")),function(AttributeValue(""))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_/Int_"))] + syntax Int@INT-SYNTAX ::= `maxInt(_,_)`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("maxInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("int_max")),#(Location(Int@INT-SYNTAX("288"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("288"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("INT.max")),function(AttributeValue("")),klabel(KString@KSTRING("maxInt(_,_)")),productionID(KString@KSTRING("301749835"))] + syntax Int@INT-SYNTAX ::= `(_)`(Int@INT-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1730704097")),#(Location(Int@INT-SYNTAX("290"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("290"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + rule \implies(#(#(`_=/=Int_`(#(#(#(I2:_,#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),\and(\rewrite(_divInt_(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("292"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("292"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`_/Int_`(_-Int_(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("292"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("292"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),_modInt_(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("292"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("292"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("293"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("14")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("292"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("293"),Int@INT-SYNTAX("23")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_>Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">Int")),#NonTerminal(S("Int@INT-SYNTAX")),klabel(KString@KSTRING("_>Int_")),productionID(KString@KSTRING("2089016471")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue(">")),latex(AttributeValue("{#1}\\mathrel{>_{\\scriptstyle\\it Int}}{#2}")),#(Location(Int@INT-SYNTAX("303"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("303"),Int@INT-SYNTAX("133")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("INT.gt"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_modInt_"))] + syntax Int@INT-SYNTAX ::= `_*Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("*Int")),#NonTerminal(S("Int@INT-SYNTAX")),productionID(KString@KSTRING("1748876332")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("*")),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("INT.mul")),klabel(KString@KSTRING("_*Int_")),#(Location(Int@INT-SYNTAX("267"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("267"),Int@INT-SYNTAX("143")),classType(KString@KSTRING("org.kframework.attributes.Location"))),latex(AttributeValue("{#1}\\mathrel{\\ast_{\\scriptstyle\\it Int}}{#2}"))] + syntax Int@INT-SYNTAX ::= _-Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("-Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_-Int_")),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("277"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("277"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("INT.sub")),latex(AttributeValue("{#1}\\mathrel{-_{\\scriptstyle\\it Int}}{#2}")),smtlib(AttributeValue("-")),productionID(KString@KSTRING("1418620248"))] + syntax Int@INT-SYNTAX ::= _^Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("^Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),klabel(KString@KSTRING("_^Int_")),function(AttributeValue("")),latex(AttributeValue("{#1}\\mathrel{{\\char`\\^}_{\\!\\scriptstyle\\it Int}}{#2}")),hook(AttributeValue("INT.pow")),#(Location(Int@INT-SYNTAX("265"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("265"),Int@INT-SYNTAX("140")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1850777594"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_==Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("308"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("308"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("308"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("308"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`_==K_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("308"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("308"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("308"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("308"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("308"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("308"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">=Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1148254374")),#(Location(Int@INT-SYNTAX("302"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("302"),Int@INT-SYNTAX("137")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("INT.ge")),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_>=Int_")),latex(AttributeValue("{#1}\\mathrel{\\geq_{\\scriptstyle\\it Int}}{#2}")),smtlib(AttributeValue(">="))] + axiom B("true") [#ModuleComment(S(" /Int and %Int implement t-division ")),#(Location(Int@INT-SYNTAX("269"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("269"),Int@INT-SYNTAX("55")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_&Int_"))] + syntax Int@INT-SYNTAX ::= `_<=Int_"))] + axiom B("true") [#ModuleComment(S(" FIXME: translate /Int and %Int into smtlib ")),#(Location(Int@INT-SYNTAX("268"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("268"),Int@INT-SYNTAX("63")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Int@INT-SYNTAX ::= absInt(Int@INT-SYNTAX) [#Terminal(S("absInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("int_abs")),#(Location(Int@INT-SYNTAX("289"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("289"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("INT.abs")),klabel(AttributeValue("absInt")),klabel(KString@KSTRING("absInt")),productionID(KString@KSTRING("961160488"))] + syntax Bool@BOOL-SYNTAX ::= `_=/=Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("=/=Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1946645411")),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("distinct")),#(Location(Int@INT-SYNTAX("305"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("305"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_=/=Int_")),hook(AttributeValue("INT.ne")),latex(AttributeValue("{#1}\\mathrel{{=}{/}{=}_{\\scriptstyle\\it Int}}{#2}"))] + syntax Int@INT-SYNTAX ::= _%Int_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("%Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),latex(AttributeValue("{#1}\\mathrel{\\%_{\\scriptstyle\\it Int}}{#2}")),#(Location(Int@INT-SYNTAX("271"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("271"),Int@INT-SYNTAX("144")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_%Int_")),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("40075281")),smtlib(AttributeValue("mod")),hook(AttributeValue("INT.tmod"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_+Int_"))] + syntax Int@INT-SYNTAX ::= `_&Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("&Int")),#NonTerminal(S("Int@INT-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("101775274")),left(AttributeValue("")),#(Location(Int@INT-SYNTAX("282"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("282"),Int@INT-SYNTAX("130")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(KString@KSTRING("_&Int_")),hook(AttributeValue("INT.and")),latex(AttributeValue("{#1}\\mathrel{\\&_{\\scriptstyle\\it Int}}{#2}"))] + syntax Bool@BOOL-SYNTAX ::= `_Int_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_<>Int_`(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(">>Int")),#NonTerminal(S("Int@INT-SYNTAX")),latex(AttributeValue("{#1}\\mathrel{\\gg_{\\scriptstyle\\it Int}}{#2}")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("279"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("279"),Int@INT-SYNTAX("131")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("INT.shr")),klabel(KString@KSTRING("_>>Int_")),left(AttributeValue("")),function(AttributeValue("")),productionID(KString@KSTRING("169663597"))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("~Int_")),#SyntaxPriorityGroup(S("_^Int_")),#SyntaxPriorityGroup(S("_divInt_"),S("_%Int_"),S("_/Int_"),S("_*Int_"),S("_modInt_")),#SyntaxPriorityGroup(S("_+Int_"),S("_-Int_")),#SyntaxPriorityGroup(S("_>>Int_"),S("_<>Int_"),S("_<>Int_"))] + syntax Int@INT-SYNTAX ::= _divInt_(Int@INT-SYNTAX,Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("divInt")),#NonTerminal(S("Int@INT-SYNTAX")),hook(AttributeValue("INT.ediv")),productionID(KString@KSTRING("1878169648")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_divInt_")),#(Location(Int@INT-SYNTAX("273"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("273"),Int@INT-SYNTAX("93")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("div"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_dividesInt_(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),`_==Int_`(_%Int_(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("57"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("310"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("310"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax K@SORT-K ::= srandInt(Int@INT-SYNTAX) [#Terminal(S("srandInt")),#Terminal(S("(")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("917831210")),hook(AttributeValue("INT.srand")),function(AttributeValue("")),klabel(AttributeValue("srandInt")),#(Location(Int@INT-SYNTAX("316"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("316"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("srandInt"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_<=Int_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_xorInt_"))] +endmodule [#(Location(Int@INT-SYNTAX("258"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("317"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module REQUIRES-ENSURES + import BASIC-K [] + import BOOL-SYNTAX [] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleEnsures(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),latex(AttributeValue("{#1}{}{#3}")),productionID(KString@KSTRING("361571968")),klabel(KString@KSTRING("#ruleEnsures")),klabel(AttributeValue("#ruleEnsures")),#(Location(Int@INT-SYNTAX("130"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("130"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequires(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("when")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#ruleRequires")),latex(AttributeValue("{#1}{#2}{}")),klabel(KString@KSTRING("#ruleRequires")),#(Location(Int@INT-SYNTAX("129"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("129"),Int@INT-SYNTAX("103")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("320304382"))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequires(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("requires")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#ruleRequires")),latex(AttributeValue("{#1}{#2}{}")),klabel(KString@KSTRING("#ruleRequires")),productionID(KString@KSTRING("283318938")),#(Location(Int@INT-SYNTAX("128"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("128"),Int@INT-SYNTAX("103")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax Bool@BOOL-SYNTAX ::= isRuleContent@REQUIRES-ENSURES(K@SORT-K) [#Terminal(S("isRuleContent@REQUIRES-ENSURES")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("RuleContent@REQUIRES-ENSURES")),klabel(KString@KSTRING("isRuleContent@REQUIRES-ENSURES"))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequiresEnsures(K@SORT-K,K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("requires")),#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("2005169944")),latex(AttributeValue("{#1}{#2}{#3}")),klabel(KString@KSTRING("#ruleRequiresEnsures")),#(Location(Int@INT-SYNTAX("131"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("131"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#ruleRequiresEnsures"))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleNoConditions(K@SORT-K) [#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),allowChainSubsort(AttributeValue("")),klabel(KString@KSTRING("#ruleNoConditions")),klabel(AttributeValue("#ruleNoConditions")),latex(AttributeValue("{#1}{}{}")),productionID(KString@KSTRING("1072410641")),#(Location(Int@INT-SYNTAX("127"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("127"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax RuleContent@REQUIRES-ENSURES ::= #ruleRequiresEnsures(K@SORT-K,K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("when")),#NonTerminal(S("K@SORT-K")),#Terminal(S("ensures")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),latex(AttributeValue("{#1}{#2}{#3}")),klabel(KString@KSTRING("#ruleRequiresEnsures")),productionID(KString@KSTRING("2134607032")),#(Location(Int@INT-SYNTAX("132"),Int@INT-SYNTAX("26"),Int@INT-SYNTAX("132"),Int@INT-SYNTAX("112")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#ruleRequiresEnsures"))] +endmodule [#(Location(Int@INT-SYNTAX("124"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("133"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module LIST + import INT-SYNTAX [] + import BASIC-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" Remove elements from the beginning and the end of the List. ")),#(Location(Int@INT-SYNTAX("183"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("183"),Int@INT-SYNTAX("68")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_List_"))] + syntax List@LIST ::= _List_(List@LIST,List@LIST) [#NonTerminal(S("List@LIST")),#NonTerminal(S("List@LIST")),element(AttributeValue("ListItem")),assoc(AttributeValue("")),#(Location(Int@INT-SYNTAX("171"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("171"),Int@INT-SYNTAX("156")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1583159071")),klabel(KString@KSTRING("_List_")),klabel(AttributeValue("_List_")),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("smt_seq_concat")),unit(AttributeValue(".List")),hook(AttributeValue("LIST.concat"))] + syntax List@LIST ::= .List() [#Terminal(S(".List")),hook(AttributeValue("LIST.unit")),#(Location(Int@INT-SYNTAX("173"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("173"),Int@INT-SYNTAX("111")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("smt_seq_nil")),klabel(KString@KSTRING(".List")),function(AttributeValue("")),productionID(KString@KSTRING("1816147548")),latex(AttributeValue("\\dotCt{List}"))] + syntax List@LIST ::= ListItem(K@SORT-K) [#Terminal(S("ListItem")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("ListItem")),klabel(KString@KSTRING("ListItem")),productionID(KString@KSTRING("590646109")),#(Location(Int@INT-SYNTAX("176"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("176"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),smtlib(AttributeValue("smt_seq_elem"))] + axiom B("true") [#ModuleComment(S("TODO(AndreiS): move the paragraph below")),#(Location(Int@INT-SYNTAX("150"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("150"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" \\section{User-Defined Lists} It is very common in \\K to define a shorthand\n for lists of user-defined sorts. \\K 's builtin way of doing this is to use\n List\\{KItem,\"Separator\"\\}, where \"Separator\" is any valid character or\n sequence of characters used to separate distinct elements.\n For example, after defining \\\\\n syntax KItem ::= Elt\\\\\n a user could then define\n syntax Elts ::= List\\{Elt,\",\"\\} \\\\\n which would be a comma-separated list whose elements are all of sort Elt. A\n user could just as well define \\\\\n syntax Elts ::= List\\{Elt,\"and\"\\} \\\\\n which would be a list containing elements of sort Elt that are separated with\n the word \"and\". If only one argument is given, the separator is asumed to be\n commas. So, \\\\\n syntax Elts = List\\{Elt\\} \\\\\n would define a comma-separated list containing elements of sort Elt.\n ")),#(Location(Int@INT-SYNTAX("151"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("167"),Int@INT-SYNTAX("4")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST ::= `List:range`(List@LIST,Int@INT-SYNTAX,Int@INT-SYNTAX) [#Terminal(S("range")),#Terminal(S("(")),#NonTerminal(S("List@LIST")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(",")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("LIST.range")),klabel(KString@KSTRING("List:range")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("184"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("184"),Int@INT-SYNTAX("90")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1026871825")),klabel(AttributeValue("List:range"))] + axiom B("true") [#ModuleComment(S(" Get an element form the List by index. Positive indices mean from the\n beginning (0 is the first element), and negative indices mean from the end\n (-1 is the last element). ")),#(Location(Int@INT-SYNTAX("178"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("180"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a new List as the concatenation of two Lists. This is similar to\n the append \"@\" operation in many functional programming languages. ")),#(Location(Int@INT-SYNTAX("169"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("170"),Int@INT-SYNTAX("72")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Check element membership in the given list ")),#(Location(Int@INT-SYNTAX("186"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("186"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= isList@LIST(K@SORT-K) [#Terminal(S("isList@LIST")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("List@LIST")),klabel(KString@KSTRING("isList@LIST"))] + syntax List@LIST [hook(AttributeValue("LIST.List")),#(Location(Int@INT-SYNTAX("138"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("138"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" \\section{Description} \\K lists are ordered collections that may contain\n duplicate elements. These behave more like lists in functional programming\n languages than arrays in imperative programming languages; there's no\n numerical indexing, but instead specific elements are refered to using the\n Mylist,Mylist construct in combination with the MyListItem construct. It's\n worth noting that \\K lists aren't exactly like lists in functional languages;\n they're associative, which means that it's easy to access elements at both\n ends of the lists and concatenate them. For example, L:Mylist,E accesses\n element E at the end of a list. ")),#(Location(Int@INT-SYNTAX("140"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("148"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a singleton List (a list with only one element) ")),#(Location(Int@INT-SYNTAX("175"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("175"),Int@INT-SYNTAX("67")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct an empty List: ")),#(Location(Int@INT-SYNTAX("172"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("172"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("| \".\"")),#(Location(Int@INT-SYNTAX("174"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("174"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get the list length ")),#(Location(Int@INT-SYNTAX("189"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("189"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= _inList_(K@SORT-K,List@LIST) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in")),#NonTerminal(S("List@LIST")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("187"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("187"),Int@INT-SYNTAX("85")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("587003819")),function(AttributeValue("")),klabel(KString@KSTRING("_inList_")),hook(AttributeValue("LIST.in")),klabel(AttributeValue("_inList_"))] + syntax Int@INT-SYNTAX ::= sizeList(List@LIST) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("List@LIST")),#Terminal(S(")")),smtlib(AttributeValue("smt_seq_len")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("LIST.size")),#(Location(Int@INT-SYNTAX("190"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("190"),Int@INT-SYNTAX("109")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("sizeList")),function(AttributeValue("")),productionID(KString@KSTRING("811301908")),klabel(AttributeValue("sizeList"))] + syntax K@SORT-K ::= `List:get`(List@LIST,Int@INT-SYNTAX) [#NonTerminal(S("List@LIST")),#Terminal(S("[")),#NonTerminal(S("Int@INT-SYNTAX")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("181"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("181"),Int@INT-SYNTAX("86")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("LIST.get")),klabel(KString@KSTRING("List:get")),productionID(KString@KSTRING("1644231115")),klabel(AttributeValue("List:get"))] +endmodule [#(Location(Int@INT-SYNTAX("133"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("191"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module PROGRAM-LISTS + import SORT-K [] + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" replaces the default productions for lists:")),#(Location(Int@INT-SYNTAX("180"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("180"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Ne#Es ::= E \",\" Ne#Es [klabel('_,_)]")),#(Location(Int@INT-SYNTAX("185"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("185"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" if this module is imported, the parser automatically")),#(Location(Int@INT-SYNTAX("179"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("179"),Int@INT-SYNTAX("58")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es#Terminator ::= \"\" [klabel('.Es)]")),#(Location(Int@INT-SYNTAX("184"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("184"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= Ne#Es")),#(Location(Int@INT-SYNTAX("187"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("187"),Int@INT-SYNTAX("18")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | E Es#Terminator [klabel('_,_)]")),#(Location(Int@INT-SYNTAX("186"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("186"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | \".Es\" [userList(\"*\"), klabel('.Es)]")),#(Location(Int@INT-SYNTAX("182"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("182"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" into a series of productions more suitable for programs:")),#(Location(Int@INT-SYNTAX("183"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("183"),Int@INT-SYNTAX("62")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Es ::= E \",\" Es [userList(\"*\"), klabel('_,_)]")),#(Location(Int@INT-SYNTAX("181"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("181"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" | Es#Terminator // if the list is *")),#(Location(Int@INT-SYNTAX("188"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("188"),Int@INT-SYNTAX("51")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("177"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("189"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module LANGUAGE-PARSING + import IMP [] + import K-TERM [] + import ID-PROGRAM-PARSING [] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(#KRewrite(OR(AND(`int_;_`(`_,_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX")))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-2042143462")))),AND(#KSequence(OR(AND(`_+_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))))),OR(isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("1668945451")))),AND(`_&&_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("828396164"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-1441915690")))),OR(AND(#(_39:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("828396164"))),AND(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1441915690"))))),OR(isRule(K@SORT-K("828396164")),isRule(K@SORT-K("-1441915690")),isRule(K@SORT-K("-2119516101")))),AND(`{_}`(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("801877613")))),AND(`if(_)_else_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-253489982"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("1044855691")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(_37:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982"))),AND(#(_35:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))))),OR(isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("-253489982")))),AND(`_=_;`(OR(AND(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1426745059"))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1547329554")))),OR(AND(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1547329554"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1426745059"))))),OR(isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-1547329554")))),AND(`!_`(OR(AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-133314472"))),AND(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),isRule(K@SORT-K("-1115781310"))))),OR(isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("-1115781310")))),AND(`_<=_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))))),OR(isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("1007287357")))),AND(`int_;_`(`.List{"_,_"}`(),#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1897515373")))),AND(`_/_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))))),OR(isRule(K@SORT-K("458825590")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("-362805565")))),AND(`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1762956723")))),AND(__(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("2056209854")))),AND(`{}`(),OR(isRule(K@SORT-K("185630652")))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("4114016"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("16497720")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("62439284")))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730"))))),OR(AND(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1651559554")))),AND(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("16497720")))),AND(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("62439284")))),AND(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1574379563")))),AND(`#freezer!_0`(),OR(isRule(K@SORT-K("52455237")))),AND(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),OR(isRule(K@SORT-K("-1087628972")))),AND(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1229373845")))),AND(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("553250730")))),AND(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("771814581")))),AND(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1834170265")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#EmptyK(),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("52455237")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#KSequence(`_<=_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1229373845"))),AND(#KSequence(`_+Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1869811340"))),AND(#KSequence(`_&&_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("62439284"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("883215674"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1861470032"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1961865699"))),AND(#KSequence(notBool_(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1115781310"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1426745059"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("185630652"))),AND(#KSequence(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1441915690"))),AND(#KSequence(`_<=_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("771814581"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-253489982"))),AND(#KSequence(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#KSequence(#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("2056209854"))),AND(#KSequence(`_/_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("553250730"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1007287357"))),AND(#KSequence(`!_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("52455237"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer!_0`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-133314472"))),AND(#KSequence(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("828396164"))),AND(#KSequence(#(#(I:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("4114016"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-362805565"))),AND(#KSequence(`if(_)_else_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("16497720"))),AND(`int_;_`(#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX"))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),isRule(K@SORT-K("-2042143462"))),AND(#KSequence(`if(_)_else_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),`{_}`(__(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))))),`{}`()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1762956723"))),AND(#KSequence(`_+_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1651559554"))),AND(#KSequence(`_=_;`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1087628972"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1668945451"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-2119516101"))),AND(#KSequence(`_/_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1834170265"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1897515373"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("801877613"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("458825590"))),AND(#KSequence(`_+_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1574379563"))),AND(#KSequence(`_/Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-853757395"))),AND(#KSequence(`_<=Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1926041068"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1044855691"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("-1547329554")))))),OR(AND(``(#KRewrite(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))),OR(AND(_Map_(`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar2:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP")))),isRule(K@SORT-K("-1547329554"))),AND(_Map_(#(#(#(Rho:Map@MAP,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP"))),`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),isRule(K@SORT-K("-2042143462")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("-2042143462")))),AND(DotVar0:K@SORT-K,OR(isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690")))))),\next(Bool@BOOL-SYNTAX("true")))) [automaton()] +endmodule [] + +module SEMANTICS + import IMP [] + syntax KItem@BASIC-K ::= ``(KCell@IMP) [#NonTerminal(S("KCell@IMP"))] + syntax KItem@BASIC-K ::= ``(Stmt@IMP-SYNTAX) [#NonTerminal(S("Stmt@IMP-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(Stream@K-IO) [#NonTerminal(S("Stream@K-IO"))] + syntax KItem@BASIC-K ::= ``(BExp@IMP-SYNTAX) [#NonTerminal(S("BExp@IMP-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(TCell@IMP) [#NonTerminal(S("TCell@IMP"))] + syntax KItem@BASIC-K ::= ``(Set@SET) [#NonTerminal(S("Set@SET"))] + syntax KItem@BASIC-K ::= ``(Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(KResult@BASIC-K) [#NonTerminal(S("KResult@BASIC-K"))] + syntax KItem@BASIC-K ::= ``(Block@IMP-SYNTAX) [#NonTerminal(S("Block@IMP-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(KCellOpt@IMP) [#NonTerminal(S("KCellOpt@IMP"))] + syntax KItem@BASIC-K ::= ``(Int@INT-SYNTAX) [#NonTerminal(S("Int@INT-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(List@LIST) [#NonTerminal(S("List@LIST"))] + syntax KItem@BASIC-K ::= ``(MetaVariable@BASIC-K) [#NonTerminal(S("MetaVariable@BASIC-K"))] + syntax KItem@BASIC-K ::= ``(Bottom@BASIC-K) [#NonTerminal(S("Bottom@BASIC-K"))] + syntax KItem@BASIC-K ::= ``(IOError@K-IO) [#NonTerminal(S("IOError@K-IO"))] + syntax KItem@BASIC-K ::= ``(Id@ID) [#NonTerminal(S("Id@ID"))] + syntax KItem@BASIC-K ::= ``(StateCell@IMP) [#NonTerminal(S("StateCell@IMP"))] + syntax KItem@BASIC-K ::= ``(Pgm@IMP-SYNTAX) [#NonTerminal(S("Pgm@IMP-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(Map@MAP) [#NonTerminal(S("Map@MAP"))] + syntax KItem@BASIC-K ::= ``(TCellFragment@IMP) [#NonTerminal(S("TCellFragment@IMP"))] + syntax KItem@BASIC-K ::= ``(Float@FLOAT-SYNTAX) [#NonTerminal(S("Float@FLOAT-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(StateCellOpt@IMP) [#NonTerminal(S("StateCellOpt@IMP"))] + syntax KItem@BASIC-K ::= ``(String@STRING-SYNTAX) [#NonTerminal(S("String@STRING-SYNTAX"))] + syntax KItem@BASIC-K ::= ``(AExp@IMP-SYNTAX) [#NonTerminal(S("AExp@IMP-SYNTAX"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(``(``(#KRewrite(OR(AND(`int_;_`(`_,_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX")))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-2042143462")))),AND(#KSequence(OR(AND(`_+_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("883215674"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("1869811340"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1668945451"))))),OR(isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("1668945451")))),AND(`_&&_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("828396164"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-1441915690")))),OR(AND(#(_39:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("828396164"))),AND(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-2119516101"))),AND(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1441915690"))))),OR(isRule(K@SORT-K("828396164")),isRule(K@SORT-K("-1441915690")),isRule(K@SORT-K("-2119516101")))),AND(`{_}`(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("801877613")))),AND(`if(_)_else_`(OR(AND(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("17")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("-253489982"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("12"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),isRule(K@SORT-K("1044855691")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))),AND(#(_37:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982")))),OR(AND(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-253489982"))),AND(#(_35:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("1044855691"))),AND(#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),isRule(K@SORT-K("-1961865699"))))),OR(isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("-253489982")))),AND(`_=_;`(OR(AND(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1426745059"))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("-1547329554")))),OR(AND(#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1547329554"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-1426745059"))))),OR(isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-1547329554")))),AND(`!_`(OR(AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),isRule(K@SORT-K("-133314472"))),AND(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),isRule(K@SORT-K("-1115781310"))))),OR(isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("-1115781310")))),AND(`_<=_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1861470032"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-1926041068"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("1007287357"))))),OR(isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("1007287357")))),AND(`int_;_`(`.List{"_,_"}`(),#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1897515373")))),AND(`_/_`(OR(AND(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395")))),OR(AND(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("-362805565"))),AND(#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),isRule(K@SORT-K("-853757395"))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),isRule(K@SORT-K("458825590"))))),OR(isRule(K@SORT-K("458825590")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("-362805565")))),AND(`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1762956723")))),AND(__(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),OR(isRule(K@SORT-K("2056209854")))),AND(`{}`(),OR(isRule(K@SORT-K("185630652")))),AND(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),isRule(K@SORT-K("4114016"))),AND(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("16497720")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("62439284")))),AND(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730"))))),OR(AND(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1651559554")))),AND(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),OR(isRule(K@SORT-K("16497720")))),AND(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("62439284")))),AND(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("1574379563")))),AND(`#freezer!_0`(),OR(isRule(K@SORT-K("52455237")))),AND(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),OR(isRule(K@SORT-K("-1087628972")))),AND(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1229373845")))),AND(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("553250730")))),AND(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("771814581")))),AND(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),OR(isRule(K@SORT-K("-1834170265")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#EmptyK(),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("-1441915690")))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),OR(isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("52455237")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690"))))),OR(AND(#KSequence(`_<=_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1229373845"))),AND(#KSequence(`_+Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1869811340"))),AND(#KSequence(`_&&_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("62439284"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("883215674"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1861470032"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezerif(_)_else_1`(#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1961865699"))),AND(#KSequence(notBool_(#(#(#(T:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1115781310"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_=_;0`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-1426745059"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("185630652"))),AND(#KSequence(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1441915690"))),AND(#KSequence(`_<=_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("771814581"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-253489982"))),AND(#KSequence(#(#(#(S1:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#KSequence(#(#(#(S2:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("35")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("2056209854"))),AND(#KSequence(`_/_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("553250730"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_<=_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1007287357"))),AND(#KSequence(`!_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("52455237"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer!_0`(),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-133314472"))),AND(#KSequence(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("828396164"))),AND(#KSequence(#(#(I:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("4114016"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_1`(#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-362805565"))),AND(#KSequence(`if(_)_else_`(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(K1:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(K2:Block@IMP-SYNTAX,sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("16497720"))),AND(`int_;_`(#(#(#(Xs:Ids@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Ids@IMP-SYNTAX"))),#(_36:Stmt@IMP-SYNTAX,sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX")))),isRule(K@SORT-K("-2042143462"))),AND(#KSequence(`if(_)_else_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),`{_}`(__(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),`while(_)_`(#(#(#(B:BExp@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("41")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("44")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX")))))),`{}`()),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1762956723"))),AND(#KSequence(`_+_`(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(K1:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1651559554"))),AND(#KSequence(`_=_;`(#(K0:Id@ID,sort(String@STRING-SYNTAX("Id@ID"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1087628972"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_+_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("1668945451"))),AND(#KSequence(#(HOLE:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX"))),#KSequence(`#freezer_&&_1`(#(K1:BExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("BExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("-2119516101"))),AND(#KSequence(`_/_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1834170265"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("56"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("56"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1897515373"))),AND(#KSequence(#(#(#(S:Stmt@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("15"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("16")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Stmt@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("801877613"))),AND(#KSequence(#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#KSequence(`#freezer_/_0`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))))),isRule(K@SORT-K("458825590"))),AND(#KSequence(`_+_`(#(K0:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX"))),#(HOLE:AExp@IMP-SYNTAX,sort(String@STRING-SYNTAX("AExp@IMP-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1574379563"))),AND(#KSequence(`_/Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("42")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-853757395"))),AND(#KSequence(`_<=Int_`(#(#(#(I1:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX"))),#(#(#(I2:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("-1926041068"))),AND(#KSequence(#(#(#(S:Block@IMP-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Block@IMP-SYNTAX"))),#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K")))),isRule(K@SORT-K("1044855691"))),AND(#(DotVar1:K@SORT-K,sort(String@STRING-SYNTAX("K@SORT-K"))),isRule(K@SORT-K("-1547329554")))))),OR(AND(``(#KRewrite(#(_0:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP"))),OR(AND(_Map_(`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("48")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(#(I:Int@INT-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Int@INT-SYNTAX")))),#(DotVar2:Map@MAP,sort(String@STRING-SYNTAX("Map@MAP")))),isRule(K@SORT-K("-1547329554"))),AND(_Map_(#(#(#(Rho:Map@MAP,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Map@MAP"))),`_|->_`(#(#(#(X:Id@ID,#(org.kframework.attributes.Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Id@ID"))),#(#(Int@INT-SYNTAX("0"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("65"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("66")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("./imp.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))))),isRule(K@SORT-K("-2042143462")))))),OR(isRule(K@SORT-K("-1547329554")),isRule(K@SORT-K("4114016")),isRule(K@SORT-K("-2042143462")))),AND(DotVar0:K@SORT-K,OR(isRule(K@SORT-K("1861470032")),isRule(K@SORT-K("-2119516101")),isRule(K@SORT-K("-362805565")),isRule(K@SORT-K("-1926041068")),isRule(K@SORT-K("-1229373845")),isRule(K@SORT-K("-1834170265")),isRule(K@SORT-K("-1961865699")),isRule(K@SORT-K("16497720")),isRule(K@SORT-K("1869811340")),isRule(K@SORT-K("458825590")),isRule(K@SORT-K("1574379563")),isRule(K@SORT-K("1762956723")),isRule(K@SORT-K("-1087628972")),isRule(K@SORT-K("1651559554")),isRule(K@SORT-K("883215674")),isRule(K@SORT-K("828396164")),isRule(K@SORT-K("185630652")),isRule(K@SORT-K("-253489982")),isRule(K@SORT-K("62439284")),isRule(K@SORT-K("1007287357")),isRule(K@SORT-K("-1897515373")),isRule(K@SORT-K("-1115781310")),isRule(K@SORT-K("-133314472")),isRule(K@SORT-K("1668945451")),isRule(K@SORT-K("801877613")),isRule(K@SORT-K("771814581")),isRule(K@SORT-K("1044855691")),isRule(K@SORT-K("-1426745059")),isRule(K@SORT-K("553250730")),isRule(K@SORT-K("-853757395")),isRule(K@SORT-K("2056209854")),isRule(K@SORT-K("52455237")),isRule(K@SORT-K("-1441915690")))))),\next(Bool@BOOL-SYNTAX("true")))) [automaton()] + syntax KItem@BASIC-K ::= ``(Ids@IMP-SYNTAX) [#NonTerminal(S("Ids@IMP-SYNTAX"))] +endmodule [] + +module SORT-K + syntax K@SORT-K [hook(AttributeValue("K.K")),#(Location(Int@INT-SYNTAX("8"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("22")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("7"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("9"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module ID-PROGRAM-PARSING + import ID [] + import BOOL-SYNTAX [] + syntax Id@ID ::= ``() [#RegexTerminal(S("[A-Za-z0-9\\_]"),S("[A-Za-z\\_][A-Za-z0-9\\_]*"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("198499365")),notInRules(AttributeValue("")),#(Location(Int@INT-SYNTAX("487"),Int@INT-SYNTAX("17"),Int@INT-SYNTAX("487"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),autoReject(AttributeValue("")),klabel(KString@KSTRING(""))] +endmodule [#(Location(Int@INT-SYNTAX("485"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("488"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module BOOL + import BASIC-K [] + import BOOL-SYNTAX [] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("237"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("237"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(notBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("21")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("217"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("217"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= _orBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("orBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("or")),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("BOOL.or")),latex(AttributeValue("{#1}\\vee_{\\scriptstyle\\it Bool}{#2}")),klabel(KString@KSTRING("_orBool_")),boolOperation(AttributeValue("")),#(Location(Int@INT-SYNTAX("208"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("208"),Int@INT-SYNTAX("144")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1169474473"))] + syntax Bool@BOOL-SYNTAX ::= _andBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("andBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),latex(AttributeValue("{#1}\\wedge_{\\scriptstyle\\it Bool}{#2}")),klabel(KString@KSTRING("_andBool_")),left(AttributeValue("")),productionID(KString@KSTRING("868815265")),hook(AttributeValue("BOOL.and")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("205"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("205"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),smtlib(AttributeValue("and")),boolOperation(AttributeValue(""))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("225"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("225"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_impliesBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),notBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("247"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("247"),Int@INT-SYNTAX("45")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),_1:K@SORT-K),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("226"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("226"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("242"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("242"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_impliesBool_(#(_5:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("31")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("246"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("246"),Int@INT-SYNTAX("39")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_impliesBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_6:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("245"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("245"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_andBool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(_3:K@SORT-K,#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("25")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("240"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("240"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(notBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("20")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("216"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("216"),Int@INT-SYNTAX("29")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= _xorBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("xorBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("207"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("207"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),hook(AttributeValue("BOOL.xor")),productionID(KString@KSTRING("294658058")),klabel(KString@KSTRING("_xorBool_")),smtlib(AttributeValue("xor")),boolOperation(AttributeValue(""))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("219"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("219"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("notBool_")),#SyntaxPriorityGroup(S("_andThenBool_"),S("_andBool_")),#SyntaxPriorityGroup(S("_xorBool_")),#SyntaxPriorityGroup(S("_orElseBool_"),S("_orBool_")),#SyntaxPriorityGroup(S("_impliesBool_")),#SyntaxPriorityGroup(S("_==Bool_"),S("_=/=Bool_")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_xorBool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_xorBool_(#(#(#(B1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),notBool_(`_==Bool_`(#(#(#(B1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("232"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("232"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_impliesBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("244"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("244"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_xorBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("229"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("229"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_4:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("221"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("221"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(_0:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("234"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("234"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_=/=Bool_`(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("=/=Bool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1278852808")),#(Location(Int@INT-SYNTAX("213"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("213"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),smtlib(AttributeValue("distinct")),hook(AttributeValue("BOOL.ne")),klabel(KString@KSTRING("_=/=Bool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("241"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("241"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orBool_(#(_9:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("235"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("235"),Int@INT-SYNTAX("34")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_=/=Bool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("220"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("220"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_orElseBool_"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_orBool_"))] + syntax Bool@BOOL-SYNTAX ::= notBool_(Bool@BOOL-SYNTAX) [#Terminal(S("notBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#(Location(Int@INT-SYNTAX("204"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("204"),Int@INT-SYNTAX("136")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("not")),klabel(KString@KSTRING("notBool_")),function(AttributeValue("")),hook(AttributeValue("BOOL.not")),latex(AttributeValue("\\neg_{\\scriptstyle\\it Bool}{#1}")),boolOperation(AttributeValue("")),productionID(KString@KSTRING("1525409936"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),#(#(#(K:K@SORT-K,#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("25"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("K@SORT-K")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("224"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("224"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andBool_(#(_7:Bool@BOOL-SYNTAX,sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("222"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("222"),Int@INT-SYNTAX("37")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(`_=/=Bool_`(#(#(#(B1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),notBool_(`_==Bool_`(#(#(#(B1:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("46")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B2:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("249"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("249"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==Bool_"),S("_=/=Bool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_xorBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("24")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("33"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("231"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("231"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_==Bool_`(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("==Bool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),smtlib(AttributeValue("=")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("BOOL.eq")),#(Location(Int@INT-SYNTAX("212"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("212"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("9190301")),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_==Bool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orElseBool_(#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("12")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),_8:K@SORT-K),#(#(Bool@BOOL-SYNTAX("true"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("239"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("239"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_andThenBool_"))] + syntax Bool@BOOL-SYNTAX ::= _impliesBool_(Bool@BOOL-SYNTAX,Bool@BOOL-SYNTAX) [#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S("impliesBool")),#NonTerminal(S("Bool@BOOL-SYNTAX")),hook(AttributeValue("BOOL.implies")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),left(AttributeValue("")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("210"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("210"),Int@INT-SYNTAX("105")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("945722724")),smtlib(AttributeValue("=>")),klabel(KString@KSTRING("_impliesBool_")),boolOperation(AttributeValue(""))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_orBool_(#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("13")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("236"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("236"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_==Bool_"))] + syntax Bool@BOOL-SYNTAX ::= _orElseBool_(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("orElseBool")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),smtlib(AttributeValue("or")),productionID(KString@KSTRING("966544353")),#(Location(Int@INT-SYNTAX("209"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("209"),Int@INT-SYNTAX("104")),classType(KString@KSTRING("org.kframework.attributes.Location"))),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_orElseBool_")),hook(AttributeValue("BOOL.orElse")),boolOperation(AttributeValue(""))] + syntax Bool@BOOL-SYNTAX ::= _andThenBool_(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("andThenBool")),#NonTerminal(S("K@SORT-K")),#(Location(Int@INT-SYNTAX("206"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("206"),Int@INT-SYNTAX("106")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1977310713")),left(AttributeValue("")),function(AttributeValue("")),klabel(KString@KSTRING("_andThenBool_")),hook(AttributeValue("BOOL.andThen")),smtlib(AttributeValue("and")),boolOperation(AttributeValue(""))] + syntax Bool@BOOL-SYNTAX ::= `(_)`(Bool@BOOL-SYNTAX) [#Terminal(S("(")),#NonTerminal(S("Bool@BOOL-SYNTAX")),#Terminal(S(")")),productionID(KString@KSTRING("504858437")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("214"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("214"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_xorBool_(#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX"))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("23"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(#(B:Bool@BOOL-SYNTAX,#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("32"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("33")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))),sort(String@STRING-SYNTAX("Bool@BOOL-SYNTAX")))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("230"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("230"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_impliesBool_"))] + rule \implies(Bool@BOOL-SYNTAX("true"),\and(\rewrite(_andThenBool_(_2:K@SORT-K,#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("27")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),#(#(Bool@BOOL-SYNTAX("false"),#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location")))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))))),\next(Bool@BOOL-SYNTAX("true")))) [#(org.kframework.attributes.Location(Int@INT-SYNTAX("227"),Int@INT-SYNTAX("8"),Int@INT-SYNTAX("227"),Int@INT-SYNTAX("36")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(org.kframework.attributes.Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("201"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("251"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KSTRING + import BOOL-SYNTAX [] + axiom B("true") [#ModuleComment(S(" optionally qualified strings, like in Scala \"abc\", i\"abc\", r\"a*bc\", etc.")),#(Location(Int@INT-SYNTAX("29"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("29"),Int@INT-SYNTAX("78")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KString@KSTRING ::= ``() [#RegexTerminal(S("#"),S("[\\\"](([^\\\"\n\r\\\\])|([\\\\][nrtf\\\"\\\\])|([\\\\][x][0-9a-fA-F]{2})|([\\\\][u][0-9a-fA-F]{4})|([\\\\][U][0-9a-fA-F]{8}))*[\\\"]"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("1637290981")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("28"),Int@INT-SYNTAX("22"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("205")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("org.kframework.kore.KString"))] + syntax Bool@BOOL-SYNTAX ::= isKString@KSTRING(K@SORT-K) [#Terminal(S("isKString@KSTRING")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("KString@KSTRING")),klabel(KString@KSTRING("isKString@KSTRING"))] +endmodule [#(Location(Int@INT-SYNTAX("27"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module K + import AUTO-CASTS [] + import KSEQ-SYMBOLIC [] + import BOOL-SYNTAX [] + import AUTO-FOLLOW [] + import K-SORT-LATTICE [] + import REQUIRES-ENSURES [] + syntax KBott@BASIC-K ::= #KRewrite(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("=>")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("org.kframework.kore.KRewrite")),klabel(KString@KSTRING("#KRewrite")),non-assoc(AttributeValue("")),klabel(AttributeValue("#KRewrite")),productionID(KString@KSTRING("1864230087")),#(Location(Int@INT-SYNTAX("211"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("211"),Int@INT-SYNTAX("102")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#SyntaxAssociativity(S("non-assoc"),S("#KRewrite"))] +endmodule [#(Location(Int@INT-SYNTAX("205"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("214"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module CONFIG-CELLS + import RULE-LISTS [] + import KCELLS [] + import BOOL-SYNTAX [] + syntax Bool@BOOL-SYNTAX ::= is#CellProperty@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellProperty@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellProperty@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellProperty@CONFIG-CELLS"))] + syntax #CellProperty@CONFIG-CELLS ::= #cellProperty(#CellName@CONFIG-CELLS,KString@KSTRING) [#NonTerminal(S("#CellName@CONFIG-CELLS")),#Terminal(S("=")),#NonTerminal(S("KString@KSTRING")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("119"),Int@INT-SYNTAX("28"),Int@INT-SYNTAX("119"),Int@INT-SYNTAX("82")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#cellProperty")),productionID(KString@KSTRING("489349054")),klabel(KString@KSTRING("#cellProperty"))] + syntax Bool@BOOL-SYNTAX ::= is#CellProperties@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellProperties@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellProperties@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellProperties@CONFIG-CELLS"))] + syntax Cell@KCELLS ::= #externalCell(#CellName@CONFIG-CELLS) [#Terminal(S("<")),#NonTerminal(S("#CellName@CONFIG-CELLS")),#Terminal(S("/>")),productionID(KString@KSTRING("762476028")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("114"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("114"),Int@INT-SYNTAX("60")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#externalCell")),klabel(KString@KSTRING("#externalCell"))] + syntax Bool@BOOL-SYNTAX ::= is#CellName@CONFIG-CELLS(K@SORT-K) [#Terminal(S("is#CellName@CONFIG-CELLS")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("#CellName@CONFIG-CELLS")),klabel(KString@KSTRING("is#CellName@CONFIG-CELLS"))] + syntax #CellProperties@CONFIG-CELLS ::= #cellPropertyListTerminator() [#Terminal(S("")),#(Location(Int@INT-SYNTAX("118"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("118"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#cellPropertyListTerminator")),productionID(KString@KSTRING("918312414")),klabel(KString@KSTRING("#cellPropertyListTerminator"))] + syntax Cell@KCELLS ::= #breakCell() [#Terminal(S("")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("2044903525")),#(Location(Int@INT-SYNTAX("115"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("115"),Int@INT-SYNTAX("49")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#breakCell")),klabel(KString@KSTRING("#breakCell"))] + syntax Cell@KCELLS ::= #configCell(#CellName@CONFIG-CELLS,#CellProperties@CONFIG-CELLS,K@SORT-K,#CellName@CONFIG-CELLS) [#Terminal(S("<")),#NonTerminal(S("#CellName@CONFIG-CELLS")),#NonTerminal(S("#CellProperties@CONFIG-CELLS")),#Terminal(S(">")),#NonTerminal(S("K@SORT-K")),#Terminal(S("")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("#configCell")),klabel(AttributeValue("#configCell")),#(Location(Int@INT-SYNTAX("113"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("113"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("371800738"))] + syntax #CellProperties@CONFIG-CELLS ::= #cellPropertyList(#CellProperty@CONFIG-CELLS,#CellProperties@CONFIG-CELLS) [#NonTerminal(S("#CellProperty@CONFIG-CELLS")),#NonTerminal(S("#CellProperties@CONFIG-CELLS")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#cellPropertyList")),productionID(KString@KSTRING("294247762")),#(Location(Int@INT-SYNTAX("117"),Int@INT-SYNTAX("30"),Int@INT-SYNTAX("117"),Int@INT-SYNTAX("86")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#cellPropertyList"))] + syntax #CellName@CONFIG-CELLS ::= ``() [#RegexTerminal(S("#"),S("[a-zA-Z0-9\\-]+"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("1818544933")),klabel(KString@KSTRING("")),#(Location(Int@INT-SYNTAX("111"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("111"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location")))] +endmodule [#(Location(Int@INT-SYNTAX("108"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("121"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module MAP + import SET [] + import LIST [] + import BOOL-SYNTAX [] + syntax Map@MAP ::= `_[_<-undef]`(Map@MAP,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("<-")),#Terminal(S("undef")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_[_<-undef]")),function(AttributeValue("")),hook(AttributeValue("MAP.remove")),#(Location(Int@INT-SYNTAX("55"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("55"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("543846639"))] + axiom B("true") [#SyntaxPriority(#SyntaxPriorityGroup(S("_|->_")),#SyntaxPriorityGroup(S(".Map"),S("_Map_")))] + axiom B("true") [#ModuleComment(S(" Check map inclusion ")),#(Location(Int@INT-SYNTAX("80"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("80"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get a List consisting of all values in the Map: ")),#(Location(Int@INT-SYNTAX("74"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("74"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Get a Set consisting of all keys in the Map:")),#(Location(Int@INT-SYNTAX("69"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("69"),Int@INT-SYNTAX("52")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= removeAll(Map@MAP,Set@SET) [#Terminal(S("removeAll")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(",")),#NonTerminal(S("Set@SET")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("removeAll")),hook(AttributeValue("MAP.removeAll")),productionID(KString@KSTRING("757004314")),function(AttributeValue("")),klabel(AttributeValue("removeAll")),#(Location(Int@INT-SYNTAX("67"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("67"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Get the difference of two maps interpreted as sets of entries\n ($M_1 \\setminus M2$) ")),#(Location(Int@INT-SYNTAX("57"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("58"),Int@INT-SYNTAX("26")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S("\\section{Description} The Map represents a generalized associative array.\n Each key can be paired with an arbitrary value, and can be used to reference\n its associated value. Multiple bindings for the same key are not allowed. ")),#(Location(Int@INT-SYNTAX("29"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("31"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Construct a new Map consisting of key/value pairs of two Maps (the keys of\n the two Maps are assumed disjoint) ")),#(Location(Int@INT-SYNTAX("33"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("34"),Int@INT-SYNTAX("40")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= .Map() [#Terminal(S(".Map")),latex(AttributeValue("\\dotCt{Map}")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING(".Map")),function(AttributeValue("")),hook(AttributeValue("MAP.unit")),#(Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("94")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1365008457"))] + syntax Bool@BOOL-SYNTAX ::= `_in_keys(_)`(K@SORT-K,Map@MAP) [#NonTerminal(S("K@SORT-K")),#Terminal(S("in_keys")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),klabel(KString@KSTRING("_in_keys(_)")),hook(AttributeValue("MAP.in_keys")),#(Location(Int@INT-SYNTAX("72"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("72"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1430439149"))] + axiom B("true") [#ModuleComment(S(" Get an arbitrarily chosen key of the Map ")),#(Location(Int@INT-SYNTAX("83"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("83"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Update the first map by adding all key/value pairs in the second map. If a\n key in the first map exists also in the second map, its associated value will\n be overwritten by the value from the second map. ")),#(Location(Int@INT-SYNTAX("61"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("63"),Int@INT-SYNTAX("54")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax List@LIST ::= values(Map@MAP) [#Terminal(S("values")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("75"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("75"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),klabel(AttributeValue("values")),klabel(KString@KSTRING("values")),hook(AttributeValue("MAP.values")),productionID(KString@KSTRING("231756373"))] + axiom B("true") [#SyntaxAssociativity(S("non-assoc"),S("_|->_"))] + syntax Int@INT-SYNTAX ::= sizeMap(Map@MAP) [#Terminal(S("size")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("sizeMap")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("78"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("78"),Int@INT-SYNTAX("91")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1069716895")),klabel(KString@KSTRING("sizeMap")),hook(AttributeValue("MAP.size"))] + axiom B("true") [#ModuleComment(S(" Retrieve the value associated with the given key ")),#(Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("57")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Remove key/value pair associated with the key from map? ")),#(Location(Int@INT-SYNTAX("54"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("54"),Int@INT-SYNTAX("64")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= `_[_<-_]`(Map@MAP,K@SORT-K,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("<-")),#NonTerminal(S("K@SORT-K")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("_[_<-_]")),#(Location(Int@INT-SYNTAX("52"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("52"),Int@INT-SYNTAX("84")),classType(KString@KSTRING("org.kframework.attributes.Location"))),hook(AttributeValue("MAP.update")),function(AttributeValue("")),prefer(AttributeValue("")),productionID(KString@KSTRING("1434234664"))] + syntax Set@SET ::= keys(Map@MAP) [#Terminal(S("keys")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),klabel(AttributeValue("keys")),klabel(KString@KSTRING("keys")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),relativeHook(AttributeValue("_Map_.keys")),function(AttributeValue("")),#(Location(Int@INT-SYNTAX("70"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("70"),Int@INT-SYNTAX("100")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1276261147")),hook(AttributeValue("MAP.keys"))] + syntax Bool@BOOL-SYNTAX ::= isMap@MAP(K@SORT-K) [#Terminal(S("isMap@MAP")),#Terminal(S("(")),#NonTerminal(S("K@SORT-K")),#Terminal(S(")")),function(),predicate(KString@KSTRING("Map@MAP")),klabel(KString@KSTRING("isMap@MAP"))] + axiom B("true") [#ModuleComment(S(" Construct an empty Map ")),#(Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("32")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= _Map_(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#NonTerminal(S("Map@MAP")),assoc(AttributeValue("")),#(Location(Int@INT-SYNTAX("35"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("148")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("_Map_")),hook(AttributeValue("MAP.concat")),comm(AttributeValue("")),left(AttributeValue("")),function(AttributeValue("")),element(AttributeValue("_|->_")),productionID(KString@KSTRING("2020152163")),index(AttributeValue("0")),unit(AttributeValue(".Map")),klabel(KString@KSTRING("_Map_"))] + axiom B("true") [#ModuleComment(S("| \".\" [function, hook(MAP.unit)]")),#(Location(Int@INT-SYNTAX("39"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("39"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP [hook(AttributeValue("MAP.Map")),#(Location(Int@INT-SYNTAX("27"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("27"),Int@INT-SYNTAX("28")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" breaks klabel uniqueness")),#(Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("43")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("_Map_"))] + syntax Map@MAP ::= `(_)`(Map@MAP) [#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1636506029")),#(Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("38")),classType(KString@KSTRING("org.kframework.attributes.Location"))),bracket(AttributeValue("")),klabel(KString@KSTRING("(_)"))] + syntax Map@MAP ::= `_|->_`(K@SORT-K,K@SORT-K) [#NonTerminal(S("K@SORT-K")),#Terminal(S("|->")),#NonTerminal(S("K@SORT-K")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("43"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("43"),Int@INT-SYNTAX("101")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("_|->_")),function(AttributeValue("")),productionID(KString@KSTRING("1362728240")),latex(AttributeValue("{#1}\\mapsto{#2}")),hook(AttributeValue("MAP.element"))] + syntax Map@MAP ::= _-Map_(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#Terminal(S("-Map")),#NonTerminal(S("Map@MAP")),#(Location(Int@INT-SYNTAX("59"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("59"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),latex(AttributeValue("{#1}-_{\\it Map}{#2}")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("MAP.difference")),function(AttributeValue("")),klabel(KString@KSTRING("_-Map_")),productionID(KString@KSTRING("887750041"))] + syntax K@SORT-K ::= `Map:lookup`(Map@MAP,K@SORT-K) [#NonTerminal(S("Map@MAP")),#Terminal(S("[")),#NonTerminal(S("K@SORT-K")),#Terminal(S("]")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),function(AttributeValue("")),relativeHook(AttributeValue("_Map_.lookup")),#(Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1534745514")),klabel(AttributeValue("Map:lookup")),klabel(KString@KSTRING("Map:lookup")),hook(AttributeValue("MAP.lookup"))] + axiom B("true") [#ModuleComment(S(" Update the Map by removing all key/value pairs with the key in the Set. ")),#(Location(Int@INT-SYNTAX("66"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("66"),Int@INT-SYNTAX("80")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Map@MAP ::= updateMap(Map@MAP,Map@MAP) [#Terminal(S("updateMap")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(",")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Location(Int@INT-SYNTAX("64"),Int@INT-SYNTAX("18"),Int@INT-SYNTAX("64"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(KString@KSTRING("updateMap")),productionID(KString@KSTRING("1881561036")),hook(AttributeValue("MAP.updateAll")),function(AttributeValue("")),klabel(AttributeValue("updateMap"))] + axiom B("true") [#ModuleComment(S(" Construct a singleton Map (a Map with only one key/value pair). The key\n is on the left and the value is on the right ")),#(Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("50")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + axiom B("true") [#ModuleComment(S(" Update a Map in form of of keys and values: ")),#(Location(Int@INT-SYNTAX("51"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax Bool@BOOL-SYNTAX ::= `_<=Map_`(Map@MAP,Map@MAP) [#NonTerminal(S("Map@MAP")),#Terminal(S("<=Map")),#NonTerminal(S("Map@MAP")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("109228794")),klabel(KString@KSTRING("_<=Map_")),#(Location(Int@INT-SYNTAX("81"),Int@INT-SYNTAX("19"),Int@INT-SYNTAX("81"),Int@INT-SYNTAX("79")),classType(KString@KSTRING("org.kframework.attributes.Location"))),function(AttributeValue("")),hook(AttributeValue("MAP.inclusion"))] + syntax K@SORT-K ::= `Map:choice`(Map@MAP) [#Terminal(S("choice")),#Terminal(S("(")),#NonTerminal(S("Map@MAP")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1714078840")),klabel(KString@KSTRING("Map:choice")),function(AttributeValue("")),klabel(AttributeValue("Map:choice")),hook(AttributeValue("MAP.choice")),#(Location(Int@INT-SYNTAX("84"),Int@INT-SYNTAX("16"),Int@INT-SYNTAX("84"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + axiom B("true") [#ModuleComment(S(" Get the Map size (number of key/value pairs) ")),#(Location(Int@INT-SYNTAX("77"),Int@INT-SYNTAX("3"),Int@INT-SYNTAX("77"),Int@INT-SYNTAX("53")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] +endmodule [#(Location(Int@INT-SYNTAX("23"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("85"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/domains.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + +module KAST + import BASIC-K [] + import KSTRING [] + import BOOL-SYNTAX [] + syntax KItem@BASIC-K ::= ``(KBott@BASIC-K) [#NonTerminal(S("KBott@BASIC-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("38"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("38"),Int@INT-SYNTAX("76")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1360657223"))] + syntax KList@BASIC-K ::= #EmptyKList() [#Terminal(S(".KList")),hook(AttributeValue("org.kframework.kore.EmptyKList")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("45"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("45"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("1594199808")),klabel(AttributeValue("#EmptyKList")),klabel(KString@KSTRING("#EmptyKList"))] + syntax KBott@BASIC-K ::= #InjectedKLabel(KLabel@BASIC-K) [#Terminal(S("#klabel")),#Terminal(S("(")),#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S(")")),productionID(KString@KSTRING("384587033")),#(Location(Int@INT-SYNTAX("36"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("36"),Int@INT-SYNTAX("124")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("org.kframework.kore.InjectedKLabel")),klabel(AttributeValue("#InjectedKLabel")),klabel(KString@KSTRING("#InjectedKLabel"))] + syntax KList@BASIC-K ::= #EmptyKList() [#Terminal(S(".::KList")),hook(AttributeValue("org.kframework.kore.EmptyKList")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),#(Location(Int@INT-SYNTAX("46"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("46"),Int@INT-SYNTAX("96")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(AttributeValue("#EmptyKList")),klabel(KString@KSTRING("#EmptyKList")),productionID(KString@KSTRING("422396878"))] + axiom B("true") [#ModuleComment(S(" | KList \",,\" KList [klabel(#KList), left, assoc, unit(#EmptyKList), hook(org.kframework.kore.KList), prefer]")),#(Location(Int@INT-SYNTAX("50"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("50"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= ``(K@SORT-K) [#NonTerminal(S("K@SORT-K")),allowChainSubsort(AttributeValue("")),#(Location(Int@INT-SYNTAX("44"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("44"),Int@INT-SYNTAX("56")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1438098656"))] + axiom B("true") [#SyntaxAssociativity(S("left"),S("#KList"))] + syntax KBott@BASIC-K ::= #KToken(KString@KSTRING,KString@KSTRING) [#Terminal(S("#token")),#Terminal(S("(")),#NonTerminal(S("KString@KSTRING")),#Terminal(S(",")),#NonTerminal(S("KString@KSTRING")),#Terminal(S(")")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),productionID(KString@KSTRING("1357563986")),hook(AttributeValue("org.kframework.kore.KToken")),klabel(AttributeValue("#KToken")),#(Location(Int@INT-SYNTAX("35"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("35"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#KToken"))] + axiom B("true") [#ModuleComment(S(" we need to fix this issue so we can add this production back.")),#(Location(Int@INT-SYNTAX("49"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("49"),Int@INT-SYNTAX("65")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KBott@BASIC-K ::= #KApply(KLabel@BASIC-K,KList@BASIC-K) [#NonTerminal(S("KLabel@BASIC-K")),#Terminal(S("(")),#NonTerminal(S("KList@BASIC-K")),#Terminal(S(")")),productionID(KString@KSTRING("49752459")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),klabel(AttributeValue("#KApply")),hook(AttributeValue("org.kframework.kore.KApply")),#(Location(Int@INT-SYNTAX("37"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("37"),Int@INT-SYNTAX("108")),classType(KString@KSTRING("org.kframework.attributes.Location"))),klabel(KString@KSTRING("#KApply"))] + axiom B("true") [#ModuleComment(S(" something that doesn't collide with meta-variables")),#(Location(Int@INT-SYNTAX("42"),Int@INT-SYNTAX("24"),Int@INT-SYNTAX("42"),Int@INT-SYNTAX("77")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KList@BASIC-K ::= #KList(KList@BASIC-K,KList@BASIC-K) [#NonTerminal(S("KList@BASIC-K")),#Terminal(S(",")),#NonTerminal(S("KList@BASIC-K")),klabel(KString@KSTRING("#KList")),assoc(AttributeValue("")),unit(AttributeValue("#EmptyKList")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),hook(AttributeValue("org.kframework.kore.KList")),left(AttributeValue("")),productionID(KString@KSTRING("1912962767")),#(Location(Int@INT-SYNTAX("47"),Int@INT-SYNTAX("20"),Int@INT-SYNTAX("47"),Int@INT-SYNTAX("126")),classType(KString@KSTRING("org.kframework.attributes.Location"))),prefer(AttributeValue("")),klabel(AttributeValue("#KList"))] + axiom B("true") [#ModuleComment(S("TODO(dwightguth): there is some kind of weird issue with this production which is causing AddEmptyLists to behave incorrectly.")),#(Location(Int@INT-SYNTAX("48"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("48"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] + syntax KLabel@BASIC-K ::= ``() [#RegexTerminal(S("[a-zA-Z0-9]"),S("[#a-z][a-zA-Z0-9@\\-]*"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),productionID(KString@KSTRING("1997859171")),autoReject(AttributeValue("")),klabel(KString@KSTRING("")),hook(AttributeValue("org.kframework.kore.KLabel")),#(Location(Int@INT-SYNTAX("41"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("41"),Int@INT-SYNTAX("129")),classType(KString@KSTRING("org.kframework.attributes.Location")))] + syntax KLabel@BASIC-K ::= ``() [#RegexTerminal(S("#"),S("`(\\\\`|\\\\\\\\|[^`\\\\\n\r])+`"),S("#")),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source"))),token(AttributeValue("")),#(Location(Int@INT-SYNTAX("40"),Int@INT-SYNTAX("21"),Int@INT-SYNTAX("40"),Int@INT-SYNTAX("97")),classType(KString@KSTRING("org.kframework.attributes.Location"))),productionID(KString@KSTRING("501107890")),klabel(KString@KSTRING("")),hook(AttributeValue("org.kframework.kore.KLabel"))] +endmodule [#(Location(Int@INT-SYNTAX("32"),Int@INT-SYNTAX("1"),Int@INT-SYNTAX("51"),Int@INT-SYNTAX("9")),classType(KString@KSTRING("org.kframework.attributes.Location"))),#(Source(KString@KSTRING("/Users/daejunpark/work/kore/k-mini-kore/k-distribution/target/release/k/lib/java/../../include/builtin/kast.k")),classType(KString@KSTRING("org.kframework.attributes.Source")))] diff --git a/src/test/scala/org/kframework/kale/EquivTest.scala b/src/test/scala/org/kframework/kale/EquivTest.scala new file mode 100644 index 0000000..b0eec55 --- /dev/null +++ b/src/test/scala/org/kframework/kale/EquivTest.scala @@ -0,0 +1,26 @@ +package org.kframework.kale + +import cats.Eq +import org.kframework.kale.equiv.CanBeEquivalent +import org.kframework.kale.standard.StandardEnvironment +import org.kframework.kale.tests.TestSetup +import org.scalatest.FreeSpec + +class EquivTest extends TestSetup[StandardEnvironment]() { + + import env._ + implicit def canEq = new CanBeEquivalent { + override def apply(v1: Term, v2: Term) = false + } + + import equiv._ + + val eqv = implicitly[Eq[Term]].eqv _ + + "string eqv" in { + assert(eqv("10", "10")) + } + "string !eqv" in { + assert(!eqv("10", "11")) + } +} diff --git a/src/test/scala/org/kframework/kale/IMPCommonSignature.scala b/src/test/scala/org/kframework/kale/IMPCommonSignature.scala index 024de1f..db0dd09 100644 --- a/src/test/scala/org/kframework/kale/IMPCommonSignature.scala +++ b/src/test/scala/org/kframework/kale/IMPCommonSignature.scala @@ -1,9 +1,9 @@ package org.kframework.kale -import org.kframework.kale.builtin.{HasINT, HasINTdiv, MapLabel} +import org.kframework.kale.builtin.MapLabel import org.kframework.kale.standard._ -class IMPCommonSignature(implicit val env: Environment with HasINT with HasINTdiv) { +class IMPCommonSignature(implicit val env: Environment with IntMixin with FreeMixin) { import env._ def lhs(t: Term): Term = t match { @@ -18,32 +18,32 @@ class IMPCommonSignature(implicit val env: Environment with HasINT with HasINTdi case o => o } - val div = SimpleFreeLabel2("_/_") - val plus = SimpleFreeLabel2("_+_") - val leq = SimpleFreeLabel2("_<=_") - val not = SimpleFreeLabel1("!_") - val and = SimpleFreeLabel2("_&&_") - val emptyBlock = SimpleFreeLabel0("{}") - val block = SimpleFreeLabel1("{_}") - val assign = SimpleFreeLabel2("_:=_") - val ifthenelse = SimpleFreeLabel3("if_then_else_") - val whiledo = SimpleFreeLabel2("while(_)_") - val seq = SimpleFreeLabel2("__") - val program = SimpleFreeLabel2("_;_") + val div = FreeLabel2("_/_") + val plus = FreeLabel2("_+_") + val leq = FreeLabel2("_<=_") + val not = FreeLabel1("!_") + val and = FreeLabel2("_&&_") + val emptyBlock = FreeLabel0("{}") + val block = FreeLabel1("{_}") + val assign = FreeLabel2("_:=_") + val ifthenelse = FreeLabel3("if_then_else_") + val whiledo = FreeLabel2("while(_)_") + val seq = FreeLabel2("__") + val program = FreeLabel2("_;_") - val T = SimpleFreeLabel2("") - val k = SimpleFreeLabel1("") - val state = SimpleFreeLabel1("") + val T = FreeLabel2("") + val k = FreeLabel1("") + val state = FreeLabel1("") - val varBinding = SimpleFreeLabel2("_->_") + val varBinding = FreeLabel2("_->_") - val emptyIntList = SimpleFreeLabel0(".List{Int}") + val emptyIntList = FreeLabel0(".List{Int}") - val emptyStates = SimpleFreeLabel0("emptyStates") + val emptyStates = FreeLabel0("emptyStates") val statesMap = MapLabel("_StatesMap_", { case varBinding(variable, _) => variable }, emptyStates()) - val emptyk = SimpleFreeLabel0(".K") + val emptyk = FreeLabel0(".K") } diff --git a/src/test/scala/org/kframework/kale/ImpSpec.scala b/src/test/scala/org/kframework/kale/ImpSpec.scala index e1f2222..7109656 100644 --- a/src/test/scala/org/kframework/kale/ImpSpec.scala +++ b/src/test/scala/org/kframework/kale/ImpSpec.scala @@ -1,7 +1,7 @@ package org.kframework.kale import org.kframework.kale.standard._ -import org.kframework.kale.util.Implicits +import org.kframework.kale.util.dsl import org.scalatest.FreeSpec /* @@ -77,26 +77,25 @@ endmodule */ - object IMP { implicit val env = StandardEnvironment() val signature = new IMPCommonSignature() - import signature._ + import signature._ import env._ - import builtin._ - val ints = new standard.AssocWithIdListLabel("_,_", emptyIntList()) - val kseq = new standard.AssocWithIdListLabel("_~>_", emptyk()) + val ints = AssocWithIdLabel("_,_", emptyIntList()) + val kseq = AssocWithIdLabel("_~>_", emptyk()) case class isSort(label: LeafLabel[_])(implicit val env: Environment) extends { val name: String = "is" + label.name + override val isPredicate: Option[Boolean] = Some(true) } with FunctionLabel1 { def f(_1: Term): Option[Term] = Some(Truth(_1.label == label)) } - val isInt = isSort(INT) + val isInt = isSort(INT.Int) // // AExp // rule X:Id => I ... ... X |-> I ... @@ -130,20 +129,16 @@ object IMP { val SO = Variable("SO") val R = Variable("R") - val implicits = new Implicits() - import implicits._ + val implicits = new dsl() - val rules = Set( + val rules: Set[Term] = Set( T(k(kseq(Rewrite(X, I), R)), state(statesMap(varBinding(X, I), SO))), - T(k(kseq(Rewrite(div(And(I1, isInt(I1)), And(I2, isInt(I2))), intDiv(I1, I2)), R)), S) + T(k(kseq(Rewrite(div(And(I1, isInt(I1)), And(I2, isInt(I2))), INT.div(I1, I2)), R)), S) ) map (t => Rewrite(lhs(t), rhs(t))) - ID("junk") - env.seal() - val matcher = SingleSortedMatcher() - val rewrite = Rewriter(SubstitutionWithContext(_), matcher)(rules) + val rewrite = Rewriter(env)(rules) } //object IMP { @@ -182,16 +177,14 @@ object IMP { //} class ImpSpec extends FreeSpec { - "IMP" - { + "IMP" ignore { - import IMP._ import IMP.env._ import IMP.signature._ - import implicits._ - val term = T(k(ID("foo")), state(varBinding(ID("foo"), 5))) + val term = T(k('foo), state(varBinding('foo, 5))) - println(rewrite.searchStep(term)) + println(IMP.rewrite.searchStep(term)) // println(TCell(kCell(KSEQ.unit), stateCell(emptyState))) } diff --git a/src/test/scala/org/kframework/kale/KaleSpec.scala b/src/test/scala/org/kframework/kale/KaleSpec.scala index dbcf5a9..edc69f5 100644 --- a/src/test/scala/org/kframework/kale/KaleSpec.scala +++ b/src/test/scala/org/kframework/kale/KaleSpec.scala @@ -1,7 +1,7 @@ package org.kframework.kale import org.kframework.kale.standard.StandardEnvironment -import org.kframework.kale.util.Implicits +import org.kframework.kale.util.dsl import org.scalatest.FreeSpec class KaleSpec extends FreeSpec { @@ -10,9 +10,7 @@ class KaleSpec extends FreeSpec { import env._ - val impl = new Implicits() - - import impl._ + val impl = new dsl() val X = Variable("X") @@ -27,15 +25,15 @@ class KaleSpec extends FreeSpec { "INT" - { - val x: DomainValue[Int] = 2 - val y: DomainValue[Int] = 3 + val x: DomainValue[Int] = INT.Int(2) + val y: DomainValue[Int] = INT.Int(3) "Int" in { - assert(x == INT(2)) + assert(x == INT.Int(2)) assert(x != y) assert(x.data == 2) - assert(x.label == INT) + assert(x.label == INT.Int) } // "+" in { // assert(x + y == INT(5)) diff --git a/src/test/scala/org/kframework/kale/ParsingDisambiguationTest.scala b/src/test/scala/org/kframework/kale/ParsingDisambiguationTest.scala index e6d6366..6549c6a 100644 --- a/src/test/scala/org/kframework/kale/ParsingDisambiguationTest.scala +++ b/src/test/scala/org/kframework/kale/ParsingDisambiguationTest.scala @@ -1,11 +1,9 @@ package org.kframework.kale -import org.kframework.kale.context.pattern.PatternContextApplicationLabel import org.kframework.kale.standard._ -import org.kframework.kale.util.{Implicits, Util} +import org.kframework.kale.util.dsl import org.scalatest.FreeSpec -import scala.collection._ import scala.language.implicitConversions class ParsingDisambiguationTest extends FreeSpec { @@ -14,36 +12,36 @@ class ParsingDisambiguationTest extends FreeSpec { import env._ - val implicits = new Implicits() + val implicits = new dsl() - val ExpId = SimpleFreeLabel1("ExpId") - val readPointer = SimpleFreeLabel1("readPointer") - val mult = SimpleFreeLabel2("mult") - val plus = SimpleFreeLabel2("plus") + val ExpId = FreeLabel1("ExpId") + val readPointer = FreeLabel1("readPointer") + val mult = FreeLabel2("mult") + val plus = FreeLabel2("plus") - val emptyExpList = SimpleFreeLabel0("emptyExpList") - val ExpList = SimpleFreeLabel2("ExpList") + val emptyExpList = FreeLabel0("emptyExpList") + val ExpList = FreeLabel2("ExpList") - val ExpStmt = SimpleFreeLabel1("_;") - val block = SimpleFreeLabel1("block") - val typedef = SimpleFreeLabel1("typedef") + val ExpStmt = FreeLabel1("_;") + val block = FreeLabel1("block") + val typedef = FreeLabel1("typedef") - val VarDecl = SimpleFreeLabel2("VarDecl") + val VarDecl = FreeLabel2("VarDecl") - val TypeId = SimpleFreeLabel1("TypeId") + val TypeId = FreeLabel1("TypeId") - val Pointer = SimpleFreeLabel1("Pointer") + val Pointer = FreeLabel1("Pointer") - val emptyTypeList = SimpleFreeLabel0("emptyTypeList") - val TypeList = SimpleFreeLabel2("TypeList") + val emptyTypeList = FreeLabel0("emptyTypeList") + val TypeList = FreeLabel2("TypeList") - val emptyDeclList = SimpleFreeLabel0("emptyDeclList") - val DeclList = SimpleFreeLabel2("DeclList") + val emptyDeclList = FreeLabel0("emptyDeclList") + val DeclList = FreeLabel2("DeclList") - val emptyStmtList = SimpleFreeLabel0("emptyStmtList") - val StmtList = SimpleFreeLabel2("StmtList") + val emptyStmtList = FreeLabel0("emptyStmtList") + val StmtList = FreeLabel2("StmtList") - val amb = SimpleFreeLabel2("amb") + val amb = FreeLabel2("amb") // val ANYWHERE_NOT_BLOCK = PatternContextApplicationLabel("ANYWHERE_NOT_BLOCK") @@ -75,35 +73,33 @@ class ParsingDisambiguationTest extends FreeSpec { env.seal() - implicit val unifier = SingleSortedMatcher() - val substitutionApplier = SubstitutionWithContext(_) val theAmbiguity: Term = amb( VarDecl( - TypeList(TypeId(ID("a")), emptyTypeList()), + TypeList(TypeId('a), emptyTypeList()), DeclList( - Pointer(ID("b")), - DeclList(Pointer(ID("c")), emptyDeclList()))), + Pointer('b), + DeclList(Pointer('c), emptyDeclList()))), ExpStmt( ExpList( - mult(ExpId(ID("a")), ExpId(ID("b"))), + mult(ExpId('a), ExpId('b)), ExpList( - readPointer(ExpId(ID("c"))), + readPointer(ExpId('c)), emptyExpList()))) ) def asMult(amb: Term) = StmtList( - block(StmtList(typedef(ID("a")), emptyStmtList())), + block(StmtList(typedef('a), emptyStmtList())), ExpList( - ID("traversed"), + 'traversed, amb) ) def asDecl(amb: Term) = StmtList( - typedef(ID("a")), + typedef('a), ExpList( - ID("traversed"), + 'traversed, amb ) ) @@ -117,84 +113,6 @@ class ParsingDisambiguationTest extends FreeSpec { val Mult = Variable("Mult") val Decl = Variable("Decl") - "match part" ignore { - val pattern = AnywhereContext( - Variable("ANYWHERE0"), - StmtList( - BindMatch(DeclOrNot, - IfThenElse(TYPEDEF_CONTEXT( - CX, - typedef(A) - ), Equality(IsDecl, Top), Equality(IsDecl, Bottom)) - ), - Or( - And(Not(IsDecl), - BindMatch(Mult, ExpList( - mult(A, B), - readPointer(C) - )) - ), - And(IsDecl, - BindMatch(Decl, VarDecl( - A, - DeclList( - Pointer(B), - Pointer(C)) - )) - ) - ) - ) - ) - - // as decl - assert(unifier(pattern, asDecl(theAmbiguity)) - === And(List(Equality(A, ID("a")), Equality(B, ID("b")), Equality(C, ID("c")), - Equality(Variable("ANYWHERE0"), Variable("ANYWHERE0_1")), Equality(IsDecl, Top), Equality(CX, Hole)))) - - // as mult - assert(unifier(pattern, asMult(theAmbiguity)) - === And(List(Equality(A, ID("a")), Equality(B, ID("b")), Equality(C, ID("c")), - Equality(Variable("ANYWHERE0"), Variable("ANYWHERE0_1")), Equality(IsDecl, Bottom)))) - - } - - var anywhereCounter = 0 - - def ANYWHERE(p: Term) = { - anywhereCounter += 1 - AnywhereContext( - Variable("ANYWHERE" + anywhereCounter), p) - } - - "rewrite" ignore { - - val disambRule = ANYWHERE( - StmtList( - Rewrite( - BindMatch(DeclOrNot, - IfThenElse(TYPEDEF_CONTEXT(CX, typedef(A)), Equality(IsDecl, Top), Equality(IsDecl, Bottom))), - DeclOrNot), - Or( - And(Not(IsDecl), - ANYWHERE( - Rewrite( - BindMatch(Mult, MULT(Variable("CxMult"), mult(A, _V))), - Mult))), - And(IsDecl, - ANYWHERE( - Rewrite( - BindMatch(Decl, VarDecl(A, _V)), - Decl)) - )))) - - val rewriteOnTop = Util.moveRewriteSymbolToTop(disambRule)(env) - - val rewriter = Rewriter(substitutionApplier, unifier)(Set(rewriteOnTop)) - - println(rewriter.searchStep(asMult(theAmbiguity))) - println(rewriter.searchStep(asDecl(theAmbiguity))) - } - "with two rules and amb" in { val keepVarDecl = ANYWHERE( @@ -209,12 +127,12 @@ class ParsingDisambiguationTest extends FreeSpec { Rewrite(amb(ANYWHERE(TypeId(A)), B), B) ) - val rewriterVarDecl = Rewriter(substitutionApplier, unifier)(Set(Util.moveRewriteSymbolToTop(keepVarDecl)(env))) + val rewriterVarDecl = Rewriter(env)(Set(moveRewriteSymbolToTop(keepVarDecl)(env))) println(rewriterVarDecl.searchStep(asMult(theAmbiguity))) println(rewriterVarDecl.searchStep(asDecl(theAmbiguity))) - val rewriter = Rewriter(substitutionApplier, unifier)(Set(Util.moveRewriteSymbolToTop(keepMult)(env))) + val rewriter = Rewriter(env)(Set(moveRewriteSymbolToTop(keepMult)(env))) println(rewriter.searchStep(asMult(theAmbiguity))) println(rewriter.searchStep(asDecl(theAmbiguity))) diff --git a/src/test/scala/org/kframework/kale/Play.sc b/src/test/scala/org/kframework/kale/Play.sc new file mode 100644 index 0000000..4019bc7 --- /dev/null +++ b/src/test/scala/org/kframework/kale/Play.sc @@ -0,0 +1,6 @@ + + + +List(1, 2, 3) take 2 + +def x[T]: (List[T]) => List[T] = (_: List[T]) take 2 \ No newline at end of file diff --git a/src/test/scala/org/kframework/kale/Play.scala b/src/test/scala/org/kframework/kale/Play.scala deleted file mode 100644 index a9fbb3d..0000000 --- a/src/test/scala/org/kframework/kale/Play.scala +++ /dev/null @@ -1,5 +0,0 @@ -package org.kframework.kale - -import org.kframework.kale._ -import org.kframework.kale.standard._ - diff --git a/src/test/scala/org/kframework/kale/Playground.sc b/src/test/scala/org/kframework/kale/Playground.sc index c70dd04..2076fdf 100644 --- a/src/test/scala/org/kframework/kale/Playground.sc +++ b/src/test/scala/org/kframework/kale/Playground.sc @@ -1,14 +1,12 @@ import org.kframework.kale._ -import org.kframework.kale.util.Implicits -import standard._ +import org.kframework.kale.standard._ +import org.kframework.kale.util.dsl implicit val env = new StandardEnvironment import env._ -val impl = new Implicits() - -import impl._ +val impl = new dsl() val block = SimpleFreeLabel1("block") diff --git a/src/test/scala/org/kframework/kale/PlayingWithCatsSpec.scala b/src/test/scala/org/kframework/kale/PlayingWithCatsSpec.scala new file mode 100644 index 0000000..27e948a --- /dev/null +++ b/src/test/scala/org/kframework/kale/PlayingWithCatsSpec.scala @@ -0,0 +1,63 @@ +package org.kframework.kale + +import cats.Eq +import highcats._ +import org.kframework.kale.standard.StandardEnvironment +import org.kframework.kale.util.LabelNamed +import org.scalatest.FunSuite +import org.typelevel.discipline.scalatest.Discipline + +class PlayingWithCatsSpec extends FunSuite with Discipline { + implicit val env = StandardEnvironment() + + import env._ + + val x = Variable("x") + val y = Variable("y") + + import equiv._ + + implicit val canEquiv = new CanBeEquivalent { + override def apply(v1: Term, v2: Term) = false + } + + test("play") { + assert(implicitly[Eq[Term]].eqv(x, x)) + assert(implicitly[Eq[Term]].neqv(x, y)) + } + + + test("up-down scala objects") { + assert(implicitly[UpDown[Int]].up(3) === INT.Int(3)) + + assert(implicitly[UpDown[List[Int]]].up(List(1, 2, 3)) == scalaList(List(1, 2, 3))) + + assert(implicitly[UpDown[List[Int]]].down(scalaList(List(1, 2, 3))) == Some(List(1, 2, 3))) + } + + + test("free lifting") { + + case class Foo(a: Int) + case class Bar(a: Int, b: String) + case class Buz(a: Int, b: Foo, c: String) + + implicit val freeFoo = free1(Foo) + implicit val freeBar = free2(Bar) + implicit val freeBuz = free3(Buz) + + val foo = Foo(5) + + val fooTerm: Term = Foo(5) + + val fooBack = fooTerm.down[Foo] + + val bar = Bar(7, "bar") + val buz = Buz(9, foo, "buz") + + assert((foo: Term).down[Foo] === Some(foo)) + assert((bar: Term).down[Bar] === Some(bar)) + assert((buz: Term).down[Buz] === Some(buz)) + + } +} diff --git a/src/test/scala/org/kframework/kale/TimerSpec.scala b/src/test/scala/org/kframework/kale/TimerSpec.scala new file mode 100644 index 0000000..201a0d6 --- /dev/null +++ b/src/test/scala/org/kframework/kale/TimerSpec.scala @@ -0,0 +1,98 @@ +package org.kframework.kale + +import org.kframework.kale.util.timer +import org.scalatest.{BeforeAndAfter, BeforeAndAfterAll, FreeSpec} + +import concurrent.duration._ +import scala.concurrent.TimeoutException + +class TimerSpec extends FreeSpec with BeforeAndAfter with BeforeAndAfterAll { + + before(timer.fullReset()) + + override def afterAll { + timer.fullReset() + } + + "timer" in { + val t = timer("foo") + + def time(x: Int): Unit = { + t.time({ + Thread.sleep(100) + if (x > 0) + time(x - 1) + }, None) + } + time(3) + val totalTime = t.totalTime.toMillis.millis + assert(totalTime > 400.millis && totalTime < 490.millis) + println(timer.fullReport()) + } + + "exception in timer" in { + val t = timer("foo") + + def time(x: Int): Unit = { + t.time({ + Thread.sleep(100) + if (x > 0) + time(x - 1) + else + throw new AssertionError("foo") + }, None) + } + try { + time(3) + } catch { + case e: AssertionError => + assert(t.totalTime > 400.millis && t.totalTime < 450.millis) + } + } + + "timeout" ignore { + val t = timer("foo") + + def time(x: Int): Unit = { + t.time({ + Thread.sleep(100) + if (x > 0) + time(x - 1) + else + throw new AssertionError("foo") + }, Some(200.millis)) + } + try { + time(10) + } catch { + case e: TimeoutException => + assert(t.totalTime > 200.millis && t.totalTime < 250.millis) + } + } + + "test gradual reset" ignore { + val t = timer("foo") + + def time(x: Int): Unit = { + t.time({ + timer("bar").time { + timer("buz").time { + Thread.sleep(100) + } + if (x > 0) + time(x - 1) + else + throw new AssertionError("foo") + } + }, Some(210.millis)) + } + try { + time(10) + } catch { + case e: TimeoutException => + assert(timer("foo").totalTime.toMillis.millis > 200.millis && timer("foo").totalTime.toMillis.millis < 270.millis) + assert(timer("bar").totalTime.toMillis.millis > 200.millis && timer("bar").totalTime.toMillis.millis < 270.millis) + assert(timer("buz").totalTime.toMillis.millis > 200.millis && timer("buz").totalTime.toMillis.millis < 270.millis) + } + } +} diff --git a/src/test/scala/org/kframework/kale/ToConstructorSpec.scala b/src/test/scala/org/kframework/kale/ToConstructorSpec.scala new file mode 100644 index 0000000..1bb9b00 --- /dev/null +++ b/src/test/scala/org/kframework/kale/ToConstructorSpec.scala @@ -0,0 +1,12 @@ +package org.kframework.kale + +import org.kframework.kale.standard.StandardEnvironment +import org.kframework.kale.tests.TestSetup + +class ToConstructorSpec extends TestSetup[StandardEnvironment]() { + import env._ + + "simple node" in { + assert(bar("1").toConstructor == "bar(String(\"\"\"1\"\"\"))") + } +} diff --git a/src/test/scala/org/kframework/kale/km/IMPSpec.scala b/src/test/scala/org/kframework/kale/km/IMPSpec.scala index 41df67f..d43137f 100644 --- a/src/test/scala/org/kframework/kale/km/IMPSpec.scala +++ b/src/test/scala/org/kframework/kale/km/IMPSpec.scala @@ -1,15 +1,25 @@ package org.kframework.kale.km import org.kframework.kale._ -import org.kframework.kale.standard.{SimpleFreeLabel2, SimpleFreeLabel3, Sort} +import org.kframework.kale.standard.{Sort, StandardEnvironment} +import org.kframework.kale.transformer.Binary +import org.kframework.kale.util.dsl import org.scalatest.FreeSpec class IMPSpec extends FreeSpec { - implicit val env = new KMEnvironment() + + implicit val env = new StandardEnvironment with MultisortedMixin { + registerMatcher({ + case (_, `Variable`) => SortedVarRight + }, Priority.high) + } + import env._ - // sort delcarations - import Sort._ + val rich = new dsl() + + import rich._ + object ImpSorts { val Id = Sort("Id") val Ids = Sort("Ids") @@ -26,15 +36,18 @@ class IMPSpec extends FreeSpec { val StateMap = Sort("StateMap") val KSeq = Sort("KSeq") } + import ImpSorts._ // sortify builtin symbols - sorted(ID, Id) - sorted(INT, Int) + sorted(ID.Id, Id) + sorted(INT.Int, Int) // import/sortify common symbols val signature = new IMPCommonSignature() + import signature._ + sorted(div, AExp, AExp, AExp) sorted(plus, AExp, AExp, AExp) sorted(leq, AExp, AExp, BExp) @@ -48,19 +61,31 @@ class IMPSpec extends FreeSpec { sorted(seq, Stmt, Stmt, Stmt) sorted(program, Ids, Stmt, Pgm) sorted(T, Cell, Cell, Cell) - sorted(k, K, Cell) + sorted(k, Sort.K, Cell) sorted(state, StateMap, Cell) sorted(varBinding, Id, Int, StateMap) sorted(emptyIntList, IntList) sorted(emptyStates, StateMap) sorted(statesMap, StateMap, StateMap, StateMap) - sorted(emptyk, K) + sorted(emptyScalaList.label, Sort.K) + sorted(emptyk, Sort.K) + sorted(Tuple0, Sort.K) + sorted(Tuple1, Sort.K, Sort.K) + sorted(Tuple2, Sort.K, Sort.K, Sort.K) + sorted(Tuple3, Sort.K, Sort.K, Sort.K, Sort.K) + sorted(Tuple4, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K) + sorted(Tuple5, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K) + sorted(Tuple6, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K, Sort.K) + sorted(PathLabel, Sort.K, Sort.K) // symbol declarations - val ints = SimpleFreeLabel2("_,_"); sorted(ints, IntList, IntList, IntList) - val kseq = SimpleFreeLabel2("_~>_"); sorted(kseq, K, KSeq, KSeq) + val ints = FreeLabel2("_,_"); + sorted(ints, IntList, IntList, IntList) + val kseq = FreeLabel2("_~>_"); + sorted(kseq, Sort.K, KSeq, KSeq) // TODO: testing purpose only - val ppp = SimpleFreeLabel3("ppp"); sorted(ppp, Id, Id, Id, K) + val ppp = FreeLabel3("ppp"); + sorted(ppp, Id, Id, Id, Sort.K) // variable declarations val X = Variable("X", Id) @@ -78,71 +103,80 @@ class IMPSpec extends FreeSpec { // semantics val rules = Set( T(k(kseq(Rewrite(X, I), R)), state(statesMap(varBinding(X, I), SO))), - T(k(kseq(Rewrite(div(I1, I2), intDiv(I1, I2)), R)), S) + T(k(kseq(Rewrite(div(I1, I2), INT.div(I1, I2)), R)), S) ) map (t => Rewrite(lhs(t), rhs(t))) env.seal() - // TODO(Daejun): move to unify test - val unify = new MultiSortedUnifier(env) - "first test" in { - assert(unify(X, ID("foo")) === Equality(X, ID("foo"))) - assert(unify(X, Y) === Equality(X, Y)) - assert(unify(X, INT(2)) === Bottom) + "first test" - { - assert(unify(plus(E1,E2), leq(E1,E2)) == Bottom) + "simple" in { + assert((X := 'foo) === Equality(X, 'foo)) + assert((X := Y) === Equality(X, Y)) + assert((X := INT.Int(2)) === Bottom) - assert(unify(plus(E1,E2), plus(E2,E1)) == Equality(E1, E2)) -// assert(unify(plus(E1,E2), plus(E2,E1)) == Equality(E2, E1)) // TODO: is that ok? + assert((plus(E1, E2) := leq(E1, E2)) == Bottom) - val a = ID("a") + assert((plus(E1, E2) := plus(E2, E1)) == Equality(E1, E2)) + // assert(unify(plus(E1,E2), plus(E2,E1)) == Equality(E2, E1)) // TODO: is that ok? + } - assert( - // q(p(x,y), p(y,x)) =?= q(z,z) - unify( - div(plus(E1,E2), plus(E2,E1)), - div(E3, E3) - ) - == - // E3 = _+_(E1, E1) ∧ E2 = E1 - And( - Equality(E3, plus(E1,E2)), - Equality(E2, E1) - ) - ) + val a = 'a - assert( - // p(x,y,a) =?= p(y,x,x) - unify( - ppp(X, Y, a), - ppp(Y, X, X) - ) - == - // X = a ∧ Y = a - And( - Equality(X, a), - Equality(Y, a) + "div 1" in { + + assert( + // q(p(x,y), p(y,x)) =?= q(z,z) + And.onlyPredicate(unify( + div(plus(E1, E2), plus(E2, E1)), + div(E3, E3) + )) + === + // E3 = _+_(E1, E1) ∧ E2 = E1 + And( + Equality(E3, plus(E1, E2)), + Equality(E2, E1) + ) ) - /* + } + + "div 2" in { + + assert( + // p(x,y,a) =?= p(y,x,x) + And.onlyPredicate(unify( + ppp(X, Y, a), + ppp(Y, X, X) + )) + == + // X = a ∧ Y = a + And( + Equality(X, a), + Equality(Y, a) + ) + /* // original: X = Y, Y = a And( Equality(X, Y), Equality(Y, a) ) */ - ) - - // negative test - assert( - // p(x,y) =?= x - unify( - plus(E1, E2), - E1 ) - == - // unification failure - Bottom - ) + } + + "div 3" in { + // negative test + assert( + // p(x,y) =?= x + unify( + plus(E1, E2), + E1 + ) + == + // unification failure + Bottom + ) + } } } diff --git a/src/test/scala/org/kframework/kale/km/RewriteTest.scala b/src/test/scala/org/kframework/kale/km/RewriteTest.scala deleted file mode 100644 index 2f731c6..0000000 --- a/src/test/scala/org/kframework/kale/km/RewriteTest.scala +++ /dev/null @@ -1,109 +0,0 @@ -package org.kframework.kale.km - -import org.kframework.kale.{And, Rewriter, SubstitutionApply, Z3Builtin} -import org.kframework.kale.standard._ -import org.scalatest.FreeSpec - -class RewriteTest extends FreeSpec { - - implicit val env = new KMEnvironment() - import env._ - - // sort delcarations - object Sorts { - val Id = Sort("Id") - val Int = new Sort("Int") with Z3Builtin - val K = Sort("K") - } - import Sorts._ - - // sortify builtin symbols - sorted(ID, Id) - sorted(INT, Int) - - // symbol declarations - val a = SimpleFreeLabel0("a"); sorted(a, K) - val b = SimpleFreeLabel0("b"); sorted(b, K) - val c = SimpleFreeLabel0("c"); sorted(c, K) - val d = SimpleFreeLabel0("d"); sorted(d, K) - - val p = SimpleFreeLabel1("p"); sorted(p, Int, K) - val q = SimpleFreeLabel1("q"); sorted(q, Int, K) - - val f = SimpleFreeLabel1("f"); sorted(f, Int, Int) - - env.seal() - - val unifier = new MultiSortedUnifier(env) - - val rewriter = Rewriter(new SubstitutionApply(_), unifier) - - "simple" in { - - val r1 = Rewrite(a(), b()) - val r2 = Rewrite(b(), c()) - val r3 = Rewrite(a(), d()) - val r4 = Rewrite(a(), c()) - - val t1 = a() - - // rule a => b - // a => [ b ] - assert(rewriter(Set(r1)).searchStep(t1) == b()) - - // rule b => c - // a =*=> [ ] - assert(rewriter(Set(r2)).searchStep(t1) == Bottom) - - // rule a => b - // rule b => c - // a => [ c ] - val rr = rewriter(Set(r1,r2)) - assert(rr.searchStep(rr.searchStep(t1)) == c()) - - } - - "symbolic" in { - - // variable declarations - val X = Variable("X", Int) - val Y = Variable("Y", Int) - val Z = Variable("Z", Int) - - val r1 = Rewrite( - And(Seq(p(X), Equality(intGt(X,INT(0)), BOOLEAN(true)))), // p(x) /\ x > 0 - q(X) - ) - val r2 = Rewrite( - And(Seq(q(X), Equality(intGe(X,INT(0)), BOOLEAN(true)))), // q(x) /\ x >= 0 - c() - ) - val r3 = Rewrite( - And(Seq(q(X), Equality(intLt(X,INT(0)), BOOLEAN(true)))), // q(x) /\ x < 0 - d() - ) - - val t1 = p(X) - - // rule p(x:Int) => q(x) if x > 0 - // p(x) =*=> [ q(x) /\ x > 0 ] - assert( - rewriter(Set(r1)).searchStep(t1) - == - And(Seq(q(X), Equality(intGt(X,INT(0)), BOOLEAN(true)))) - ) - - // rule p(x:Int) => q(x) if x > 0 - // rule q(x:Int) => c if x >= 0 - // rule q(x:Int) => d if x < 0 - // p(x) =*=> [ c /\ x>= 0 /\ x > 0 ] - val rr = rewriter(Set(r1,r2,r3)) - assert( - rr.searchStep(rr.searchStep(t1)) - == - And(Seq(c(), Equality(intGe(X,INT(0)), BOOLEAN(true)), Equality(intGt(X,INT(0)), BOOLEAN(true)))) - ) - - } - -} diff --git a/src/test/scala/org/kframework/kale/pretty/PrettyWrapperTest.scala b/src/test/scala/org/kframework/kale/pretty/PrettyWrapperTest.scala new file mode 100644 index 0000000..126f22d --- /dev/null +++ b/src/test/scala/org/kframework/kale/pretty/PrettyWrapperTest.scala @@ -0,0 +1,99 @@ +package org.kframework.kale.pretty + +import org.kframework.kale.Term +import org.kframework.kale.standard.{NoSortingMixin, StandardEnvironment} +import org.kframework.kale.tests.TestSetup +import org.scalatest.FreeSpec + +object TestEnv extends StandardEnvironment with PrettyWrapperMixin with NoSortingMixin { + def shouldBePretty(term: Term) = true + + override def isValidWrapper(_1: Term): Boolean = true +} + +class PrettyWrapperTest extends TestSetup()(TestEnv) { + private def assertRewrite(rule: Term, input: Term, expected: Term) = { + val actual = rule rewrite input + assert(actual == expected) + } + + import implicits._ + import env._ + + val A = listLabel + + val rw = Rewrite + + val W = PrettyWrapper + + "pretty" - { + val three = PrettyWrapper("a", 3, "b") + "ground" in { + + assert(three.pretty === "a3b") + + assert(((3: Term) := three) === Top) + + assert((X := three) === Equality(X, 3)) + } + + val fooThree = PrettyWrapper("c", foo(three, 6), "d") + + "wrapper left" in { + assert(And(foo(X, 6) =:= fooThree, Equality(X, 3)) === And(Equality(X, 3), fooThree)) + } + + "wrapper right" in { + assert(And(fooThree := foo(X, 6), Equality(X, 3)) === Bottom) + } + + "wrapper wrapper" in { + val fooThreeDifferent = PrettyWrapper("e", foo(three, 6), "f") + assert((fooThree := fooThree) == Top) + assert((fooThree := fooThreeDifferent) == Bottom) + } + } + + "assoc rewrite" in { + assertRewrite(rw(u, v), W("1", u, "2"), W("1", v, "2")) + assertRewrite(A(rw(el, v), a), W("1", a, "2"), W("1", A(v, a), "2")) + assertRewrite(A(a, rw(el, v)), W("1", a, "2"), W("1", A(a, v), "2")) + assertRewrite( + A(rw(el, v), a, b), + W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), + A(v, W("p1", a, "2"), W("3", b, "4s")) + ) + assertRewrite(A(a, rw(el, v), b), W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), A(W("p1", a, "2"), v, W("3", b, "4s"))) + assertRewrite(A(a, b, rw(el, v)), W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), A(W("p1", a, "2"), W("3", b, "4s"), v)) + } + + "assoc rewrite with var boundary" in { + assertRewrite(rw(u, v), W("1", u, "2"), W("1", v, "2")) + assertRewrite(A(rw(el, v), X), W("1", a, "2"), W("1", A(v, a), "2")) + assertRewrite(A(X, rw(el, v)), W("1", a, "2"), W("1", A(a, v), "2")) + assertRewrite(A(rw(el, v), X), W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), A(v, W("p1", a, "2"), W("3", b, "4s"))) + + assertRewrite(A(X, rw(el, v), Y), W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), + Or( + A(v, W("p1", a, "2"), W("3", b, "4s")), + A(W("p1", a, "2"), v, W("3", b, "4s")), + A(W("p1", a, "2"), W("3", b, "4s"), v) + ) + ) + + assertRewrite(A(X, rw(el, v)), W("p", A(W("1", a, "2"), W("3", b, "4")), "s"), A(W("p1", a, "2"), W("3", b, "4s"), v)) + } + + "bu not loosing wrappers" in { + assertRewrite( + STRATEGY.bu(foo(a, Y) ==> foo(c, Y)))( + W("7", foo(W("9", foo(W("1", a, "2"), W("3", b, "4")), "8"), W("5", b, "6")), "6"), + W("7", foo(W("9", foo(c, b), "8"), W("5", b, "6")), "6") + ) + assertRewrite( + STRATEGY.bu(foo(a ==> c, __)))( + W("7", foo(W("9", foo(W("1", a, "2"), W("3", b, "4")), "8"), W("5", b, "6")), "6"), + W("7", foo(W("9", foo(W("1", c, "2"), W("3", b, "4")), "8"), W("5", b, "6")), "6") + ) + } +} diff --git a/src/test/scala/org/kframework/kale/standard/KoreBackendSpec.scala b/src/test/scala/org/kframework/kale/standard/KoreBackendSpec.scala deleted file mode 100644 index 088b323..0000000 --- a/src/test/scala/org/kframework/kale/standard/KoreBackendSpec.scala +++ /dev/null @@ -1,12 +0,0 @@ -package org.kframework.kale.standard - -import org.scalatest.FreeSpec - -class KoreBackendSpec extends FreeSpec { - import org.kframework.kore.implementation.DefaultBuilders._ - "empty definition" in { - val d = Definition(Attributes(Seq()), Seq(Module(ModuleName("A"), Seq(), Attributes(Seq())))) - - new KoreBackend(d, ModuleName("A")) - } -} diff --git a/src/test/scala/org/kframework/kale/strategy/StrategyTest.scala b/src/test/scala/org/kframework/kale/strategy/StrategyTest.scala new file mode 100644 index 0000000..3283173 --- /dev/null +++ b/src/test/scala/org/kframework/kale/strategy/StrategyTest.scala @@ -0,0 +1,86 @@ +package org.kframework.kale.strategy + +import org.kframework.kale.Term +import org.kframework.kale.standard.StandardEnvironment +import org.kframework.kale.tests.TestSetup + +class StrategyTest extends TestSetup[StandardEnvironment]() { + + import env._ + import STRATEGY._ + import implicits._ + + "orElse" - { + "then" in { + assert(orElse(X, b).unify(a) === And(a, Equality(X, a))) + } + "else" in { + assert(orElse(a, Y).unify(b) === And(b, Equality(Y, b))) + } + "mixed" in { + assert(orElse(Rewrite(a, c), Rewrite(b, d)).unify(Or(a, b)) === Or(Next(c), Next(d))) + } + } + + "nextIsNow" in { + assert(anytimeIsNow(And(Next(a), Equality(X, a))) === And(Equality(X, a), a)) + } + + "compose" in { + assert(compose(Rewrite(b, c), Rewrite(a, b)).unify(a) === Next(c)) + } + + "repeat" - { + "simpe" - { + val repeatRule = repeat(Or(Rewrite(a, b), Rewrite(b, c))) + "simple" in { + assert(repeatRule.unify(a) === Next(c)) + } + "disjunction" in { + assert(repeatRule.unify(Or(a, d)) === Or(Next(c), Next(d))) + } + } + "multiple spots" - { + "two spots, no special bounding" in { + val repeatRule = repeat(Y % Rewrite(a, b)) + assert(repeatRule.unify(foo(a, a)) == Next(foo(b, b))) + } + } + } + + "fixpoint" - { + val fp = fixpoint(Or(Rewrite(a, b), Rewrite(b, b))) + "simple" in { + assert(fp.unify(a) === Next(b)) + assert(fp.unify(b) === Next(b)) + assert(fp.unify(c) === Bottom) + } + "disjunction" in { + assert(fp.unify(Or(a, d)) === Next(b)) + } + } + + "bu" - { + "simple" in { + assertRewrite( + bu(a ==> c))( + foo(a, b), + foo(c, b) + ) + } + + "show that it is bottom-up" in { + assertRewrite( + bu(foo(a, X) ==> a))( + foo(foo(a, b), b), + a + ) + } + + "assoc" in { + assertRewrite(STRATEGY.bu(__ ~~ ((1: Term) ==> 2) ~~ __))(el ~~ 1 ~~ 2 ~~ 3, el ~~ 2 ~~ 2 ~~ 3) + assertRewrite(STRATEGY.bu(__ ~~ ((1: Term) ==> 2)))(el ~~ 1 ~~ 2 ~~ 3, el ~~ 2 ~~ 2 ~~ 3) + assertRewrite(STRATEGY.bu((1: Term) ==> 2))(el ~~ 1 ~~ 2 ~~ 3, el ~~ 2 ~~ 2 ~~ 3) + } + } +} diff --git a/src/test/scala/org/kframework/kale/tests/MatchSpec.scala b/src/test/scala/org/kframework/kale/tests/MatchSpec.scala index cff16e2..7c55272 100644 --- a/src/test/scala/org/kframework/kale/tests/MatchSpec.scala +++ b/src/test/scala/org/kframework/kale/tests/MatchSpec.scala @@ -1,15 +1,20 @@ package org.kframework.kale.tests import org.kframework.kale._ +import org.kframework.kale.standard.StandardEnvironment import org.scalatest.FreeSpec -import collection._ -class MatchSpec extends FreeSpec with TestSetup { +class MatchSpec extends TestSetup[StandardEnvironment]() { import env._ import implicits._ + "very simple" in { + assert(unify(X, a) === And(a, Equality(X, a))) + } + "simple" in { + assert(unify(a, a) === a) assert(unifier(X, 5) === Equality(X, 5)) assert(unifier(X + Y, (5: Term) + 7) === And.substitution(Map(X -> (5: Term), Y -> (7: Term)))) assert(unifier(X + X, (5: Term) + 7) === Bottom) @@ -18,7 +23,32 @@ class MatchSpec extends FreeSpec with TestSetup { // assert((2: Term).unify(2: Term) == Top) } + "next" in { + assert(unify(a, Next(a)) === And(a, Next(a))) + assert(unify(Next(a), Next(a)) === Next(a)) + assert(unify(a, And(b, Next(a))) === Bottom) + } + + "and next" in { + assert(unify(a, And(a, Next(a))) === And(a, Next(a))) + } + + "Regex" in { + // TODO: change regex implementation to use a match function instead of direct unification + // assert((STRING.Regex("a.*c".r) =:= STRING.String("abbbc")) === STRING.String("abbbc")) + } + + "conjunction with nested disjunction" in { + println(unify(And(A, Equality(A, Or(B, C)), Equality(B, b), Equality(C, c)), b)) + } + + + "Top matches anything" in { + assert((Top =:= a) === a) + } + "assoc" in { + assert(unifier(el ~~ 5 ~~ X, el ~~ 5) === Equality(X, el)) assert(unifier(X ~~ 5, el ~~ 3 ~~ 5) === Equality(X, 3)) assert(unifier(el ~~ 3 ~~ 4 ~~ X ~~ 7, el ~~ 3 ~~ 4 ~~ 5 ~~ 6 ~~ 7) === Equality(X, el ~~ 5 ~~ 6)) assert(unifier(el ~~ 3 ~~ X ~~ 5 ~~ Y ~~ 7, el ~~ 3 ~~ 4 ~~ 5 ~~ 6 ~~ 7) === And.substitution(Map(X -> (4: Term), Y -> (6: Term)))) @@ -32,42 +62,64 @@ class MatchSpec extends FreeSpec with TestSetup { )) } + "rewrite and something" in { + unify(And(X, Equality(X, bar(Y) ==> b), Equality(X, bar(Z))), bar(c)) + } + "contexts" - { "zero-level" in { - assert((foo(a, AnywhereContext(X, b)) := foo(a, b)) === Equality(X, X_1)) + assert((foo(a, Context(X, b)) := foo(a, b)) === Equality(X, X_1)) } "a bit more" in { - assert((foo(a, AnywhereContext(X, b)) := foo(a, traversed(b))) === Equality(X, traversed(X_1))) + assert((foo(a, Context(X, b)) =:= foo(a, traversed(b))) === And(Equality(X, traversed(X_1)), foo(a, traversed(b)))) } "with traversal" in { + val term = foo(a, traversed(matched(andMatchingY()))) assert( - (foo(a, AnywhereContext(X, matched(Y))) := foo(a, traversed(matched(andMatchingY())))) + (foo(a, Context(X, matched(Y))) =:= term) === - And.substitution(Map(X -> traversed(X_1), Y -> andMatchingY()))) + And(And.substitution(Map(X -> traversed(X_1), Y -> andMatchingY())), term)) } "example on the board" in { + val term = foo(3, buz(bar(1), bar(bar(2)))) assert( - (foo(3, AnywhereContext(X, bar(Y))) := foo(3, buz(bar(1), bar(bar(2))))) + (foo(3, Context(X, bar(Y))) =:= term) === Or( - And.substitution(Map(X -> buz(X_1, bar(bar(2))), Y -> (1: Term))), - And.substitution(Map(X -> buz(bar(1), X_1), Y -> bar(2))), - And.substitution(Map(X -> buz(bar(1), bar(X_1)), Y -> (2: Term))) + And(And.substitution(Map(X -> buz(X_1, bar(bar(2))), Y -> (1: Term))), term), + And(And.substitution(Map(X -> buz(bar(1), X_1), Y -> bar(2))), term), + And(And.substitution(Map(X -> buz(bar(1), bar(X_1)), Y -> (2: Term))), term) ) ) } "assoc inside one element" in { + val term = bar(el ~~ 1 ~~ 2 ~~ bar(2) ~~ bar(bar(3))) assert( - (bar(AnywhereContext(X, bar(Y))) := bar(el ~~ 1 ~~ 2 ~~ bar(2) ~~ bar(bar(3)))) + (bar(Context(X, bar(Y))) =:= term) === Or( - And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ X_1 ~~ bar(bar(3))), Y -> (2: Term))), - And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ bar(2) ~~ X_1), Y -> bar(3))), - And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ bar(2) ~~ bar(X_1)), Y -> (3: Term)))) + And(And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ X_1 ~~ bar(bar(3))), Y -> (2: Term))), term), + And(And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ bar(2) ~~ X_1), Y -> bar(3))), term), + And(And.substitution(Map(X -> (el ~~ 1 ~~ 2 ~~ bar(2) ~~ bar(X_1)), Y -> (3: Term))), term)) + ) + } + } + + "contexts with predicate" - { + "traverses as the predicate is true" in { + val term = foo(1, bar(buz(3, bar(2)))) + assert((Context(C, bar(X), Or(__, foo(__, Context.hole))) =:= term) + === And(And.substitution(Map(C -> foo(1, Variable("C☐1")), X -> buz(3, bar(2)))), term)) + } + + "stops traversal when predicate fails" in { + val term = foo(1, bar(buz(3, bar(2)))) + assert((Context(C, bar(X), Or(__, And(STRATEGY.unsat(bar(__)), Context.anywhere))) =:= term) + === And(And.substitution(Map(C -> foo(1, Variable("C☐1")), X -> buz(3, bar(2)))), term) ) } } @@ -77,18 +129,40 @@ class MatchSpec extends FreeSpec with TestSetup { val XX = Variable("XX") val YY = Variable("YY") - "identical simple" in { - assert((AnywhereContext(XX, AnywhereContext(X, el ~~ YY ~~ a)) - := AnywhereContext(XX, AnywhereContext(X, el ~~ YY ~~ a)) + val Y1 = Variable("Y1") + val X1 = Variable("X1") + val Z = Variable("Z") + val Z1 = Variable("Z1") + val XX1 = Variable("XX1") + val YY1 = Variable("YY1") + val ZZ = Variable("ZZ") + val ZZ1 = Variable("ZZ1") + + "1" in { + assert((Context(XX, YY) + := Context(XX1, bar(YY1)) + ) !== Bottom + ) + } + + "2" in { + assert((Context(XX, Context(X, bar(YY))) + := Context(XX1, Context(X1, bar(YY1))) ) !== Bottom ) } - "identical" in { - val Y1 = Variable("Y1") + "3" in { + assert((Context(XX, Context(X, el ~~ YY ~~ a)) + := Context(XX1, Context(X1, el ~~ YY1 ~~ a)) + ) !== Bottom + ) + } - assert(foo(AnywhereContext(XX, AnywhereContext(X, Y)), AnywhereContext(XX, AnywhereContext(X, YY))) - := foo(AnywhereContext(XX, AnywhereContext(X, bar(Y1))), AnywhereContext(XX, AnywhereContext(X, YY))) !== Bottom) + "4" in { + assert((foo(Context(XX, Context(X, Y)), Context(YY, Context(Z, ZZ))) + := foo(Context(XX1, Context(X1, bar(Y1))), Context(YY1, Context(Z1, ZZ1)))) + !== Bottom) } } @@ -98,38 +172,47 @@ class MatchSpec extends FreeSpec with TestSetup { val YY = Variable("YY") "zero level" in { - assert((CAPP(C, X) := 1) - === And.substitution(Map(C -> Hole, X -> 1))) + assert((CAPP(C, X) =:= 1) + === And(And.substitution(Map(C -> Hole, X -> 1)), 1)) } "one level" in { - assert((CAPP(C, bar(X)) := foo(1, bar(2))) - === And.substitution(Map(C -> foo(1, Hole), X -> 2))) + val term = foo(1, bar(2)) + assert((CAPP(C, bar(X)) =:= term) + === And( + And.substitution(Map(C -> foo(1, Hole), X -> 2)), + term)) + } "two levels" in { - assert((CAPP(C, bar(X)) := foo(1, bar(bar(2)))) - === Or(And.substitution(Map(C -> foo(1, Hole), X -> bar(2))), - And.substitution(Map(C -> foo(1, bar(Hole)), X -> 2)))) + val term = foo(1, bar(bar(2))) + assert((CAPP(C, bar(X)) =:= term) + === Or( + And(And.substitution(Map(C -> foo(1, Hole), X -> bar(2))), + term), + And(And.substitution(Map(C -> foo(1, bar(Hole)), X -> 2)), + term))) } "stops traversal when encountering unknown" in { - assert((CAPP(C, bar(X)) := foo(1, bar(buz(3, bar(2))))) - === And.substitution(Map(C -> foo(1, Hole), X -> buz(3, bar(2))))) + val term = foo(1, bar(buz(3, bar(2)))) + assert((CAPP(C, bar(X)) =:= term) + === And(And.substitution(Map(C -> foo(1, Hole), X -> buz(3, bar(2)))), term)) } } "of multiple contexts" - { "pattern context in anywhere context" in { val ACx = Variable("ACx") - val ACx_1 = Variable("ACx_1") - val res = (AnywhereContext(ACx, CAPP(C, bar(X))) := buz(1, foo(2, bar(3)))) + val ACx_1 = Variable("ACx☐1") + val term = buz(1, foo(2, bar(3))) - assert((AnywhereContext(ACx, CAPP(C, bar(X))) := buz(1, foo(2, bar(3)))) + assert((Context(ACx, CAPP(C, bar(X))) =:= term) === Or( - And.substitution(Map(C -> Hole, X -> 3, ACx -> buz(1, foo(2, ACx_1)))), - And.substitution(Map(C -> foo(2, Hole), X -> 3, ACx -> buz(1, ACx_1))) - )) + And(And.substitution(Map(C -> Hole, X -> 3, ACx -> buz(1, foo(2, ACx_1)))), term), + And(And.substitution(Map(C -> foo(2, Hole), X -> 3, ACx -> buz(1, ACx_1))), term)) + ) } } @@ -163,22 +246,6 @@ class MatchSpec extends FreeSpec with TestSetup { === And(Equality(X, a), Equality(Y, b))) } - "and" in { - assert((X := And(a, Equality(X, a))) === Equality(X, a)) - assert((X := And(a, Equality(X, b))) === Bottom) - - val x = And.substitutionAndTerms.apply(Equality.binding(X, a), Seq(b)) - val y = And.substitutionAndTerms.apply(Equality.binding(Y, c), Seq(d)) - val xy = And.apply(x, y) - assert(xy == And(Equality(X, a), Equality(Y, c), b, d)) - assert(xy == And(Equality(X, a), Equality(Y, c), d, b)) - - assert(And.apply(Or(a,b), Or(c,d)) == Or(And(a,c), And(a,d), And(b,c), And(b,d))) - - // testing equivalence of DNFAndLabel.apply(Term,Term) vs DNFAndLabel.apply(Iterable[Term]) - assert(And.apply(And(a,b), c) == And.apply(Seq(And(a,b), c))) - } - "context and and" in { assert((And(CAPP(C, bar(X)), Equality(X, 2)) := foo(1, bar(2))) === And.substitution(Map(C -> foo(1, Hole), X -> 2))) @@ -187,6 +254,22 @@ class MatchSpec extends FreeSpec with TestSetup { === Bottom) } + "context matching assoc" - { + // This tests that, when matching an anywhere with assoc, we treat assoc as if it is right associative + + "matching" in { + val pattern = Y % (el ~~ X ~~ "c") + val obj = el ~~ "a" ~~ "b" ~~ "c" + assert(Or.asSet(pattern := obj).size == 3) + } + + "not quite matching" in { + val pattern = Y % (el ~~ X ~~ "c") + val obj = el ~~ "a" ~~ "b" ~~ "c" ~~ d + assert(Or.asSet(pattern := obj).size == 1) + } + } + "mix contexts and logical operators" in { assert((buz(And(CAPP(C, bar(X)), Equality(X, 2)), bar(X)) := buz(foo(1, bar(2)), bar(2))) === And.substitution(Map(C -> foo(1, Hole), X -> 2))) @@ -207,20 +290,19 @@ class MatchSpec extends FreeSpec with TestSetup { === And.substitution(Map(C -> foo(1, Hole), X -> 2, Y -> 3))) } - "not" in { - assert((X := And(a, Not(Equality(X, b)))) === Equality(X, a)) - assert((X := And(a, Not(Equality(X, a)))) === Bottom) - - assert((X := Or(a, Not(Equality(X, a)))) === Or(Equality(X, a), And(X, Not(Equality(X, a))))) - } + "not" - { + "pass" in { + assert((X := And(a, Not(Equality(X, b)))) === Equality(X, a)) + } + "to bottom" in { + assert((X := And(a, Not(Equality(X, a)))) === Bottom) + } - "if then else" in { - assert((IfThenElse(a, Equality(X, a), Equality(X, b)) := a) === Equality(X, a)) - assert((IfThenElse(a, Equality(X, a), Equality(X, b)) := b) === Equality(X, b)) - assert((foo(X, IfThenElse(Equality(X, a), a, b)) := foo(a, a)) === Equality(X, a)) - assert((foo(X, IfThenElse(Equality(X, a), a, b)) := foo(b, b)) === Equality(X, b)) - assert((foo(X, IfThenElse(Equality(X, a), a, b)) := foo(a, b)) === Bottom) - assert((foo(X, IfThenElse(Equality(X, a), a, b)) := foo(b, a)) === Bottom) + "leave condition in place" in { + assert((X =:= Or(a, And(Y, Not(Equality(X, a))))) === + Or(And(Equality(X, a), a), + And(Equality(X, Y), Not(Equality(X, a)), Y))) + } } "bind match" in { @@ -229,4 +311,12 @@ class MatchSpec extends FreeSpec with TestSetup { assert((BindMatch(X, bar(Y)) := Or(bar(1), 2)) === And(Equality(X, bar(1)), Equality(Y, 1))) } + + "ForAll" in { + assert((ForAll(X, X) =:= X) === X) + assert((ForAll(X, X) =:= 3) === (3: Term)) + assert((ForAll(X, bar(X)) =:= 3) === Bottom) + assert((ForAll(X, bar(X)) =:= bar(3)) === bar(3)) + assert((ForAll(X, foo(X, Y)) =:= foo(3, 4)) === And(Equality(Y, 4), foo(3, 4))) + } } diff --git a/src/test/scala/org/kframework/kale/tests/PathTest.scala b/src/test/scala/org/kframework/kale/tests/PathTest.scala index 0a14047..bfc36eb 100644 --- a/src/test/scala/org/kframework/kale/tests/PathTest.scala +++ b/src/test/scala/org/kframework/kale/tests/PathTest.scala @@ -1,25 +1,34 @@ package org.kframework.kale.tests import org.kframework.kale.Term -import org.kframework.kale.util.Path -import org.scalatest.FreeSpec +import org.kframework.kale.standard.StandardEnvironment -class PathTest extends FreeSpec with TestSetup { - import implicits._ +class PathTest extends TestSetup[StandardEnvironment]() { + + import env._ "apply empty path" in { - assert(Path(Seq())(foo(bar(1), 2)) === foo(bar(1), 2)) + assert(Path(List())(foo(bar(1), 2)) === foo(bar(1), 2)) } "apply path one way" in { - assert(Path(Seq(1))(foo(bar(1), 2)) === (2:Term)) + assert(Path(List(1))(foo(bar(1), 2)) === (2: Term)) } "apply path another way" in { - assert(Path(Seq(0, 0))(foo(bar(1), 2)) === (1:Term)) + assert(Path(List(0, 0))(foo(bar(1), 2)) === (1: Term)) } "apply to third element in assoc" in { - assert(Path(Seq(2))(el ~~ 1 ~~ 2 ~~ 3) === (3:Term)) + assert(Path(List(2))(el ~~ 1 ~~ 2 ~~ 3) === (3: Term)) + } + + "explicitate" in { + assert(Path(List(0, 0, 1)).explicitate(foo(bar(el ~~ 1 ~~ 2), 2)) === List(foo, bar, listLabel, INT.Int)) + } + + "updown" in { + val p = Path(List(0, 1, 2)) + assert((p: Term) === PathLabel(scalaList(0: Term, 1: Term, 2: Term))) } } diff --git a/src/test/scala/org/kframework/kale/tests/RewriteTest.scala b/src/test/scala/org/kframework/kale/tests/RewriteTest.scala index 919cfc9..51cc414 100644 --- a/src/test/scala/org/kframework/kale/tests/RewriteTest.scala +++ b/src/test/scala/org/kframework/kale/tests/RewriteTest.scala @@ -1,27 +1,20 @@ package org.kframework.kale.tests import org.kframework.kale._ -import org.kframework.kale.util.Util +import org.kframework.kale.standard.StandardEnvironment +import org.kframework.kale.util.timer import org.scalatest.FreeSpec -import scala.collection._ import scala.language.implicitConversions -class RewriteTest extends FreeSpec with TestSetup { +class RewriteTest extends TestSetup[StandardEnvironment]() { import env._ import implicits._ - def assertRewrite(rule: Rewrite)(obj: Term, expected: Term) { - val unificationRes = unifier(rule._1, obj) - val res = Or.asSet(unificationRes) map (s => substitutionApplier(s.asInstanceOf[Substitution])(rule._2)) - assert(Or(res) === expected) - } + implicit val eeenv = env - def assertRewrite(rule0: Term)(obj: Term, expected: Term) { - val rule = Util.moveRewriteSymbolToTop(rule0)(env) - assertRewrite(rule)(obj, expected) - } + before(timer.fullReset()) "X + 0 => X" in { assertRewrite(Rewrite(X + 0, X))((5: Term) + 0, 5: Term) @@ -31,34 +24,55 @@ class RewriteTest extends FreeSpec with TestSetup { assertRewrite(Rewrite((2: Term) + X + 3, (5: Term) + X))((2: Term) + 4 + 3, (5: Term) + 4) } - val rewriter = Rewriter(substitutionApplier, unifier)(Set( + val rewriter = Or( Rewrite(X + 0, X), Rewrite((0: Term) + X, X), Rewrite(el ~~ 3 ~~ X ~~ Y ~~ 6, el ~~ X ~~ 0 ~~ Y) - )) + ) + + "inner rewrite" - { + "simple" in { + assert((bar(Rewrite(X, b)) =:= bar(a)) === And(Equality(X, a), bar(Next(b)))) + } + "swap" in { + assert((foo(Rewrite(X, Y), Rewrite(Y, X)) =:= foo(a, b)) === And(Equality(X, a), Equality(Y, b), foo(Next(b), Next(a)))) + } + } "step" in { - assert(rewriter.step((1: Term) + 0).toList === List(1: Term)) - assert(rewriter.step(1: Term).toList === List()) + assert((rewriter ==:= ((1: Term) + 0)) === Next(1)) + assert((rewriter ==:= (1: Term)) === Bottom) } "search" in { - assert(rewriter.searchStep((1: Term) + 0) === (1: Term)) - assert(rewriter.searchStep(1: Term) === Bottom) - assert(rewriter.searchStep(el ~~ 3 ~~ 4 ~~ 5 ~~ 6) === + assert((rewriter ==:= ((1: Term) + 0)) === Next(1)) + assert((rewriter ==:= (1: Term)) === Bottom) + } + + // TODO: check this test + "search assoc" in { + assert(And.anytimeIsNow(rewriter ==:= (el ~~ 3 ~~ 4 ~~ 5 ~~ 6)) === Or(List(el ~~ 4 ~~ 0 ~~ 5, el ~~ 0 ~~ 4 ~~ 5, el ~~ 4 ~~ 5 ~~ 0))) } + "nested disjunction" in { + assertRewrite(And(Rewrite(A, A), Equality(A, Or(a, b))))(a, a) + } + + "empty to empty bug" in { + assert(unify(env.STRATEGY.td(foo(A, B) ==> el), X) === X) + } + "contexts" - { "zero-level" in { - assertRewrite(foo(a, AnywhereContext(X, Rewrite(Y, bar(Y)))))( + assertRewrite(foo(a, Context(X, Rewrite(Y, bar(Y)))))( foo(a, b), foo(a, bar(b))) } "a bit more" in { - assertRewrite(foo(a, AnywhereContext(X, Rewrite(Y, bar(Y)))))( + assertRewrite(foo(a, Context(X, Rewrite(Y, bar(Y)))))( foo(a, traversed(b)), Or( foo(a, traversed(bar(b))), @@ -68,19 +82,19 @@ class RewriteTest extends FreeSpec with TestSetup { } "with traversal" in { - assertRewrite(foo(a, AnywhereContext(X, Rewrite(matched(Y), bar(Y)))))( + assertRewrite(foo(a, Context(X, Rewrite(matched(Y), bar(Y)))))( foo(a, traversed(matched(andMatchingY()))), foo(a, traversed(bar(andMatchingY())))) } "with traversal outer rewrite" in { - assertRewrite(foo(a, Rewrite(AnywhereContext(X, matched(Y)), bar(Y))))( + assertRewrite(foo(a, Rewrite(Context(X, matched(Y)), bar(Y))))( foo(a, traversed(matched(andMatchingY()))), foo(a, bar(andMatchingY()))) } "referring to context" in { - assertRewrite(foo(a, Rewrite(AnywhereContext(X, matched(Y)), bar(X))))( + assertRewrite(foo(a, Rewrite(Context(X, matched(Y)), bar(X))))( foo(a, traversed(matched(andMatchingY()))), foo(a, bar(traversed(X_1)))) } @@ -111,4 +125,15 @@ class RewriteTest extends FreeSpec with TestSetup { foo(1, buz(buz(3, bar(2)), buz(3, bar(2))))) } } + + "inline rewrite" - { + "very simple" in { + val rw = Rewrite(1, 2) + assert((rw =:= 1) === Next(2)) + } + } + + "flip" in { + assert(Rewrite(foo(A, B), foo(B, A)).rewrite(foo(a, b)) === foo(b, a)) + } } diff --git a/src/test/scala/org/kframework/kale/tests/SubstitutionTest.scala b/src/test/scala/org/kframework/kale/tests/SubstitutionTest.scala index fc6e9a8..645679d 100644 --- a/src/test/scala/org/kframework/kale/tests/SubstitutionTest.scala +++ b/src/test/scala/org/kframework/kale/tests/SubstitutionTest.scala @@ -1,11 +1,11 @@ package org.kframework.kale.tests import org.kframework.kale._ +import org.kframework.kale.standard.StandardEnvironment import org.scalatest.FreeSpec -class SubstitutionTest extends FreeSpec with TestSetup { +class SubstitutionTest extends TestSetup[StandardEnvironment]() { - import implicits._ import env._ "substitution" in { @@ -23,7 +23,7 @@ class SubstitutionTest extends FreeSpec with TestSetup { val substitution = substitutionApplier(s) assert(substitution( - foo(3, AnywhereContext(X, bar(Y))) + foo(3, Context(X, bar(Y))) ) === foo(3, buz(bar(1), bar(bar(2))))) } } diff --git a/src/test/scala/org/kframework/kale/tests/TestSetup.scala b/src/test/scala/org/kframework/kale/tests/TestSetup.scala index 7cdd33f..22f30b4 100644 --- a/src/test/scala/org/kframework/kale/tests/TestSetup.scala +++ b/src/test/scala/org/kframework/kale/tests/TestSetup.scala @@ -1,43 +1,50 @@ package org.kframework.kale.tests import org.kframework.kale._ -import org.kframework.kale.context.pattern.PatternContextApplicationLabel -import org.kframework.kale.standard.{Rewrite => _, _} -import org.kframework.kale.util.Implicits +import org.kframework.kale.standard.{SimpleRewrite => _, _} +import org.kframework.kale.util.{dsl, timer} import org.scalactic.Prettifier +import org.scalatest.{BeforeAndAfter, FreeSpec} -trait TestSetup { - - implicit val env = StandardEnvironment() +abstract class TestSetup[E <: StandardEnvironment](implicit val env: E = StandardEnvironment()) extends FreeSpec with BeforeAndAfter { import env._ - val implicits = new Implicits() + val implicits = new dsl() val X = Variable("X") val Y = Variable("Y") + val Z = Variable("Z") + + val plus = env.uniqueLabels.getOrElse("+", FreeLabel2("+")).asInstanceOf[Label2] + + implicit class asTerm(x: Term) { + def +(y: Term): Term = plus(x, y) + } - val emptyList = SimpleFreeLabel0("emptyList") + val emptyList = FreeLabel0("emptyList") val el = emptyList() - val listLabel = new standard.AssocWithIdListLabel("listLabel", el) + val listLabel = AssocWithIdLabel("listLabel", el) implicit class WithListConcat(t: Term) { def ~~(o: Term): Term = listLabel(t, o) } - val foo = SimpleFreeLabel2("foo") - val bar = SimpleFreeLabel1("bar") - val buz = SimpleFreeLabel2("buz") - val (a, b, c, d, e) = (STRING("a"), STRING("b"), STRING("c"), STRING("d"), STRING("e")) - val matched = SimpleFreeLabel1("matched") - val traversed = SimpleFreeLabel1("traversed") - val andMatchingY = SimpleFreeLabel0("andMatchingY") + val foo = FreeLabel2("foo") + val bar = FreeLabel1("bar") + val buz = FreeLabel2("buz") + val poc = FreeLabel1("poc") + val List(a, b, c, d, e) = List("a", "b", "c", "d", "e").map(STRING.String) + val List(u, v) = List("u", "v").map(STRING.String) + val matched = FreeLabel1("matched") + val traversed = FreeLabel1("traversed") + val andMatchingY = FreeLabel0("andMatchingY") val a2b = standard.FunctionDefinedByRewritingLabel1("a2b") - val a2bRules = Set(Rewrite(a2b(a), b)) + val a2bRules = Set[Rewrite](Rewrite(a2b(a), b)) val C = Variable("C") val C1 = Variable("C1") @@ -52,18 +59,16 @@ trait TestSetup { env.seal() - implicit val rewriterBuilder: (collection.Set[_ <: Rewrite]) => Rewriter = Rewriter(SubstitutionWithContext(_)(env), SingleSortedMatcher()(env))(_) + a2b.setRules(Or(a2bRules)) - a2b.setRules(a2bRules) - - implicit val unifier = SingleSortedMatcher() + def unifier(t1: Term, t2: Term): Term = env.And.onlyPredicate(matcher(t1, t2)) val substitutionApplier = SubstitutionWithContext(_) - val X_1 = AnywhereContext.hole(X) + val X_1 = Context.hole(X) def toAssert(t: Term): String = t match { - case Variable((name, _)) => name.str + case Variable((name, _)) => name.toString case t: Node => t.toString } @@ -73,4 +78,9 @@ trait TestSetup { case o => Prettifier.default(o) } } + + def assertRewrite(rule: Term)(obj: Term, expected: Term) { + val actual = rule.rewrite(obj) + assert(actual === expected) + } } diff --git a/src/test/scala/org/kframework/kale/util/CodecTest.scala b/src/test/scala/org/kframework/kale/util/CodecTest.scala index b0937f7..dc24cdc 100644 --- a/src/test/scala/org/kframework/kale/util/CodecTest.scala +++ b/src/test/scala/org/kframework/kale/util/CodecTest.scala @@ -1,10 +1,10 @@ package org.kframework.kale.util import io.circe._ -import io.circe.syntax._ import io.circe.parser._ +import io.circe.syntax._ import org.kframework.kale._ -import org.kframework.kale.standard.{SimpleFreeLabel2, StandardEnvironment} +import org.kframework.kale.standard.{StandardEnvironment} import org.scalatest.FreeSpec import scala.language.implicitConversions @@ -13,11 +13,13 @@ class CodecTest extends FreeSpec { implicit val env = StandardEnvironment() - val foo = SimpleFreeLabel2("foo") + import env._ + + val foo = FreeLabel2("foo") import env._ - val pattern = foo(INT(3), STRING("bar")) + val pattern = foo(3, STRING.String("bar")) object TestAtt extends Att[Int] { override def toString = "test" @@ -33,19 +35,19 @@ class CodecTest extends FreeSpec { "encode" in { val actual = pattern.asJson.noSpaces - val expected = "{\"label\":\"foo\",\"att\":{},\"children\":[{\"label\":\"Int\",\"att\":{},\"data\":\"3\"},{\"label\":\"String\",\"att\":{},\"data\":\"bar\"}]}" + val expected = "{\"label\":\"foo\",\"children\":[{\"label\":\"Int@INT-SYNTAX\",\"data\":\"3\"},{\"label\":\"String\",\"data\":\"bar\"}]}" assert(actual == expected) } "decode int" in { - val actual = decode[Term]("{\"label\":\"Int\",\"att\":{},\"data\":\"3\"}") - val expected = Right(INT(3)) + val actual = decode[Term]("{\"label\":\"Int@INT-SYNTAX\",\"att\":{},\"data\":\"3\"}") + val expected = Right(INT.Int(3)) assert(actual === expected) } "decode string" in { val actual = decode[Term]("{\"label\":\"String\",\"att\":{},\"data\":\"bar\"}") - val expected = Right(STRING("bar")) + val expected = Right(STRING.String("bar")) assert(actual === expected) } @@ -65,10 +67,10 @@ class CodecTest extends FreeSpec { } "att encoding" in { - val expectedTerm: Term = INT(3) + val expectedTerm: Term = INT.Int(3) expectedTerm.att(TestAtt) - val expectedJson = "{\"label\":\"Int\",\"att\":{\"test\":0},\"data\":\"3\"}" + val expectedJson = "{\"label\":\"Int@INT-SYNTAX\",\"att\":{\"test\":0},\"data\":\"3\"}" assertEncodings(expectedTerm, expectedJson) } diff --git a/src/test/scala/org/kframework/km/Imp.scala b/src/test/scala/org/kframework/km/Imp.scala deleted file mode 100644 index 6993974..0000000 --- a/src/test/scala/org/kframework/km/Imp.scala +++ /dev/null @@ -1,285 +0,0 @@ -package org.kframework.km - -object Imp { - - import term._ - import builtin._ - import outer._ - - object Constructor1 { - def apply(name: String, _smt: String, signature: Type): Constructor = new Constructor(name, signature) { - override val smt: String = _smt - override def toString: String = if (name.contains(':')) name.substring(0, name.indexOf(':')) else name - } - } - - // signature - - val Id = SortOf("Id") - val ListId = SortOf("ListId") // SortList(Id) // TODO: ??? - val ListK = SortOf("ListK") // TODO: ??? - - val AExp = SortOf("AExp") - val BExp = SortOf("BExp") - val Exp = SortOf("Exp") - val Stmt = SortOf("Stmt") - val Pgm = SortOf("Pgm") - - val IdOf = Constructor1("_:String->Id", "idOf", (Seq(SortString), Id)) - - val AExpInt = Constructor1("_:Int->AExp", "aExpInt", (Seq(SortInt), AExp)) - val AExpId = Constructor1("_:Id->AExp", "aExpId", (Seq(Id), AExp)) - val AExpDiv = Constructor1("_/_:AExp*AExp->AExp", "aExpDiv", (Seq(AExp, AExp), AExp)) - val AExpPlus = Constructor1("_+_:AExp*AExp->AExp", "aExpPlus", (Seq(AExp, AExp), AExp)) - - val BExpBool = Constructor1("_:Bool->BExp", "bExpBool", (Seq(SortBool), BExp)) - val BExpLeq = Constructor1("_<=_:AExp*AExp->BExp", "bExpLeq", (Seq(AExp, AExp), BExp)) - val BExpNot = Constructor1("!_:BExp->BExp", "bExpNot", (Seq(BExp), BExp)) - val BExpAnd = Constructor1("_&&_:BExp*BExp->BExp", "bExpAnd", (Seq(BExp, BExp), BExp)) - - val StmtAssign = Constructor1("_=_;:Id*AExp->Stmt", "stmtAssign", (Seq(Id, AExp), Stmt)) - val StmtIf = Constructor1("if(_){_}else{_}:BExp*Stmt*Stmt->Stmt", "stmtIf", (Seq(BExp, Stmt, Stmt), Stmt)) - val StmtWhile = Constructor1("while(_){_}:BExp*Stmt->Stmt", "stmtWhile", (Seq(BExp, Stmt), Stmt)) - val StmtSeq = Constructor1("__:Stmt*Stmt->Stmt", "stmtSeq", (Seq(Stmt, Stmt), Stmt)) - val StmtSkip = Constructor1("skip;:->Stmt", "stmtSkip", (Seq(), Stmt)) - - val PgmOf = Constructor1("int_;_:List{Id}*Stmt->Pgm", "pgmOf", (Seq(ListId, Stmt), Pgm)) - - val IdsCons = Constructor1("_,_:Id*List{Id}->List{Id}", "idsCons", (Seq(Id, ListId), ListId)) - val IdsNil = Constructor1(".List:->List{Id}", "idsNil", (Seq(), ListId)) - - val KAExp = Constructor1("_:AExp->K", "kAExp", (Seq(AExp), SortK)) - val KBExp = Constructor1("_:BExp->K", "kBExp", (Seq(BExp), SortK)) - val KStmt = Constructor1("_:Stmt->K", "kStmt", (Seq(Stmt), SortK)) - val KPgm = Constructor1("_:Pgm->K", "kPgm", (Seq(Pgm), SortK)) - - // configuration - - val Cell = SortOf("Cell") - val SortMapIdInt = SortMap(Id, SortInt) - - val T = Constructor1(":Cell*Cell->Cell", "tCell", (Seq(Cell, Cell), Cell)) - val k = Constructor1(":List{K}->Cell", "kCell", (Seq(ListK), Cell)) - val state = Constructor1(":Map{Id,Int}->Cell", "stateCell", (Seq(SortMapIdInt), Cell)) - - val kCons = Constructor1("_~>_:K*List{K}->List{K}", "kCons", (Seq(SortK, ListK), ListK)) - val kNil = Constructor1(".K:->List{K}", "kNil", (Seq(), ListK)) - - // rules - - val X = Variable("X", Id) - val Xs = Variable("Xs", ListId) - val M = Variable("M", SortMapIdInt) - val I = Variable("I", SortInt) - val I1 = Variable("I1", SortInt) - val I2 = Variable("I2", SortInt) - val B = Variable("B", SortBool) - val S = Variable("S", Stmt) - val S1 = Variable("S1", Stmt) - val S2 = Variable("S2", Stmt) - val Ks = Variable("Ks", ListK) - val Be = Variable("Be", BExp) - val Be1 = Variable("Be1", BExp) - val Be2 = Variable("Be2", BExp) - val E1 = Variable("E1", AExp) - val E2 = Variable("E2", AExp) - - val tt = BOOL(true) - - val freezerDiv0 = Constructor1("freezer_/_0:AExp->K", "freezerDiv0" , (Seq(AExp), SortK)) - val freezerDiv1 = Constructor1("freezer_/_1:AExp->K", "freezerDiv1" , (Seq(AExp), SortK)) - val freezerPlus0 = Constructor1("freezer_+_0:AExp->K", "freezerPlus0" , (Seq(AExp), SortK)) - val freezerPlus1 = Constructor1("freezer_+_1:AExp->K", "freezerPlus1" , (Seq(AExp), SortK)) - val freezerLeq0 = Constructor1("freezer_<=_0:AExp->K", "freezerLeq0" , (Seq(AExp), SortK)) - val freezerLeq1 = Constructor1("freezer_<=_1:AExp->K", "freezerLeq1" , (Seq(AExp), SortK)) - val freezerNot0 = Constructor1("freezer!_0:->K", "freezerNot0" , (Seq(), SortK)) - val freezerAnd0 = Constructor1("freezer_&&_0:BExp->K", "freezerAnd0" , (Seq(BExp), SortK)) - val freezerAssign1 = Constructor1("freezer_=_;1:Id->K", "freezerAssign1", (Seq(Id), SortK)) - val freezerIf0 = Constructor1("freezerif(_){_}else{_}0:Stmt*Stmt->K", "freezerIf0" , (Seq(Stmt, Stmt), SortK)) - - val constructors1 = Seq(IdOf, AExpInt, AExpId, AExpDiv, AExpPlus, BExpBool, BExpLeq, BExpNot, BExpAnd, StmtAssign, StmtIf, StmtWhile, StmtSeq, StmtSkip, PgmOf, IdsCons, IdsNil, KAExp, KBExp, KStmt, KPgm, kCons, kNil, freezerDiv0, freezerDiv1, freezerPlus0, freezerPlus1, freezerLeq0, freezerLeq1, freezerNot0, freezerAnd0, freezerAssign1, freezerIf0) - val constructors2 = Seq(T, k, state) - val constructors = Seq(constructors1, constructors2) - - object isKResult extends Symbol { - override val name: String = "isKResult" - override val smt: String = "isKResult" - override val smtBuiltin: Boolean = false - override val signature: Type = (Seq(SortK), SortBool) - override val isFunctional: Boolean = true - override def applySeq(children: Seq[Term]): Term = { - assert(children.size == 1) - val default = Application(this, children) - val t = children(0) - t match { - case Application(`KAExp`, Seq(Application(`AExpInt`, Seq(_)))) => BOOL(true) - case Application(`KAExp`, Seq(Variable(_,_))) => default - case Application(`KBExp`, Seq(Application(`BExpBool`, Seq(_)))) => BOOL(true) - case Application(`KBExp`, Seq(Variable(_,_))) => default - case Variable(_,_) => default - case _ => BOOL(false) - } - } - } - - implicit class infixTerm(p: Term) { - def ~>:(q: Term): Term = kCons(q, p) - def /\(q: Term): Term = BOOL.and(p, q) - } - - val rules = Seq( - // AExp - SimpleRewrite( - T(k(KAExp(AExpId(X)) ~>: Ks), state(M)), - T(k(KAExp(AExpInt(MAP.select(SortMapIdInt)(M, X))) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KAExp(AExpDiv(AExpInt(I1), AExpInt(I2))) ~>: Ks), state(M)), - T(k(KAExp(AExpInt(INT.div(I1, I2))) ~>: Ks), state(M)), - BOOL.not(BOOL.eq(SortInt)(I1, INT(0)))) - , SimpleRewrite( - T(k(KAExp(AExpPlus(AExpInt(I1), AExpInt(I2))) ~>: Ks), state(M)), - T(k(KAExp(AExpInt(INT.plus(I1, I2))) ~>: Ks), state(M)), - tt) - // BExp - , SimpleRewrite( - T(k(KBExp(BExpLeq(AExpInt(I1), AExpInt(I2))) ~>: Ks), state(M)), - T(k(KBExp(BExpBool(INT.le(I1, I2))) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KBExp(BExpNot(BExpBool(B))) ~>: Ks), state(M)), - T(k(KBExp(BExpBool(BOOL.not(B))) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KBExp(BExpAnd(BExpBool(BOOL(true)), Be)) ~>: Ks), state(M)), - T(k(KBExp(Be) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KBExp(BExpAnd(BExpBool(BOOL(false)), Be)) ~>: Ks), state(M)), - T(k(KBExp(BExpBool(BOOL(false))) ~>: Ks), state(M)), - tt) - // Stmt - , SimpleRewrite( - T(k(KStmt(StmtAssign(X, AExpInt(I))) ~>: Ks), state(M)), - T(k(Ks), state(MAP.store(SortMapIdInt)(M, X, I))), - tt) - , SimpleRewrite( - T(k(KStmt(StmtSeq(S1,S2)) ~>: Ks), state(M)), - T(k(KStmt(S1) ~>: KStmt(S2) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KStmt(StmtIf(BExpBool(BOOL(true)), S1, S2)) ~>: Ks), state(M)), - T(k(KStmt(S1) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KStmt(StmtIf(BExpBool(BOOL(false)), S1, S2)) ~>: Ks), state(M)), - T(k(KStmt(S2) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KStmt(StmtWhile(Be, S)) ~>: Ks), state(M)), - T(k(KStmt(StmtIf(Be, StmtSeq(S, StmtWhile(Be, S)), StmtSkip())) ~>: Ks), state(M)), - tt) - , SimpleRewrite( - T(k(KStmt(StmtSkip()) ~>: Ks), state(M)), - T(k(Ks), state(M)), - tt) - // Pgm - , SimpleRewrite( - T(k(KPgm(PgmOf(IdsCons(X, Xs), S)) ~>: Ks), state(M)), - T(k(KPgm(PgmOf(Xs, S)) ~>: Ks), state(MAP.store(SortMapIdInt)(M, X, INT(0)))), - tt) - , SimpleRewrite( - T(k(KPgm(PgmOf(IdsNil(), S)) ~>: Ks), state(M)), - T(k(KStmt(S) ~>: Ks), state(M)), - tt) - // strict - // AExpDiv - , SimpleRewrite( - T(k(KAExp(AExpDiv(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E1) ~>: freezerDiv0(E2) ~>: Ks), state(M)), - BOOL.not(isKResult(KAExp(E1)))) - , SimpleRewrite( - T(k(KAExp(E1) ~>: freezerDiv0(E2) ~>: Ks), state(M)), - T(k(KAExp(AExpDiv(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E1))) - , SimpleRewrite( - T(k(KAExp(AExpDiv(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E2) ~>: freezerDiv1(E1) ~>: Ks), state(M)), - BOOL.and(isKResult(KAExp(E1)), BOOL.not(isKResult(KAExp(E2))))) - , SimpleRewrite( - T(k(KAExp(E2) ~>: freezerDiv1(E1) ~>: Ks), state(M)), - T(k(KAExp(AExpDiv(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E2))) - // AExpPlus - , SimpleRewrite( - T(k(KAExp(AExpPlus(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E1) ~>: freezerPlus0(E2) ~>: Ks), state(M)), - BOOL.not(isKResult(KAExp(E1)))) - , SimpleRewrite( - T(k(KAExp(E1) ~>: freezerPlus0(E2) ~>: Ks), state(M)), - T(k(KAExp(AExpPlus(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E1))) - , SimpleRewrite( - T(k(KAExp(AExpPlus(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E2) ~>: freezerPlus1(E1) ~>: Ks), state(M)), - BOOL.and(isKResult(KAExp(E1)), BOOL.not(isKResult(KAExp(E2))))) - , SimpleRewrite( - T(k(KAExp(E2) ~>: freezerPlus1(E1) ~>: Ks), state(M)), - T(k(KAExp(AExpPlus(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E2))) - // BExpLeq - , SimpleRewrite( - T(k(KBExp(BExpLeq(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E1) ~>: freezerLeq0(E2) ~>: Ks), state(M)), - BOOL.not(isKResult(KAExp(E1)))) - , SimpleRewrite( - T(k(KAExp(E1) ~>: freezerLeq0(E2) ~>: Ks), state(M)), - T(k(KBExp(BExpLeq(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E1))) - , SimpleRewrite( - T(k(KBExp(BExpLeq(E1, E2)) ~>: Ks), state(M)), - T(k(KAExp(E2) ~>: freezerLeq1(E1) ~>: Ks), state(M)), - BOOL.and(isKResult(KAExp(E1)), BOOL.not(isKResult(KAExp(E2))))) - , SimpleRewrite( - T(k(KAExp(E2) ~>: freezerLeq1(E1) ~>: Ks), state(M)), - T(k(KBExp(BExpLeq(E1, E2)) ~>: Ks), state(M)), - isKResult(KAExp(E2))) - // BExpNot - , SimpleRewrite( - T(k(KBExp(BExpNot(Be)) ~>: Ks), state(M)), - T(k(KBExp(Be) ~>: freezerNot0() ~>: Ks), state(M)), - BOOL.not(isKResult(KBExp(Be)))) - , SimpleRewrite( - T(k(KBExp(Be) ~>: freezerNot0() ~>: Ks), state(M)), - T(k(KBExp(BExpNot(Be)) ~>: Ks), state(M)), - isKResult(KBExp(Be))) - // BExpAnd - , SimpleRewrite( - T(k(KBExp(BExpAnd(Be1, Be2)) ~>: Ks), state(M)), - T(k(KBExp(Be1) ~>: freezerAnd0(Be2) ~>: Ks), state(M)), - BOOL.not(isKResult(KBExp(Be1)))) - , SimpleRewrite( - T(k(KBExp(Be1) ~>: freezerAnd0(Be2) ~>: Ks), state(M)), - T(k(KBExp(BExpAnd(Be1, Be2)) ~>: Ks), state(M)), - isKResult(KBExp(Be1))) - // StmtAssign - , SimpleRewrite( - T(k(KStmt(StmtAssign(X, E1)) ~>: Ks), state(M)), - T(k(KAExp(E1) ~>: freezerAssign1(X) ~>: Ks), state(M)), - BOOL.not(isKResult(KAExp(E1)))) - , SimpleRewrite( - T(k(KAExp(E1) ~>: freezerAssign1(X) ~>: Ks), state(M)), - T(k(KStmt(StmtAssign(X, E1)) ~>: Ks), state(M)), - isKResult(KAExp(E1))) - // StmtIf - , SimpleRewrite( - T(k(KStmt(StmtIf(Be, S1, S2)) ~>: Ks), state(M)), - T(k(KBExp(Be) ~>: freezerIf0(S1, S2) ~>: Ks), state(M)), - BOOL.not(isKResult(KBExp(Be)))) - , SimpleRewrite( - T(k(KBExp(Be) ~>: freezerIf0(S1, S2) ~>: Ks), state(M)), - T(k(KStmt(StmtIf(Be, S1, S2)) ~>: Ks), state(M)), - isKResult(KBExp(Be))) - ) - -} diff --git a/src/test/scala/org/kframework/km/RewriteTest.scala b/src/test/scala/org/kframework/km/RewriteTest.scala deleted file mode 100644 index 306b2c7..0000000 --- a/src/test/scala/org/kframework/km/RewriteTest.scala +++ /dev/null @@ -1,249 +0,0 @@ -package org.kframework.km - -import org.scalatest.FreeSpec - -class RewriteTest extends FreeSpec { - - import term._ - import builtin._ - import outer._ - - "simple" in { - val tt = BOOL(true) - - val x = Variable("x", SortK) - val y = Variable("y", SortK) - val z = Variable("z", SortK) - - val al = new Constructor("a", (Seq(),SortK)) - val bl = new Constructor("b", (Seq(),SortK)) - val cl = new Constructor("c", (Seq(),SortK)) - val dl = new Constructor("d", (Seq(),SortK)) - - val a = Application(al, Seq()) - val b = Application(bl, Seq()) - val c = Application(cl, Seq()) - val d = Application(dl, Seq()) - - val r1 = SimpleRewrite(a, b, tt) - val r2 = SimpleRewrite(b, c, tt) - val r3 = SimpleRewrite(a, d, tt) - val r4 = SimpleRewrite(a, c, tt) - - val t1 = SimplePattern(a, tt) - - val rewriter = new rewrite(Seq(Seq(al,bl,cl,dl))) - import rewriter._ - - // rule a => b - // a => [ b ] - assert(applyRule(r1, t1) == Seq(SimplePattern(b, tt))) - - // rule a => b - // rule b => c - // a =*=> [ c ] - assert(search(Seq(r1,r2), t1) == Seq(SimplePattern(c, tt))) - - // rule a => b - // rule b => c - // rule a => d - // a =*=> [ d, c ] // smaller path first - assert(search(Seq(r1,r2,r3), t1) == Seq(SimplePattern(d, tt), SimplePattern(c, tt))) - - // rule a => b - // rule b => c - // rule a => c - // a =*=> [ c, c ] // no merge - assert(search(Seq(r1,r2,r4), t1) == Seq(SimplePattern(c, tt), SimplePattern(c, tt))) - } - - "symbolic" in { - val tt = BOOL(true) - - val x = Variable("x", SortInt) - val y = Variable("y", SortInt) - val z = Variable("z", SortInt) - - val p = new Constructor("p", (Seq(SortInt),SortK)) - val q = new Constructor("q", (Seq(SortInt),SortK)) - - val px = Application(p, Seq(x)) - val qx = Application(q, Seq(x)) - - val xgt0 = INT.gt(x, INT(0)) - val xge0 = INT.ge(x, INT(0)) - val xlt0 = INT.lt(x, INT(0)) - - val cl = new Constructor("c", (Seq(),SortK)) - val dl = new Constructor("d", (Seq(),SortK)) - - val c = Application(cl, Seq()) - val d = Application(dl, Seq()) - - val r1 = SimpleRewrite(px, qx, xgt0) - val r2 = SimpleRewrite(qx, c, xge0) - val r3 = SimpleRewrite(qx, d, xlt0) - - val t1 = SimplePattern(px, tt) - - val rewriter = new rewrite(Seq(Seq(p,q,cl,dl))) - import rewriter._ - - // rule p(x:Int) => q(x) if x > 0 - // p(x) =*=> [ q(x) /\ x > 0 ] - assert(search(Seq(r1), t1) == Seq(SimplePattern(qx, xgt0))) - - // rule p(x:Int) => q(x) if x > 0 - // rule q(x:Int) => c if x >= 0 - // rule q(x:Int) => d if x < 0 - // p(x) =*=> [ c /\ x>= 0 /\ x > 0 ] - assert(search(Seq(r1,r2,r3), t1) == Seq(SimplePattern(c, BOOL.and(xgt0, xge0)))) - } - - "z3" in { - val a = new Constructor("a", (Seq(),SortK)) - val b = new Constructor("b", (Seq(),SortK)) - val z3 = new z3(Seq(Seq(a,b))) - - val aa = Application(a, Seq()) - val bb = Application(b, Seq()) - - assert(z3.sat(BOOL(true))) - assert(!z3.sat(BOOL(false))) -// assert(try { z3.sat("(check-sat"); false } catch { case z3.Fail(msg) => msg == "(error \"line 1 column 2: invalid command, symbol expected\")" }) - assert(!z3.sat(BOOL.eq(SortK)(aa,bb))) - } - - "0.imp" in { - import Imp._ - val x = IdOf(STRING("x")) - val x0 = KStmt(StmtAssign(x, AExpInt(INT(0)))) // x = 0; - val kcell = k(kCons(x0, kNil())) - val scell = state(M) - val tcell = T(kcell,scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val res = search(rules, SimplePattern(tcell, BOOL(true))) - assert(res.toString == "List(((.K()),(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),INT(0)))) /\\ BOOL(true))") - } - - "1.imp" in { - import Imp._ - val x = IdOf(STRING("x")) - val y = IdOf(STRING("y")) - val x0 = KStmt(StmtAssign(x, AExpInt(INT(0)))) // x = 0; - val yx1 = KStmt(StmtAssign(y, AExpPlus(AExpId(x), AExpInt(INT(1))))) // y = x + 1; - val kcell = k(kCons(x0, kCons(yx1, kNil()))) - val scell = state(M) - val tcell = T(kcell,scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val res = search(rules, SimplePattern(tcell, BOOL(true))) - assert(res.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),INT(0)),_(STRING(y)),INT(1)))) /\\ BOOL(true))") - } - - "2.imp" in { - import Imp._ - val x = IdOf(STRING("x")) - val y = IdOf(STRING("y")) - val y0 = StmtAssign(y, AExpInt(INT(0))) // y = 0; - val y1 = StmtAssign(y, AExpInt(INT(1))) // y = 1; - val ifx0 = KStmt(StmtIf(BExpLeq(AExpId(x), AExpInt(INT(0))), y0, y1)) // if(x <= 0) { y = 0; } else { y = 1; } - val N = Variable("N", SortInt) - val kcell = k(kCons(ifx0, kNil())) - val scell = state(MAP.store(SortMapIdInt)(M, x, N)) // M[x <- N] - val tcell = T(kcell,scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val res = search(rules, SimplePattern(tcell, BOOL(true))) - assert(res.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(0)))) /\\ _==Bool_(BOOL(true),_<=Int_(N:Int,INT(0))), ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(1)))) /\\ _==Bool_(BOOL(false),_<=Int_(N:Int,INT(0))))") - // ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(0)))) /\ _==Bool_(BOOL(true),_<=Int_(N:Int,INT(0))) - // ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(1)))) /\ _==Bool_(BOOL(false),_<=Int_(N:Int,INT(0))) - - val scell2 = state(M) - val tcell2 = T(kcell,scell2) - val res2 = search(rules, SimplePattern(tcell2, BOOL(true))) - assert(res2.toString == "List(((.K()),(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(0)))) /\\ _==Bool_(BOOL(true),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))), ((.K()),(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(1)))) /\\ _==Bool_(BOOL(false),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))))") - // ((.K()),(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(0)))) /\ _==Bool_(BOOL(true),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))) - // ((.K()),(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(1)))) /\ _==Bool_(BOOL(false),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))) - } - - "3.imp" in { - import Imp._ - val x = IdOf(STRING("x")) - val y = IdOf(STRING("y")) - val z = IdOf(STRING("z")) - val y10 = StmtAssign(y, AExpInt(INT(10))) // y = 10; - val y20 = StmtAssign(y, AExpInt(INT(20))) // y = 20; - val z100 = StmtAssign(z, AExpInt(INT(100))) // z = 100; - val z200 = StmtAssign(z, AExpInt(INT(200))) // z = 200; - val ifxle0 = StmtIf(BExpLeq(AExpId(x), AExpInt(INT(0))), y10, y20) // if(x <= 0) { y = 10; } else { y = 20; } - val ifyle15 = StmtIf(BExpLeq(AExpId(y), AExpInt(INT(15))), z100, z200) // if(y <= 15) { z = 100; } else { z = 200; } - val N = Variable("N", SortInt) - val kcell = k(kCons(KStmt(StmtSeq(ifxle0, ifyle15)), kNil())) - val scell = state(MAP.store(SortMapIdInt)(M, x, N)) // M[x <- N] - val tcell = T(kcell,scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val res = search(rules, SimplePattern(tcell, BOOL(true))) - assert(res.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(10)),_(STRING(z)),INT(100)))) /\\ _==Bool_(BOOL(true),_<=Int_(N:Int,INT(0))), ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(20)),_(STRING(z)),INT(200)))) /\\ _==Bool_(BOOL(false),_<=Int_(N:Int,INT(0))))") - // ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(10)),_(STRING(z)),INT(100)))) /\ _==Bool_(BOOL(true),_<=Int_(N:Int,INT(0))) - // ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(x)),N:Int),_(STRING(y)),INT(20)),_(STRING(z)),INT(200)))) /\ _==Bool_(BOOL(false),_<=Int_(N:Int,INT(0))) - - val scell2 = state(M) - val tcell2 = T(kcell,scell2) - val res2 = search(rules, SimplePattern(tcell2, BOOL(true))) - assert(res2.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(10)),_(STRING(z)),INT(100)))) /\\ _==Bool_(BOOL(true),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))), ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(20)),_(STRING(z)),INT(200)))) /\\ _==Bool_(BOOL(false),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))))") - // ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(10)),_(STRING(z)),INT(100)))) /\ _==Bool_(BOOL(true),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))) - // ((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(y)),INT(20)),_(STRING(z)),INT(200)))) /\ _==Bool_(BOOL(false),_<=Int_(selectMapIdInt(M:Map{Id,Int},_(STRING(x))),INT(0))) - } - - "sum.imp" in { - import Imp._ - val n = IdOf(STRING("n")) - val sum = IdOf(STRING("sum")) - val n10 = StmtAssign(n, AExpInt(INT(100))) // n = 10; - val suminc = StmtAssign(sum, AExpPlus(AExpId(sum), AExpId(n))) // sum = sum + n; - val ndec = StmtAssign(n, AExpPlus(AExpId(n), AExpInt(INT(-1)))) // n = n - 1; - val ngt0 = BExpNot(BExpLeq(AExpId(n), AExpInt(INT(0)))) // !(n <= 0) - val whilesum = StmtWhile(ngt0, StmtSeq(suminc, ndec)) // while(!(n <= 0)) { sum = sum + n; n = n -1; } - val pgm = PgmOf(IdsCons(n, IdsCons(sum, IdsNil())), StmtSeq(n10, whilesum)) // int n, sum; n = 10; while(...) { ... } - val kcell = k(kCons(KPgm(pgm), kNil())) - val scell = state(M) - val tcell = T(kcell, scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val begin = java.lang.System.nanoTime() - val res = search(rules, SimplePattern(tcell, BOOL(true))) - val end = java.lang.System.nanoTime(); println((end - begin) / Math.pow(10, 9)) // 1.07162443 - assert(res.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(n)),INT(0)),_(STRING(sum)),INT(5050)))) /\\ BOOL(true))") - } - - "sum.imp.symbolic" in { - import Imp._ - val i = IdOf(STRING("i")) - val n = IdOf(STRING("n")) - val sum = IdOf(STRING("sum")) - val suminc = StmtAssign(sum, AExpPlus(AExpId(sum), AExpId(i))) // sum = sum + i; - val iinc = StmtAssign(i, AExpPlus(AExpId(i), AExpInt(INT(1)))) // i = i + 1; - val ilen = BExpLeq(AExpId(i), AExpId(n)) // i <= n - val ifsum = StmtIf(ilen, StmtSeq(suminc, iinc), StmtSkip()) // if(i <= n) { sum = sum + i; i = i + 1; } else { ; } - val kcell = k(kCons(KStmt(ifsum), kNil())) - val I = Variable("I", SortInt) - val N = Variable("N", SortInt) -// val S = Variable("S", SortInt) - val S = INT.div(INT.mult(I, INT.minus(I, INT(1))), INT(2)) // I(I-1) / 2 - val scell = state(MAP.store(SortMapIdInt)(MAP.store(SortMapIdInt)(MAP.store(SortMapIdInt)(M, i, I), n, N), sum, S)) // M[i <- I][n <- N][sum <- I(I-1)/2] -// val scell = state(M) - val tcell = T(kcell, scell) - val rewriter = new rewrite(constructors) - import rewriter._ - val begin = java.lang.System.nanoTime() - val res = search(rules, SimplePattern(tcell, INT.gt(N, INT(0)))) - val end = java.lang.System.nanoTime(); println((end - begin) / Math.pow(10, 9)) // 0.661640726 - assert(res.toString == "List(((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(i)),I:Int),_(STRING(n)),N:Int),_(STRING(sum)),_/Int_(_*Int_(I:Int,_-Int_(I:Int,INT(1))),INT(2))))) /\\ _andBool_(_>Int_(N:Int,INT(0)),_==Bool_(BOOL(false),_<=Int_(I:Int,N:Int))), ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(i)),_+Int_(I:Int,INT(1))),_(STRING(n)),N:Int),_(STRING(sum)),_+Int_(_/Int_(_*Int_(I:Int,_-Int_(I:Int,INT(1))),INT(2)),I:Int)))) /\\ _andBool_(_>Int_(N:Int,INT(0)),_==Bool_(BOOL(true),_<=Int_(I:Int,N:Int))))") - // ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(i)),I:Int),_(STRING(n)),N:Int),_(STRING(sum)),_/Int_(_*Int_(I:Int,_-Int_(I:Int,INT(1))),INT(2))))) /\ _andBool_(_>Int_(N:Int,INT(0)),_==Bool_(BOOL(false),_<=Int_(I:Int,N:Int))) - // ((.K()),(storeMapIdInt(storeMapIdInt(storeMapIdInt(M:Map{Id,Int},_(STRING(i)),_+Int_(I:Int,INT(1))),_(STRING(n)),N:Int),_(STRING(sum)),_+Int_(_/Int_(_*Int_(I:Int,_-Int_(I:Int,INT(1))),INT(2)),I:Int)))) /\ _andBool_(_>Int_(N:Int,INT(0)),_==Bool_(BOOL(true),_<=Int_(I:Int,N:Int))) - } - -} diff --git a/src/test/scala/org/kframework/km/UnificationTest.scala b/src/test/scala/org/kframework/km/UnificationTest.scala deleted file mode 100644 index b57c8ac..0000000 --- a/src/test/scala/org/kframework/km/UnificationTest.scala +++ /dev/null @@ -1,40 +0,0 @@ -package org.kframework.km - -import org.scalatest.FreeSpec - -class UnificationTest extends FreeSpec { - - import term._ - import builtin._ - import unification._ - - val tt = Seq() // BOOL(true) - - val x = Variable("x", SortK) - val y = Variable("y", SortK) - val z = Variable("z", SortK) - - val p = new Constructor("p", (Seq(SortK,SortK),SortK)) - val q = new Constructor("q", (Seq(SortK,SortK),SortK)) - val p3 = new Constructor("p3", (Seq(SortK,SortK,SortK),SortK)) - - val a = Application(new Constructor("a", (Seq(),SortK)), Seq()) - - val pxy = Application(p, Seq(x, y)) - val pyx = Application(p, Seq(y, x)) - val qpp = Application(q, Seq(pxy, pyx)) - val qzz = Application(q, Seq(z, z)) - - val pxya = Application(p3, Seq(x, y, a)) - val pyxx = Application(p3, Seq(y, x, x)) - - val u0 = Unifier(Map(), tt) - - "simple" in { - assert(unifyTerm(x, y, u0) == Unifier(Map(x -> y), tt)) - assert(unifyTerm(pxy, pyx, u0) == Unifier(Map(x -> y), tt)) // p(X,Y) = p(Y,X) // X -> Y - assert(unifyTerm(qpp, qzz, u0) == Unifier(Map(x -> y, z -> pxy), tt)) // q(p(X,Y),p(Y,X)) = q(Z,Z) // X -> Y, Z -> p(X,Y) - assert(unifyTerm(pxya, pyxx, u0) == Unifier(Map(x -> y, y -> a), tt)) // p(X,Y,a) = p(Y,X,X) // X -> Y, Y -> a - } - -}