From 9f9f285a82db1c2e11fb949e7b5f56ba16fde84b Mon Sep 17 00:00:00 2001 From: Florian Cassayre <florian.cassayre@gmail.com> Date: Mon, 13 Jun 2022 16:26:39 +0200 Subject: [PATCH] Complete re-organization into separate modules --- build.sbt | 88 ++++++++++++++++--- .../src}/main/scala/Example.scala | 14 +-- .../lisa/kernel/fol/CommonDefinitions.scala | 0 .../lisa/kernel/fol/EquivalenceChecker.scala | 5 +- .../src}/main/scala/lisa/kernel/fol/FOL.scala | 0 .../lisa/kernel/fol/FormulaDefinitions.scala | 0 .../kernel/fol/FormulaLabelDefinitions.scala | 0 .../scala/lisa/kernel/fol/Substitutions.scala | 10 ++- .../lisa/kernel/fol/TermDefinitions.scala | 0 .../kernel/fol/TermLabelDefinitions.scala | 0 .../scala/lisa/kernel/proof/Judgement.scala | 8 +- .../lisa/kernel/proof/RunningTheory.scala | 31 ++++--- .../scala/lisa/kernel/proof/SCProof.scala | 4 +- .../lisa/kernel/proof/SCProofChecker.scala | 41 +++++---- .../lisa/kernel/proof/SequentCalculus.scala | 2 +- .../lisa/settheory/AxiomaticSetTheory.scala | 0 .../lisa/settheory/SetTheoryDefinitions.scala | 2 +- .../lisa/settheory/SetTheoryTGAxioms.scala | 2 +- .../lisa/settheory/SetTheoryZAxioms.scala | 2 +- .../lisa/settheory/SetTheoryZFAxioms.scala | 2 +- .../main/scala/lisa}/tptp/KernelParser.scala | 6 +- .../scala/lisa}/tptp/ProblemGatherer.scala | 4 +- .../src/main/scala/lisa}/tptp/package.scala | 2 +- .../src/main/scala/lisa/utils}/Helpers.scala | 4 +- .../scala/lisa/utils}/KernelHelpers.scala | 2 +- .../src/main/scala/lisa/utils}/Library.scala | 4 +- .../src/main/scala/lisa/utils}/Printer.scala | 2 +- .../scala/lisa/utils}/TheoriesHelpers.scala | 4 +- .../lisa/kernel/EquivalenceCheckerTests.scala | 4 +- .../test/scala/lisa/kernel/FolTests.scala | 4 +- .../lisa/kernel/IncorrectProofsTests.scala | 8 +- .../test/scala/lisa/kernel/ProofTests.scala | 4 +- .../scala/lisa}/test/ProofCheckerSuite.scala | 9 +- .../test/scala/lisa/utils}/PrinterTest.scala | 4 +- src/main/scala/{ => lisa}/proven/Main.scala | 4 +- .../{ => lisa}/proven/SetTheoryLibrary.scala | 4 +- .../proven/mathematics/Mapping.scala | 8 +- .../proven/mathematics/SetTheory.scala | 8 +- .../proven/tactics/Destructors.scala | 6 +- .../proven/tactics/ProofTactics.scala | 6 +- .../tactics/SimplePropositionalSolver.scala | 4 +- .../lisa/proven/InitialProofsTests.scala | 10 +-- .../scala/lisa/proven/SimpleProverTests.scala | 12 +-- 43 files changed, 196 insertions(+), 138 deletions(-) rename {src => lisa-examples/src}/main/scala/Example.scala (95%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/CommonDefinitions.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/EquivalenceChecker.scala (99%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/FOL.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/FormulaDefinitions.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/FormulaLabelDefinitions.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/Substitutions.scala (98%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/TermDefinitions.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/fol/TermLabelDefinitions.scala (100%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/proof/Judgement.scala (94%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/proof/RunningTheory.scala (94%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/proof/SCProof.scala (99%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/proof/SCProofChecker.scala (94%) rename {src => lisa-kernel/src}/main/scala/lisa/kernel/proof/SequentCalculus.scala (99%) rename {src => lisa-theories/src}/main/scala/lisa/settheory/AxiomaticSetTheory.scala (100%) rename {src => lisa-theories/src}/main/scala/lisa/settheory/SetTheoryDefinitions.scala (97%) rename {src => lisa-theories/src}/main/scala/lisa/settheory/SetTheoryTGAxioms.scala (95%) rename {src => lisa-theories/src}/main/scala/lisa/settheory/SetTheoryZAxioms.scala (97%) rename {src => lisa-theories/src}/main/scala/lisa/settheory/SetTheoryZFAxioms.scala (95%) rename {src/main/scala/utilities => lisa-tptp/src/main/scala/lisa}/tptp/KernelParser.scala (99%) rename {src/main/scala/utilities => lisa-tptp/src/main/scala/lisa}/tptp/ProblemGatherer.scala (87%) rename {src/main/scala/utilities => lisa-tptp/src/main/scala/lisa}/tptp/package.scala (93%) rename {src/main/scala/utilities => lisa-utils/src/main/scala/lisa/utils}/Helpers.scala (71%) rename {src/main/scala/utilities => lisa-utils/src/main/scala/lisa/utils}/KernelHelpers.scala (99%) rename {src/main/scala/utilities => lisa-utils/src/main/scala/lisa/utils}/Library.scala (99%) rename {src/main/scala/utilities => lisa-utils/src/main/scala/lisa/utils}/Printer.scala (99%) rename {src/main/scala/utilities => lisa-utils/src/main/scala/lisa/utils}/TheoriesHelpers.scala (99%) rename {src => lisa-utils/src}/test/scala/lisa/kernel/EquivalenceCheckerTests.scala (99%) rename {src => lisa-utils/src}/test/scala/lisa/kernel/FolTests.scala (98%) rename {src => lisa-utils/src}/test/scala/lisa/kernel/IncorrectProofsTests.scala (92%) rename {src => lisa-utils/src}/test/scala/lisa/kernel/ProofTests.scala (97%) rename {src/test/scala => lisa-utils/src/test/scala/lisa}/test/ProofCheckerSuite.scala (90%) rename {src/test/scala/lisa/kernel => lisa-utils/src/test/scala/lisa/utils}/PrinterTest.scala (98%) rename src/main/scala/{ => lisa}/proven/Main.scala (89%) rename src/main/scala/{ => lisa}/proven/SetTheoryLibrary.scala (69%) rename src/main/scala/{ => lisa}/proven/mathematics/Mapping.scala (99%) rename src/main/scala/{ => lisa}/proven/mathematics/SetTheory.scala (99%) rename src/main/scala/{ => lisa}/proven/tactics/Destructors.scala (92%) rename src/main/scala/{ => lisa}/proven/tactics/ProofTactics.scala (98%) rename src/main/scala/{ => lisa}/proven/tactics/SimplePropositionalSolver.scala (99%) diff --git a/build.sbt b/build.sbt index 1699b485..b82c7792 100644 --- a/build.sbt +++ b/build.sbt @@ -1,20 +1,80 @@ -name := "lisa" -organization := "ch.epfl.lara" -licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0.html")) +inThisBuild(Def.settings( + organization := "ch.epfl.lara", + organizationName := "LARA", + organizationHomepage := Some(url("https://lara.epfl.ch")), + licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0.html")), + versionScheme := Some("semver-spec"), +)) -version := "0.1" +val scala2 = "2.13.8" +val scala3 = "3.1.3" -scalaVersion := "3.1.3" +lazy val commonSettings2 = Seq( + scalaVersion := scala2, +) +lazy val commonSettings3 = Seq( + scalaVersion := scala3, + scalacOptions ++= Seq( + "-feature", + "-deprecation", + //"-source:future", + "-language:implicitConversions", + //"-old-syntax", + //"-no-indent", + ), + libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test", + Test / parallelExecution := false, + semanticdbEnabled := true, + semanticdbVersion := scalafixSemanticdb.revision, + scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.6.0", +) + +lazy val root = Project( + id = "lisa-core", + base = file("."), +) + .settings(commonSettings3) + .settings( + version := "0.1", + ) + .dependsOn(kernel, utils, theories, tptp) // Everything but `examples` + +lazy val kernel = Project( + id = "lisa-kernel", + base = file("lisa-kernel"), +) + .settings(commonSettings2) + .settings( + crossScalaVersions := Seq(scala3) + ) -scalacOptions ++= Seq("-deprecation", "-feature") -scalacOptions ++= Seq( - "-language:implicitConversions" +lazy val utils = Project( + id = "lisa-utils", + base = file("lisa-utils"), ) + .settings(commonSettings3) + .dependsOn(kernel) -libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test" -libraryDependencies += "io.github.leoprover" % "scala-tptp-parser_2.13" % "1.4" -Test / parallelExecution := false +lazy val theories = Project( + id = "lisa-theories", + base = file("lisa-theories"), +) + .settings(commonSettings3) + .dependsOn(utils) -ThisBuild / semanticdbEnabled := true -ThisBuild / semanticdbVersion := scalafixSemanticdb.revision -ThisBuild / scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.6.0" +lazy val tptp = Project( + id = "lisa-tptp", + base = file("lisa-tptp"), +) + .settings(commonSettings3) + .settings( + libraryDependencies += "io.github.leoprover" % "scala-tptp-parser_2.13" % "1.4", + ) + .dependsOn(utils) + +lazy val examples = Project( + id = "lisa-examples", + base = file("lisa-examples"), +) + .settings(commonSettings3) + .dependsOn(root) diff --git a/src/main/scala/Example.scala b/lisa-examples/src/main/scala/Example.scala similarity index 95% rename from src/main/scala/Example.scala rename to lisa-examples/src/main/scala/Example.scala index dae950af..228994a7 100644 --- a/src/main/scala/Example.scala +++ b/lisa-examples/src/main/scala/Example.scala @@ -1,14 +1,14 @@ +import lisa.utils.Printer.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker import lisa.kernel.proof.SCProofChecker.* import lisa.kernel.proof.SequentCalculus.* -import proven.tactics.SimplePropositionalSolver.solveSequent -import utilities.Helpers.{_, given} -import utilities.Printer.* -import utilities.tptp.KernelParser.* -import utilities.tptp.ProblemGatherer.* -import utilities.tptp.* +import lisa.proven.tactics.SimplePropositionalSolver.solveSequent +import lisa.utils.Helpers.{_, given} +import lisa.tptp.KernelParser.* +import lisa.tptp.ProblemGatherer.* +import lisa.tptp.* /** * Discover some of the elements of LISA to get started. @@ -26,7 +26,7 @@ object Example { * The last two lines don't need to be changed. */ def proofExample(): Unit = { - object Ex extends proven.Main { + object Ex extends lisa.proven.Main { THEOREM("fixedPointDoubleApplication") of "" PROOF { steps( ???, diff --git a/src/main/scala/lisa/kernel/fol/CommonDefinitions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/CommonDefinitions.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/CommonDefinitions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/CommonDefinitions.scala diff --git a/src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala similarity index 99% rename from src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala index 075e2054..def0f7fa 100644 --- a/src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/fol/EquivalenceChecker.scala @@ -230,12 +230,13 @@ private[fol] trait EquivalenceChecker extends FormulaDefinitions { case SimplePredicate(id, args) => val lab = "pred_" + id.id + "_" + id.arity if (id == equality) { - if (codesOfTerm(args(0)) == codesOfTerm(args(1))) + if (codesOfTerm(args(0)) == codesOfTerm(args(1))) { phi.normalForm = Some(NLiteral(true)) parent.normalForm = Some(NLiteral(false)) - else + } else { phi.normalForm = Some(NormalPredicate(id, args, updateCodesSig((lab, (args map codesOfTerm).sorted)))) parent.normalForm = Some(NNeg(phi.normalForm.get, updateCodesSig(("neg", List(phi.normalForm.get.code))))) + } } else { phi.normalForm = Some(NormalPredicate(id, args, updateCodesSig((lab, args map codesOfTerm)))) parent.normalForm = Some(NNeg(phi.normalForm.get, updateCodesSig(("neg", List(phi.normalForm.get.code))))) diff --git a/src/main/scala/lisa/kernel/fol/FOL.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/FOL.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/FOL.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/FOL.scala diff --git a/src/main/scala/lisa/kernel/fol/FormulaDefinitions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/FormulaDefinitions.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/FormulaDefinitions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/FormulaDefinitions.scala diff --git a/src/main/scala/lisa/kernel/fol/FormulaLabelDefinitions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/FormulaLabelDefinitions.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/FormulaLabelDefinitions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/FormulaLabelDefinitions.scala diff --git a/src/main/scala/lisa/kernel/fol/Substitutions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/Substitutions.scala similarity index 98% rename from src/main/scala/lisa/kernel/fol/Substitutions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/Substitutions.scala index e89e6079..0f2fe1f4 100644 --- a/src/main/scala/lisa/kernel/fol/Substitutions.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/fol/Substitutions.scala @@ -66,9 +66,10 @@ trait Substitutions extends FormulaDefinitions { t match { case VariableTerm(_) => t case FunctionTerm(label, args) => - label match + label match { case label: SchematicFunctionLabel if label.arity == 0 => m.getOrElse(label, t) case label => FunctionTerm(label, args.map(instantiateNullaryFunctionSchemas(_, m))) + } } } @@ -87,13 +88,13 @@ trait Substitutions extends FormulaDefinitions { case VariableTerm(_) => t case FunctionTerm(label, args) => val newArgs = args.map(instantiateFunctionSchemas(_, m)) - label match + label match { case label: ConstantFunctionLabel => FunctionTerm(label, newArgs) case label: SchematicFunctionLabel => if (m.contains(label)) m(label)(newArgs) // = instantiateNullaryFunctionSchemas(m(label).body, (m(label).vars zip newArgs).toMap) else FunctionTerm(label, newArgs) - + } } } @@ -160,9 +161,10 @@ trait Substitutions extends FormulaDefinitions { require(m.forall { case (symbol, LambdaTermFormula(arguments, body)) => arguments.length == symbol.arity }) phi match { case PredicateFormula(label, args) => - label match + label match { case label: SchematicPredicateLabel if m.contains(label) => m(label)(args) case label => phi + } case ConnectorFormula(label, args) => ConnectorFormula(label, args.map(instantiatePredicateSchemas(_, m))) case BinderFormula(label, bound, inner) => val fv: Set[VariableLabel] = (m.flatMap { case (symbol, LambdaTermFormula(arguments, body)) => body.freeVariables }).toSet diff --git a/src/main/scala/lisa/kernel/fol/TermDefinitions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/TermDefinitions.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/TermDefinitions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/TermDefinitions.scala diff --git a/src/main/scala/lisa/kernel/fol/TermLabelDefinitions.scala b/lisa-kernel/src/main/scala/lisa/kernel/fol/TermLabelDefinitions.scala similarity index 100% rename from src/main/scala/lisa/kernel/fol/TermLabelDefinitions.scala rename to lisa-kernel/src/main/scala/lisa/kernel/fol/TermLabelDefinitions.scala diff --git a/src/main/scala/lisa/kernel/proof/Judgement.scala b/lisa-kernel/src/main/scala/lisa/kernel/proof/Judgement.scala similarity index 94% rename from src/main/scala/lisa/kernel/proof/Judgement.scala rename to lisa-kernel/src/main/scala/lisa/kernel/proof/Judgement.scala index e6fdb2f0..71374b9d 100644 --- a/src/main/scala/lisa/kernel/proof/Judgement.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/proof/Judgement.scala @@ -7,7 +7,7 @@ import lisa.kernel.proof.RunningTheory * Typically, see [[SCProofChecker.checkSingleSCStep]] and [[SCProofChecker.checkSCProof]]. */ sealed abstract class SCProofCheckerJudgement { - import SCProofCheckerJudgement.* + import SCProofCheckerJudgement._ val proof: SCProof /** @@ -40,7 +40,7 @@ object SCProofCheckerJudgement { * The judgement (or verdict) of a running theory. */ sealed abstract class RunningTheoryJudgement[+J <: RunningTheory#Justification] { - import RunningTheoryJudgement.* + import RunningTheoryJudgement._ /** * Whether this judgement is positive -- the justification could be imported into the running theory; @@ -48,8 +48,8 @@ sealed abstract class RunningTheoryJudgement[+J <: RunningTheory#Justification] * @return An instance of either [[ValidJustification]] or [[InvalidJustification]] */ def isValid: Boolean = this match { - case _: ValidJustification[?] => true - case _: InvalidJustification[?] => false + case _: ValidJustification[_] => true + case _: InvalidJustification[_] => false } def get: J = this match { case ValidJustification(just) => just diff --git a/src/main/scala/lisa/kernel/proof/RunningTheory.scala b/lisa-kernel/src/main/scala/lisa/kernel/proof/RunningTheory.scala similarity index 94% rename from src/main/scala/lisa/kernel/proof/RunningTheory.scala rename to lisa-kernel/src/main/scala/lisa/kernel/proof/RunningTheory.scala index ec979c1b..0a94eaeb 100644 --- a/src/main/scala/lisa/kernel/proof/RunningTheory.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/proof/RunningTheory.scala @@ -1,13 +1,13 @@ package lisa.kernel.proof -import lisa.kernel.fol.FOL.* -import lisa.kernel.proof.RunningTheoryJudgement.* -import lisa.kernel.proof.SCProofChecker.* -import lisa.kernel.proof.SequentCalculus.* +import lisa.kernel.fol.FOL._ +import lisa.kernel.proof.RunningTheoryJudgement._ +import lisa.kernel.proof.SCProofChecker._ +import lisa.kernel.proof.SequentCalculus._ import scala.collection.immutable.Set -import scala.collection.mutable.Map as mMap -import scala.collection.mutable.Set as mSet +import scala.collection.mutable.{Map => mMap} +import scala.collection.mutable.{Set => mSet} /** * This class describes the theory, i.e. the context and language, in which theorems are proven. @@ -72,9 +72,10 @@ class RunningTheory { * Check if a label is a symbol of the theory */ - def isSymbol(label: ConstantLabel): Boolean = label match + def isSymbol(label: ConstantLabel): Boolean = label match { case c: ConstantFunctionLabel => funDefinitions.contains(c) case c: ConstantPredicateLabel => predDefinitions.contains(c) + } def isAvailable(label: ConstantLabel): Boolean = !knownSymbols.contains(label.id) @@ -94,7 +95,7 @@ class RunningTheory { private def proofToTheorem(name: String, proof: SCProof, justifications: Seq[Justification]): RunningTheoryJudgement[this.Theorem] = if (proof.imports.forall(i => justifications.exists(j => isSameSequent(i, sequentFromJustification(j))))) - if (belongsToTheory(proof.conclusion)) + if (belongsToTheory(proof.conclusion)) { val r = SCProofChecker.checkSCProof(proof) r match { case SCProofCheckerJudgement.SCValidProof(_) => @@ -104,6 +105,7 @@ class RunningTheory { case r @ SCProofCheckerJudgement.SCInvalidProof(_, _, message) => InvalidJustification("The given proof is incorrect: " + message, Some(r)) } + } else InvalidJustification("All symbols in the conclusion of the proof must belong to the theory. You need to add missing symbols to the theory.", None) else InvalidJustification("Not all imports of the proof are correctly justified.", None) @@ -120,12 +122,12 @@ class RunningTheory { val LambdaTermFormula(vars, body) = expression if (belongsToTheory(body)) if (isAvailable(label)) - if (body.freeVariables.isEmpty && body.schematicFunctions.subsetOf(vars.toSet) && body.schematicPredicates.isEmpty) + if (body.freeVariables.isEmpty && body.schematicFunctions.subsetOf(vars.toSet) && body.schematicPredicates.isEmpty) { val newDef = PredicateDefinition(label, expression) predDefinitions.update(label, Some(newDef)) knownSymbols.update(label.id, label) RunningTheoryJudgement.ValidJustification(newDef) - else InvalidJustification("The definition is not allowed to contain schematic symbols or free variables.", None) + } else InvalidJustification("The definition is not allowed to contain schematic symbols or free variables.", None) else InvalidJustification("The specified symbol id is already part of the theory and can't be redefined.", None) else InvalidJustification("All symbols in the conclusion of the proof must belong to the theory. You need to add missing symbols to the theory.", None) } @@ -156,7 +158,7 @@ class RunningTheory { if (belongsToTheory(body)) if (isAvailable(label)) if (body.freeVariables.subsetOf(Set(out)) && body.schematicFunctions.subsetOf(vars.toSet) && body.schematicPredicates.isEmpty) - if (proof.imports.forall(i => justifications.exists(j => isSameSequent(i, sequentFromJustification(j))))) + if (proof.imports.forall(i => justifications.exists(j => isSameSequent(i, sequentFromJustification(j))))) { val r = SCProofChecker.checkSCProof(proof) r match { case SCProofCheckerJudgement.SCValidProof(_) => @@ -173,7 +175,7 @@ class RunningTheory { } case r @ SCProofCheckerJudgement.SCInvalidProof(_, path, message) => InvalidJustification("The given proof is incorrect: " + message, Some(r)) } - else InvalidJustification("Not all imports of the proof are correctly justified.", None) + } else InvalidJustification("Not all imports of the proof are correctly justified.", None) else InvalidJustification("The definition is not allowed to contain schematic symbols or free variables.", None) else InvalidJustification("The specified symbol id is already part of the theory and can't be redefined.", None) else InvalidJustification("All symbols in the conclusion of the proof must belong to the theory. You need to add missing symbols to the theory.", None) @@ -277,9 +279,10 @@ class RunningTheory { def addSymbol(s: ConstantLabel): Unit = { if (isAvailable(s)) { knownSymbols.update(s.id, s) - s match + s match { case c: ConstantFunctionLabel => funDefinitions.update(c, None) case c: ConstantPredicateLabel => predDefinitions.update(c, None) + } } else {} } @@ -327,5 +330,5 @@ object RunningTheory { /** * An empty theory suitable to reason about first order logic. */ - def PredicateLogic: RunningTheory = RunningTheory() + def PredicateLogic: RunningTheory = new RunningTheory() } diff --git a/src/main/scala/lisa/kernel/proof/SCProof.scala b/lisa-kernel/src/main/scala/lisa/kernel/proof/SCProof.scala similarity index 99% rename from src/main/scala/lisa/kernel/proof/SCProof.scala rename to lisa-kernel/src/main/scala/lisa/kernel/proof/SCProof.scala index 244c795e..0892ef5d 100644 --- a/src/main/scala/lisa/kernel/proof/SCProof.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/proof/SCProof.scala @@ -38,11 +38,11 @@ case class SCProof(steps: IndexedSeq[SCProofStep], imports: IndexedSeq[Sequent] if (i >= 0) if (i >= steps.length) throw new IndexOutOfBoundsException(s"index $i is out of bounds of the steps Seq") else steps(i).bot - else + else { val i2 = -(i + 1) if (i2 >= imports.length) throw new IndexOutOfBoundsException(s"index $i is out of bounds of the imports Seq") else imports(i2) - + } } /** diff --git a/src/main/scala/lisa/kernel/proof/SCProofChecker.scala b/lisa-kernel/src/main/scala/lisa/kernel/proof/SCProofChecker.scala similarity index 94% rename from src/main/scala/lisa/kernel/proof/SCProofChecker.scala rename to lisa-kernel/src/main/scala/lisa/kernel/proof/SCProofChecker.scala index 1ae79196..34cf960d 100644 --- a/src/main/scala/lisa/kernel/proof/SCProofChecker.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/proof/SCProofChecker.scala @@ -1,9 +1,8 @@ package lisa.kernel.proof -import lisa.kernel.fol.FOL.* -import lisa.kernel.proof.SCProofCheckerJudgement.* -import lisa.kernel.proof.SequentCalculus.* -import utilities.Printer +import lisa.kernel.fol.FOL._ +import lisa.kernel.proof.SCProofCheckerJudgement._ +import lisa.kernel.proof.SequentCalculus._ object SCProofChecker { @@ -73,28 +72,28 @@ object SCProofChecker { * Γ, φ∧ψ |- Δ Γ, φ∧ψ |- Δ */ case LeftAnd(b, t1, phi, psi) => - if (isSameSet(ref(t1).right, b.right)) + if (isSameSet(ref(t1).right, b.right)) { val phiAndPsi = ConnectorFormula(And, Seq(phi, psi)) if ( isSameSet(b.left + phi, ref(t1).left + phiAndPsi) || - isSameSet(b.left + psi, ref(t1).left + phiAndPsi) || - isSameSet(b.left + phi + psi, ref(t1).left + phiAndPsi) + isSameSet(b.left + psi, ref(t1).left + phiAndPsi) || + isSameSet(b.left + phi + psi, ref(t1).left + phiAndPsi) ) SCValidProof(SCProof(step)) else SCInvalidProof(SCProof(step), Nil, "Left-hand side of conclusion + φ∧ψ must be same as left-hand side of premise + either φ, ψ or both.") - else SCInvalidProof(SCProof(step), Nil, "Right-hand sides of the premise and the conclusion must be the same.") + } else SCInvalidProof(SCProof(step), Nil, "Right-hand sides of the premise and the conclusion must be the same.") /* * Γ, φ |- Δ Σ, ψ |- Π * ------------------------ * Γ, Σ, φ∨ψ |- Δ, Π */ case LeftOr(b, t, disjuncts) => - if (isSameSet(b.right, t.map(ref(_).right).reduce(_ union _))) + if (isSameSet(b.right, t.map(ref(_).right).reduce(_ union _))) { val phiOrPsi = ConnectorFormula(Or, disjuncts) if (isSameSet(disjuncts.foldLeft(b.left)(_ + _), t.map(ref(_).left).reduce(_ union _) + phiOrPsi)) SCValidProof(SCProof(step)) else SCInvalidProof(SCProof(step), Nil, s"Left-hand side of conclusion + disjuncts is not the same as the union of the left-hand sides of the premises + φ∨ψ.") - else SCInvalidProof(SCProof(step), Nil, s"Right-hand side of conclusion is not the union of the right-hand sides of the premises.") + } else SCInvalidProof(SCProof(step), Nil, s"Right-hand side of conclusion is not the union of the right-hand sides of the premises.") /* * Γ |- φ, Δ Σ, ψ |- Π * ------------------------ @@ -119,8 +118,8 @@ object SCProofChecker { if (isSameSet(ref(t1).right, b.right)) if ( isSameSet(b.left + phiImpPsi, ref(t1).left + phiIffPsi) || - isSameSet(b.left + psiImpPhi, ref(t1).left + phiIffPsi) || - isSameSet(b.left + phiImpPsi + psiImpPhi, ref(t1).left + phiIffPsi) + isSameSet(b.left + psiImpPhi, ref(t1).left + phiIffPsi) || + isSameSet(b.left + phiImpPsi + psiImpPhi, ref(t1).left + phiIffPsi) ) SCValidProof(SCProof(step)) else SCInvalidProof(SCProof(step), Nil, "Left-hand side of conclusion + φ↔ψ must be same as left-hand side of premise + either φ→ψ, ψ→φ or both.") @@ -202,8 +201,8 @@ object SCProofChecker { if (isSameSet(ref(t1).left, b.left)) if ( isSameSet(b.right + phi, ref(t1).right + phiOrPsi) || - isSameSet(b.right + psi, ref(t1).right + phiOrPsi) || - isSameSet(b.right + phi + psi, ref(t1).right + phiOrPsi) + isSameSet(b.right + psi, ref(t1).right + phiOrPsi) || + isSameSet(b.right + phi + psi, ref(t1).right + phiOrPsi) ) SCValidProof(SCProof(step)) else SCInvalidProof(SCProof(step), Nil, "Right-hand side of conclusion + φ∧ψ must be same as right-hand side of premise + either φ, ψ or both.") @@ -349,7 +348,7 @@ object SCProofChecker { if (isSameSet(b.right, ref(t1).right)) if ( isSameSet(b.left + phi_t_for_f, ref(t1).left ++ sEqT_es + phi_s_for_f) || - isSameSet(b.left + phi_s_for_f, ref(t1).left ++ sEqT_es + phi_t_for_f) + isSameSet(b.left + phi_s_for_f, ref(t1).left ++ sEqT_es + phi_t_for_f) ) SCValidProof(SCProof(step)) else @@ -367,13 +366,13 @@ object SCProofChecker { */ case RightSubstEq(b, t1, equals, lambdaPhi) => val sEqT_es = equals map { case (s, t) => PredicateFormula(equality, Seq(s, t)) } - if (isSameSet(ref(t1).left ++ sEqT_es, b.left)) + if (isSameSet(ref(t1).left ++ sEqT_es, b.left)) { val (s_es, t_es) = equals.unzip val phi_s_for_f = lambdaPhi(s_es) val phi_t_for_f = lambdaPhi(t_es) if ( isSameSet(b.right + phi_s_for_f, ref(t1).right + phi_t_for_f) || - isSameSet(b.right + phi_t_for_f, ref(t1).right + phi_s_for_f) + isSameSet(b.right + phi_t_for_f, ref(t1).right + phi_s_for_f) ) SCValidProof(SCProof(step)) else @@ -382,7 +381,7 @@ object SCProofChecker { Nil, s"Right-hand side of the premise and the conclusion should be the same with each containing one of φ(s_) φ(t_), but it isn't the case." ) - else SCInvalidProof(SCProof(step), Nil, "Left-hand sides of the premise + (s=t)_ must be the same as left-hand side of the premise.") + } else SCInvalidProof(SCProof(step), Nil, "Left-hand sides of the premise + (s=t)_ must be the same as left-hand side of the premise.") /* * Γ, φ(ψ_) |- Δ * --------------------- @@ -464,7 +463,7 @@ object SCProofChecker { case SCSubproof(sp, premises, _) => if (premises.size == sp.imports.size) { - val invalid = premises.zipWithIndex.find((no, p) => !isSameSequent(ref(no), sp.imports(p))) + val invalid = premises.zipWithIndex.find { case (no, p) => !isSameSequent(ref(no), sp.imports(p)) } if (invalid.isEmpty) { checkSCProof(sp) } else @@ -489,12 +488,12 @@ object SCProofChecker { */ def checkSCProof(proof: SCProof): SCProofCheckerJudgement = { val possibleError = proof.steps.view.zipWithIndex - .map((step, no) => + .map { case (step, no) => checkSingleSCStep(no, step, (i: Int) => proof.getSequent(i), Some(proof.imports.size)) match { case SCInvalidProof(_, path, message) => SCInvalidProof(proof, no +: path, message) case SCValidProof(_) => SCValidProof(proof) } - ) + } .find(j => !j.isValid) if (possibleError.isEmpty) SCValidProof(proof) else possibleError.get diff --git a/src/main/scala/lisa/kernel/proof/SequentCalculus.scala b/lisa-kernel/src/main/scala/lisa/kernel/proof/SequentCalculus.scala similarity index 99% rename from src/main/scala/lisa/kernel/proof/SequentCalculus.scala rename to lisa-kernel/src/main/scala/lisa/kernel/proof/SequentCalculus.scala index b0209090..15d677b9 100644 --- a/src/main/scala/lisa/kernel/proof/SequentCalculus.scala +++ b/lisa-kernel/src/main/scala/lisa/kernel/proof/SequentCalculus.scala @@ -1,6 +1,6 @@ package lisa.kernel.proof -import lisa.kernel.fol.FOL.* +import lisa.kernel.fol.FOL._ import scala.collection.immutable.Set diff --git a/src/main/scala/lisa/settheory/AxiomaticSetTheory.scala b/lisa-theories/src/main/scala/lisa/settheory/AxiomaticSetTheory.scala similarity index 100% rename from src/main/scala/lisa/settheory/AxiomaticSetTheory.scala rename to lisa-theories/src/main/scala/lisa/settheory/AxiomaticSetTheory.scala diff --git a/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala similarity index 97% rename from src/main/scala/lisa/settheory/SetTheoryDefinitions.scala rename to lisa-theories/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala index 8ecbc1f4..531076bd 100644 --- a/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala +++ b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala @@ -2,7 +2,7 @@ package lisa.settheory import lisa.kernel.fol.FOL._ import lisa.kernel.proof.RunningTheory -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} /** * Base trait for set theoretical axiom systems. diff --git a/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala similarity index 95% rename from src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala rename to lisa-theories/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala index ec50a161..72e9bbb4 100644 --- a/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala +++ b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala @@ -1,7 +1,7 @@ package lisa.settheory import lisa.kernel.fol.FOL._ -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} /** * Axioms for the Tarski-Grothendieck theory (TG) diff --git a/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala similarity index 97% rename from src/main/scala/lisa/settheory/SetTheoryZAxioms.scala rename to lisa-theories/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala index 4d1dcbad..f38aa7b1 100644 --- a/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala +++ b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala @@ -2,7 +2,7 @@ package lisa.settheory import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} /** * Axioms for the Zermelo theory (Z) diff --git a/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala similarity index 95% rename from src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala rename to lisa-theories/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala index 4cea73f7..fd0d2b67 100644 --- a/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala +++ b/lisa-theories/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala @@ -1,7 +1,7 @@ package lisa.settheory import lisa.kernel.fol.FOL._ -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} /** * Axioms for the Zermelo-Fraenkel theory (ZF) diff --git a/src/main/scala/utilities/tptp/KernelParser.scala b/lisa-tptp/src/main/scala/lisa/tptp/KernelParser.scala similarity index 99% rename from src/main/scala/utilities/tptp/KernelParser.scala rename to lisa-tptp/src/main/scala/lisa/tptp/KernelParser.scala index 215e85d7..df98eeac 100644 --- a/src/main/scala/utilities/tptp/KernelParser.scala +++ b/lisa-tptp/src/main/scala/lisa/tptp/KernelParser.scala @@ -1,4 +1,4 @@ -package utilities.tptp +package lisa.tptp import leo.datastructures.TPTP import leo.datastructures.TPTP.CNF @@ -6,8 +6,8 @@ import leo.datastructures.TPTP.FOF import leo.modules.input.TPTPParser as Parser import lisa.kernel.fol.FOL as K import lisa.kernel.proof.SequentCalculus as LK -import utilities.Helpers.* -import utilities.tptp.* +import lisa.utils.Helpers.* +import lisa.tptp.* import java.io.File import scala.util.matching.Regex diff --git a/src/main/scala/utilities/tptp/ProblemGatherer.scala b/lisa-tptp/src/main/scala/lisa/tptp/ProblemGatherer.scala similarity index 87% rename from src/main/scala/utilities/tptp/ProblemGatherer.scala rename to lisa-tptp/src/main/scala/lisa/tptp/ProblemGatherer.scala index ae1df1fa..8c1278c8 100644 --- a/src/main/scala/utilities/tptp/ProblemGatherer.scala +++ b/lisa-tptp/src/main/scala/lisa/tptp/ProblemGatherer.scala @@ -1,6 +1,6 @@ -package utilities.tptp +package lisa.tptp -import KernelParser._ +import lisa.tptp.KernelParser._ object ProblemGatherer { diff --git a/src/main/scala/utilities/tptp/package.scala b/lisa-tptp/src/main/scala/lisa/tptp/package.scala similarity index 93% rename from src/main/scala/utilities/tptp/package.scala rename to lisa-tptp/src/main/scala/lisa/tptp/package.scala index 538a2f41..b59b6938 100644 --- a/src/main/scala/utilities/tptp/package.scala +++ b/lisa-tptp/src/main/scala/lisa/tptp/package.scala @@ -1,4 +1,4 @@ -package utilities.tptp +package lisa.tptp import lisa.kernel.fol.FOL as K diff --git a/src/main/scala/utilities/Helpers.scala b/lisa-utils/src/main/scala/lisa/utils/Helpers.scala similarity index 71% rename from src/main/scala/utilities/Helpers.scala rename to lisa-utils/src/main/scala/lisa/utils/Helpers.scala index a6964731..0b8f8241 100644 --- a/src/main/scala/utilities/Helpers.scala +++ b/lisa-utils/src/main/scala/lisa/utils/Helpers.scala @@ -1,4 +1,4 @@ -package utilities +package lisa.utils /** * A helper file that provides various syntactic sugars for LISA's FOL and proofs. @@ -7,4 +7,4 @@ package utilities * import utilities.Helpers.* * </pre> */ -object Helpers extends TheoriesHelpers {} +object Helpers extends TheoriesHelpers diff --git a/src/main/scala/utilities/KernelHelpers.scala b/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala similarity index 99% rename from src/main/scala/utilities/KernelHelpers.scala rename to lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala index 5dd3793c..6b378f9f 100644 --- a/src/main/scala/utilities/KernelHelpers.scala +++ b/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala @@ -1,4 +1,4 @@ -package utilities +package lisa.utils import lisa.kernel.proof.RunningTheory import lisa.kernel.proof.RunningTheoryJudgement diff --git a/src/main/scala/utilities/Library.scala b/lisa-utils/src/main/scala/lisa/utils/Library.scala similarity index 99% rename from src/main/scala/utilities/Library.scala rename to lisa-utils/src/main/scala/lisa/utils/Library.scala index 18a5fdad..c882e680 100644 --- a/src/main/scala/utilities/Library.scala +++ b/lisa-utils/src/main/scala/lisa/utils/Library.scala @@ -1,4 +1,4 @@ -package utilities +package lisa.utils import lisa.kernel.proof.RunningTheory @@ -13,7 +13,7 @@ abstract class Library(val theory: RunningTheory) { export lisa.kernel.proof.SequentCalculus.* export lisa.kernel.proof.SCProof as Proof export theory.{Justification, Theorem, Definition, Axiom, PredicateDefinition, FunctionDefinition} - export Helpers.{*, given} + export lisa.utils.Helpers.{*, given} import lisa.kernel.proof.RunningTheoryJudgement as Judgement /** diff --git a/src/main/scala/utilities/Printer.scala b/lisa-utils/src/main/scala/lisa/utils/Printer.scala similarity index 99% rename from src/main/scala/utilities/Printer.scala rename to lisa-utils/src/main/scala/lisa/utils/Printer.scala index c65ae1e7..c19f1266 100644 --- a/src/main/scala/utilities/Printer.scala +++ b/lisa-utils/src/main/scala/lisa/utils/Printer.scala @@ -1,4 +1,4 @@ -package utilities +package lisa.utils import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof diff --git a/src/main/scala/utilities/TheoriesHelpers.scala b/lisa-utils/src/main/scala/lisa/utils/TheoriesHelpers.scala similarity index 99% rename from src/main/scala/utilities/TheoriesHelpers.scala rename to lisa-utils/src/main/scala/lisa/utils/TheoriesHelpers.scala index 6c487530..265bfd7f 100644 --- a/src/main/scala/utilities/TheoriesHelpers.scala +++ b/lisa-utils/src/main/scala/lisa/utils/TheoriesHelpers.scala @@ -1,10 +1,10 @@ -package utilities +package lisa.utils import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheoryJudgement.InvalidJustification import lisa.kernel.proof.SequentCalculus.* import lisa.kernel.proof.* -import utilities.Printer +import lisa.utils.Printer /** * A helper file that provides various syntactic sugars for LISA's FOL and proofs. Best imported through utilities.Helpers diff --git a/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala b/lisa-utils/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala similarity index 99% rename from src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala rename to lisa-utils/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala index c499619e..fe309785 100644 --- a/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala +++ b/lisa-utils/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala @@ -1,10 +1,10 @@ package lisa.kernel -import utilities.Printer +import lisa.utils.Printer import lisa.kernel.fol.FOL import lisa.kernel.fol.FOL.* import org.scalatest.funsuite.AnyFunSuite -import utilities.Helpers.* +import lisa.utils.Helpers.* import scala.collection.MapView import scala.collection.mutable.ArrayBuffer diff --git a/src/test/scala/lisa/kernel/FolTests.scala b/lisa-utils/src/test/scala/lisa/kernel/FolTests.scala similarity index 98% rename from src/test/scala/lisa/kernel/FolTests.scala rename to lisa-utils/src/test/scala/lisa/kernel/FolTests.scala index 42e6caed..f4b12ded 100644 --- a/src/test/scala/lisa/kernel/FolTests.scala +++ b/lisa-utils/src/test/scala/lisa/kernel/FolTests.scala @@ -1,6 +1,6 @@ package lisa.kernel -import utilities.Printer +import lisa.utils.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory import lisa.kernel.proof.RunningTheory.* @@ -8,7 +8,7 @@ import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker import lisa.kernel.proof.SequentCalculus.* import org.scalatest.funsuite.AnyFunSuite -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} import scala.collection.immutable.SortedSet import scala.util.Random diff --git a/src/test/scala/lisa/kernel/IncorrectProofsTests.scala b/lisa-utils/src/test/scala/lisa/kernel/IncorrectProofsTests.scala similarity index 92% rename from src/test/scala/lisa/kernel/IncorrectProofsTests.scala rename to lisa-utils/src/test/scala/lisa/kernel/IncorrectProofsTests.scala index 3d7aa18b..786e63ad 100644 --- a/src/test/scala/lisa/kernel/IncorrectProofsTests.scala +++ b/lisa-utils/src/test/scala/lisa/kernel/IncorrectProofsTests.scala @@ -1,11 +1,10 @@ package lisa.kernel -//import lisa.settheory.AxiomaticSetTheory.{emptySet, emptySetAxiom, pair, pairAxiom, useAxiom} import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* -import test.ProofCheckerSuite -import utilities.Helpers.* +import lisa.test.ProofCheckerSuite +import lisa.utils.Helpers.* import scala.collection.immutable.SortedSet import scala.language.implicitConversions @@ -23,9 +22,6 @@ class IncorrectProofsTests extends ProofCheckerSuite { val g = PredicateFormula(gl, Seq.empty) val h = PredicateFormula(hl, Seq.empty) - val emptySetAxiom = lisa.settheory.AxiomaticSetTheory.emptySetAxiom - val pairAxiom = lisa.settheory.AxiomaticSetTheory.pairAxiom - val incorrectProofs: Seq[SCProof] = List( SCProof( Hypothesis(emptySeq +< (x === x) +> (x === x), x === x), diff --git a/src/test/scala/lisa/kernel/ProofTests.scala b/lisa-utils/src/test/scala/lisa/kernel/ProofTests.scala similarity index 97% rename from src/test/scala/lisa/kernel/ProofTests.scala rename to lisa-utils/src/test/scala/lisa/kernel/ProofTests.scala index d5704b08..85f9210f 100644 --- a/src/test/scala/lisa/kernel/ProofTests.scala +++ b/lisa-utils/src/test/scala/lisa/kernel/ProofTests.scala @@ -1,6 +1,6 @@ package lisa.kernel -import utilities.Printer +import lisa.utils.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory import lisa.kernel.proof.RunningTheory.* @@ -8,7 +8,7 @@ import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker import lisa.kernel.proof.SequentCalculus.* import org.scalatest.funsuite.AnyFunSuite -import utilities.Helpers.{_, given} +import lisa.utils.Helpers.{_, given} import scala.util.Random diff --git a/src/test/scala/test/ProofCheckerSuite.scala b/lisa-utils/src/test/scala/lisa/test/ProofCheckerSuite.scala similarity index 90% rename from src/test/scala/test/ProofCheckerSuite.scala rename to lisa-utils/src/test/scala/lisa/test/ProofCheckerSuite.scala index caaee39f..dcb4fa26 100644 --- a/src/test/scala/test/ProofCheckerSuite.scala +++ b/lisa-utils/src/test/scala/lisa/test/ProofCheckerSuite.scala @@ -1,14 +1,12 @@ -package test +package lisa.test -import utilities.Printer +import lisa.utils.Printer import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker._ import lisa.kernel.proof.SequentCalculus.Sequent import lisa.kernel.proof.SequentCalculus.isSameSequent -import lisa.settheory.AxiomaticSetTheory import org.scalatest.funsuite.AnyFunSuite -import utilities.Helpers._ -import utilities.Helpers.given_Conversion_Boolean_List_String_Option +import lisa.utils.Helpers.{_, given} abstract class ProofCheckerSuite extends AnyFunSuite { import lisa.kernel.fol.FOL.* @@ -37,7 +35,6 @@ abstract class ProofCheckerSuite extends AnyFunSuite { protected val (sl, tl, ul, vl) = (VariableLabel("s"), VariableLabel("t"), VariableLabel("u"), VariableLabel("v")) protected val (s, t, u, v) = (VariableTerm(sl), VariableTerm(tl), VariableTerm(ul), VariableTerm(vl)) - val axioms = AxiomaticSetTheory.axioms def checkProof(proof: SCProof): Unit = { val judgement = checkSCProof(proof) println(Printer.prettySCProof(judgement)) diff --git a/src/test/scala/lisa/kernel/PrinterTest.scala b/lisa-utils/src/test/scala/lisa/utils/PrinterTest.scala similarity index 98% rename from src/test/scala/lisa/kernel/PrinterTest.scala rename to lisa-utils/src/test/scala/lisa/utils/PrinterTest.scala index 67e91f29..e2675436 100644 --- a/src/test/scala/lisa/kernel/PrinterTest.scala +++ b/lisa-utils/src/test/scala/lisa/utils/PrinterTest.scala @@ -1,6 +1,6 @@ -package lisa.kernel +package lisa.utils -import utilities.Printer._ +import lisa.utils.Printer._ import lisa.kernel.fol.FOL._ import org.scalatest.funsuite.AnyFunSuite diff --git a/src/main/scala/proven/Main.scala b/src/main/scala/lisa/proven/Main.scala similarity index 89% rename from src/main/scala/proven/Main.scala rename to src/main/scala/lisa/proven/Main.scala index 7ee72a6e..e69a7102 100644 --- a/src/main/scala/proven/Main.scala +++ b/src/main/scala/lisa/proven/Main.scala @@ -1,10 +1,10 @@ -package proven +package lisa.proven /** * The parent trait of all theory files containing mathematical development */ trait Main { - export proven.SetTheoryLibrary.{*, given} + export lisa.proven.SetTheoryLibrary.{*, given} private val realOutput: String => Unit = println private var outString: List[String] = List() diff --git a/src/main/scala/proven/SetTheoryLibrary.scala b/src/main/scala/lisa/proven/SetTheoryLibrary.scala similarity index 69% rename from src/main/scala/proven/SetTheoryLibrary.scala rename to src/main/scala/lisa/proven/SetTheoryLibrary.scala index fd9e5250..8045393e 100644 --- a/src/main/scala/proven/SetTheoryLibrary.scala +++ b/src/main/scala/lisa/proven/SetTheoryLibrary.scala @@ -1,9 +1,9 @@ -package proven +package lisa.proven /** * Specific implementation of [[utilities.Library]] for Set Theory, with a RunningTheory that is supposed to be used by the standard library. */ -object SetTheoryLibrary extends utilities.Library(lisa.settheory.AxiomaticSetTheory.runningSetTheory) { +object SetTheoryLibrary extends lisa.utils.Library(lisa.settheory.AxiomaticSetTheory.runningSetTheory) { val AxiomaticSetTheory: lisa.settheory.AxiomaticSetTheory.type = lisa.settheory.AxiomaticSetTheory export AxiomaticSetTheory.* diff --git a/src/main/scala/proven/mathematics/Mapping.scala b/src/main/scala/lisa/proven/mathematics/Mapping.scala similarity index 99% rename from src/main/scala/proven/mathematics/Mapping.scala rename to src/main/scala/lisa/proven/mathematics/Mapping.scala index ec687340..7267e0c7 100644 --- a/src/main/scala/proven/mathematics/Mapping.scala +++ b/src/main/scala/lisa/proven/mathematics/Mapping.scala @@ -1,7 +1,7 @@ -package proven.mathematics +package lisa.proven.mathematics -import proven.tactics.Destructors.* -import proven.tactics.ProofTactics.* +import lisa.proven.tactics.Destructors.* +import lisa.proven.tactics.ProofTactics.* import SetTheory.* @@ -9,7 +9,7 @@ import SetTheory.* * This file contains theorem related to the replacement schema, i.e. how to "map" a set through a functional symbol. * Leads to the definition of the cartesian product. */ -object Mapping extends proven.Main { +object Mapping extends lisa.proven.Main { THEOREM("functionalMapping") of "∀a. (a ∈ ?A) ⇒ ∃!x. ?phi(x, a) ⊢ ∃!X. ∀x. (x ∈ X) ↔ ∃a. (a ∈ ?A) ∧ ?phi(x, a)" PROOF { diff --git a/src/main/scala/proven/mathematics/SetTheory.scala b/src/main/scala/lisa/proven/mathematics/SetTheory.scala similarity index 99% rename from src/main/scala/proven/mathematics/SetTheory.scala rename to src/main/scala/lisa/proven/mathematics/SetTheory.scala index add21cfe..22822eb7 100644 --- a/src/main/scala/proven/mathematics/SetTheory.scala +++ b/src/main/scala/lisa/proven/mathematics/SetTheory.scala @@ -1,12 +1,12 @@ -package proven.mathematics +package lisa.proven.mathematics -import proven.tactics.Destructors.* -import proven.tactics.ProofTactics.* +import lisa.proven.tactics.Destructors.* +import lisa.proven.tactics.ProofTactics.* /** * An embryo of mathematical development, containing a few example theorems and the definition of the ordered pair. */ -object SetTheory extends proven.Main { +object SetTheory extends lisa.proven.Main { THEOREM("russelParadox") of "∀x. (x ∈ ?y) ↔ ¬(x ∈ x) ⊢" PROOF { val y = SchematicFunctionLabel("y", 0) diff --git a/src/main/scala/proven/tactics/Destructors.scala b/src/main/scala/lisa/proven/tactics/Destructors.scala similarity index 92% rename from src/main/scala/proven/tactics/Destructors.scala rename to src/main/scala/lisa/proven/tactics/Destructors.scala index 39f2c6cd..f7b978dd 100644 --- a/src/main/scala/proven/tactics/Destructors.scala +++ b/src/main/scala/lisa/proven/tactics/Destructors.scala @@ -1,11 +1,11 @@ -package proven.tactics +package lisa.proven.tactics import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* import lisa.kernel.proof.SequentCalculus.* -import proven.tactics.ProofTactics.hypothesis -import utilities.Helpers.* +import lisa.proven.tactics.ProofTactics.hypothesis +import lisa.utils.Helpers.* object Destructors { def destructRightOr(p: SCProof, a: Formula, b: Formula): SCProof = { diff --git a/src/main/scala/proven/tactics/ProofTactics.scala b/src/main/scala/lisa/proven/tactics/ProofTactics.scala similarity index 98% rename from src/main/scala/proven/tactics/ProofTactics.scala rename to src/main/scala/lisa/proven/tactics/ProofTactics.scala index dde13d44..3567982a 100644 --- a/src/main/scala/proven/tactics/ProofTactics.scala +++ b/src/main/scala/lisa/proven/tactics/ProofTactics.scala @@ -1,10 +1,10 @@ -package proven.tactics +package lisa.proven.tactics +import lisa.utils.Printer.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* -import utilities.Helpers.{_, given} -import utilities.Printer.* +import lisa.utils.Helpers.{_, given} import scala.collection.immutable.Set diff --git a/src/main/scala/proven/tactics/SimplePropositionalSolver.scala b/src/main/scala/lisa/proven/tactics/SimplePropositionalSolver.scala similarity index 99% rename from src/main/scala/proven/tactics/SimplePropositionalSolver.scala rename to src/main/scala/lisa/proven/tactics/SimplePropositionalSolver.scala index 69e75d73..a38c006e 100644 --- a/src/main/scala/proven/tactics/SimplePropositionalSolver.scala +++ b/src/main/scala/lisa/proven/tactics/SimplePropositionalSolver.scala @@ -1,9 +1,9 @@ -package proven.tactics +package lisa.proven.tactics import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* -import utilities.Helpers.* +import lisa.utils.Helpers.* import scala.collection.mutable.Set as mSet diff --git a/src/test/scala/lisa/proven/InitialProofsTests.scala b/src/test/scala/lisa/proven/InitialProofsTests.scala index 331a3f44..c9873cdc 100644 --- a/src/test/scala/lisa/proven/InitialProofsTests.scala +++ b/src/test/scala/lisa/proven/InitialProofsTests.scala @@ -1,18 +1,18 @@ package lisa.proven -import utilities.Printer -import test.ProofCheckerSuite +import lisa.utils.Printer +import lisa.test.ProofCheckerSuite class InitialProofsTests extends ProofCheckerSuite { - import proven.SetTheoryLibrary.* + import lisa.proven.SetTheoryLibrary.* test("File SetTheory initialize well") { - proven.mathematics.SetTheory + lisa.proven.mathematics.SetTheory succeed } test("File Mapping initialize well") { - proven.mathematics.Mapping + lisa.proven.mathematics.Mapping succeed } diff --git a/src/test/scala/lisa/proven/SimpleProverTests.scala b/src/test/scala/lisa/proven/SimpleProverTests.scala index 8598562a..57599edf 100644 --- a/src/test/scala/lisa/proven/SimpleProverTests.scala +++ b/src/test/scala/lisa/proven/SimpleProverTests.scala @@ -1,16 +1,16 @@ package lisa.proven -import utilities.Printer -import utilities.Printer.* +import lisa.utils.Printer +import lisa.utils.Printer.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory import lisa.kernel.proof.RunningTheory.PredicateLogic import lisa.kernel.proof.SCProofChecker import org.scalatest.funsuite.AnyFunSuite -import proven.tactics.SimplePropositionalSolver as SPS -import utilities.Helpers.* -import utilities.tptp.KernelParser.* -import utilities.tptp.ProblemGatherer.getPRPproblems +import lisa.proven.tactics.SimplePropositionalSolver as SPS +import lisa.utils.Helpers.* +import lisa.tptp.KernelParser.* +import lisa.tptp.ProblemGatherer.getPRPproblems class SimpleProverTests extends AnyFunSuite { -- GitLab