From 7121b9e4d2ed2cfd95ffcb45536fda3708f0e351 Mon Sep 17 00:00:00 2001 From: SimonGuilloud <sim-guilloud@bluewin.ch> Date: Thu, 9 Jun 2022 16:29:13 +0200 Subject: [PATCH] refactoring --- src/main/scala/Example.scala | 7 ++++--- .../scala/lisa/kernel/proof/Judgement.scala | 2 +- .../lisa/settheory/SetTheoryDefinitions.scala | 2 +- .../lisa/settheory/SetTheoryTGAxioms.scala | 2 +- .../scala/lisa/settheory/SetTheoryZAxioms.scala | 2 +- .../lisa/settheory/SetTheoryZFAxioms.scala | 2 +- src/main/scala/proven/DSetTheory/Part1.scala | 2 +- src/main/scala/proven/ElementsOfSetTheory.scala | 9 ++++++++- src/main/scala/proven/tactics/Destructors.scala | 4 +++- .../scala/proven/tactics/ProofTactics.scala | 3 ++- .../tactics/SimplePropositionalSolver.scala | 3 ++- .../{lisa => utilities}/KernelHelpers.scala | 4 ++-- .../{ => utilities}/tptp/KernelParser.scala | 17 ++++++----------- .../{ => utilities}/tptp/ProblemGatherer.scala | 4 ++-- src/main/scala/utilities/tptp/package.scala | 9 +++++++++ .../lisa/kernel/EquivalenceCheckerTests.scala | 2 +- src/test/scala/lisa/kernel/FolTests.scala | 2 +- .../lisa/kernel/IncorrectProofsTests.scala | 2 +- src/test/scala/lisa/kernel/ProofTests.scala | 2 +- .../lisa/proven/ElementsOfSetTheoryTests.scala | 3 ++- .../scala/lisa/proven/SimpleProverTests.scala | 6 +++--- src/test/scala/test/ProofCheckerSuite.scala | 5 +++-- 22 files changed, 56 insertions(+), 38 deletions(-) rename src/main/scala/{lisa => utilities}/KernelHelpers.scala (99%) rename src/main/scala/{ => utilities}/tptp/KernelParser.scala (94%) rename src/main/scala/{ => utilities}/tptp/ProblemGatherer.scala (89%) create mode 100644 src/main/scala/utilities/tptp/package.scala diff --git a/src/main/scala/Example.scala b/src/main/scala/Example.scala index 6d4eb4ce..8e7eb102 100644 --- a/src/main/scala/Example.scala +++ b/src/main/scala/Example.scala @@ -1,4 +1,7 @@ -import lisa.KernelHelpers.{_, given} +import utilities.KernelHelpers.{_, given} +import utilities.tptp.ProblemGatherer.* +import utilities.tptp.KernelParser.* +import utilities.tptp.* import lisa.kernel.Printer.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof @@ -6,8 +9,6 @@ import lisa.kernel.proof.SCProofChecker import lisa.kernel.proof.SCProofChecker.* import lisa.kernel.proof.SequentCalculus.* import proven.tactics.SimplePropositionalSolver.solveSequent -import tptp.KernelParser.* -import tptp.ProblemGatherer.getPRPproblems /** * Discover some of the elements of LISA to get started. diff --git a/src/main/scala/lisa/kernel/proof/Judgement.scala b/src/main/scala/lisa/kernel/proof/Judgement.scala index 6d3abfb7..680d70b4 100644 --- a/src/main/scala/lisa/kernel/proof/Judgement.scala +++ b/src/main/scala/lisa/kernel/proof/Judgement.scala @@ -53,7 +53,7 @@ sealed abstract class RunningTheoryJudgement[J <: RunningTheory#Justification] { def get: J = this match { case ValidJustification(just) => just case InvalidJustification(message, error) => - throw new InvalidJustificationException(message, error) + throw InvalidJustificationException(message, error) } } diff --git a/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala b/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala index a2f3b2b7..3f630ed2 100644 --- a/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala +++ b/src/main/scala/lisa/settheory/SetTheoryDefinitions.scala @@ -1,8 +1,8 @@ package lisa.settheory -import lisa.KernelHelpers.{_, given} import lisa.kernel.fol.FOL._ import lisa.kernel.proof.RunningTheory +import utilities.KernelHelpers.{given, _} /** * Base trait for set theoretical axiom systems. diff --git a/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala b/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala index c2bedfa3..12fcff5c 100644 --- a/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala +++ b/src/main/scala/lisa/settheory/SetTheoryTGAxioms.scala @@ -1,6 +1,6 @@ package lisa.settheory -import lisa.KernelHelpers.{_, given} import lisa.kernel.fol.FOL._ +import utilities.KernelHelpers.{given, _} /** * Axioms for the Tarski-Grothendieck theory (TG) diff --git a/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala b/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala index 7c7a7d22..da11ebd9 100644 --- a/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala +++ b/src/main/scala/lisa/settheory/SetTheoryZAxioms.scala @@ -1,8 +1,8 @@ package lisa.settheory -import lisa.KernelHelpers.{_, given} import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory +import utilities.KernelHelpers.{given, _} /** * Axioms for the Zermelo theory (Z) diff --git a/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala b/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala index e3648b7e..24271f81 100644 --- a/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala +++ b/src/main/scala/lisa/settheory/SetTheoryZFAxioms.scala @@ -1,7 +1,7 @@ package lisa.settheory -import lisa.KernelHelpers.{_, given} import lisa.kernel.fol.FOL._ +import utilities.KernelHelpers.{given, _} /** * Axioms for the Zermelo-Fraenkel theory (ZF) diff --git a/src/main/scala/proven/DSetTheory/Part1.scala b/src/main/scala/proven/DSetTheory/Part1.scala index b82f09ff..4a8b0fb2 100644 --- a/src/main/scala/proven/DSetTheory/Part1.scala +++ b/src/main/scala/proven/DSetTheory/Part1.scala @@ -1,5 +1,5 @@ package proven.DSetTheory -import lisa.KernelHelpers.{_, given} +import utilities.KernelHelpers.{_, given} import lisa.kernel.Printer import lisa.kernel.Printer.prettyFormula import lisa.kernel.Printer.prettySCProof diff --git a/src/main/scala/proven/ElementsOfSetTheory.scala b/src/main/scala/proven/ElementsOfSetTheory.scala index 52934b10..11aaa022 100644 --- a/src/main/scala/proven/ElementsOfSetTheory.scala +++ b/src/main/scala/proven/ElementsOfSetTheory.scala @@ -1,10 +1,17 @@ package proven -import lisa.KernelHelpers.{_, given} import lisa.kernel.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker import lisa.kernel.proof.SequentCalculus.* +import utilities.KernelHelpers.{*, given} +import lisa.kernel.Printer +import proven.tactics.ProofTactics.* +import proven.tactics.Destructors.* +import lisa.settheory.AxiomaticSetTheory.* + +import scala.collection.immutable.SortedSet +import lisa.kernel.proof.{SCProof, SCProofChecker} import lisa.settheory.AxiomaticSetTheory import lisa.settheory.AxiomaticSetTheory.* import proven.ElementsOfSetTheory.theory diff --git a/src/main/scala/proven/tactics/Destructors.scala b/src/main/scala/proven/tactics/Destructors.scala index 36f53f3f..396c6caa 100644 --- a/src/main/scala/proven/tactics/Destructors.scala +++ b/src/main/scala/proven/tactics/Destructors.scala @@ -1,7 +1,9 @@ package proven.tactics -import lisa.KernelHelpers.* +import lisa.kernel.proof.SequentCalculus.* import lisa.kernel.fol.FOL.* +import utilities.KernelHelpers.* +import proven.tactics.ProofTactics.hypothesis import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* import proven.tactics.ProofTactics.hypothesis diff --git a/src/main/scala/proven/tactics/ProofTactics.scala b/src/main/scala/proven/tactics/ProofTactics.scala index 191e77a1..bd90e0a7 100644 --- a/src/main/scala/proven/tactics/ProofTactics.scala +++ b/src/main/scala/proven/tactics/ProofTactics.scala @@ -1,10 +1,11 @@ package proven.tactics -import lisa.KernelHelpers.{_, given} import lisa.kernel.Printer.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* +import utilities.KernelHelpers.{*, given} +import lisa.kernel.Printer.* import scala.collection.immutable.Set diff --git a/src/main/scala/proven/tactics/SimplePropositionalSolver.scala b/src/main/scala/proven/tactics/SimplePropositionalSolver.scala index 50d87de5..87b85b60 100644 --- a/src/main/scala/proven/tactics/SimplePropositionalSolver.scala +++ b/src/main/scala/proven/tactics/SimplePropositionalSolver.scala @@ -1,11 +1,12 @@ package proven.tactics -import lisa.KernelHelpers.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* import scala.collection.mutable.Set as mSet +import utilities.KernelHelpers.* +import lisa.kernel.proof.SCProof /** * A simple but complete solver for propositional logic. Will not terminate for large problems diff --git a/src/main/scala/lisa/KernelHelpers.scala b/src/main/scala/utilities/KernelHelpers.scala similarity index 99% rename from src/main/scala/lisa/KernelHelpers.scala rename to src/main/scala/utilities/KernelHelpers.scala index 90be4463..b55795ff 100644 --- a/src/main/scala/lisa/KernelHelpers.scala +++ b/src/main/scala/utilities/KernelHelpers.scala @@ -1,4 +1,4 @@ -package lisa +package utilities /** * A helper file that provides various syntactic sugars for LISA. @@ -9,8 +9,8 @@ package lisa */ object KernelHelpers { - import lisa.kernel.proof.SequentCalculus.Sequent import lisa.kernel.fol.FOL.* + import lisa.kernel.proof.SequentCalculus.Sequent /* Prefix syntax */ diff --git a/src/main/scala/tptp/KernelParser.scala b/src/main/scala/utilities/tptp/KernelParser.scala similarity index 94% rename from src/main/scala/tptp/KernelParser.scala rename to src/main/scala/utilities/tptp/KernelParser.scala index 149453e3..036242c5 100644 --- a/src/main/scala/tptp/KernelParser.scala +++ b/src/main/scala/utilities/tptp/KernelParser.scala @@ -1,12 +1,13 @@ -package tptp +package utilities.tptp import leo.datastructures.TPTP import leo.datastructures.TPTP.CNF import leo.datastructures.TPTP.FOF +import utilities.tptp.* import leo.modules.input.TPTPParser as Parser -import lisa.KernelHelpers.* import lisa.kernel.fol.FOL as K -import lisa.kernel.proof.SequentCalculus as SK +import lisa.kernel.proof.SequentCalculus as LK +import utilities.KernelHelpers.* import java.io.File import scala.util.matching.Regex @@ -15,12 +16,6 @@ import Parser.TPTPParseException object KernelParser { - case class AnnotatedFormula(role: String, name: String, formula: K.Formula) - - case class Problem(file: String, domain: String, name: String, status: String, spc: Seq[String], formulas: Seq[AnnotatedFormula]) - - case class FileNotAcceptedException(msg: String, file: String) extends Exception(msg + " File: " + file) - private case class ProblemMetadata(file: String, domain: String, problem: String, status: String, spc: Seq[String]) /** @@ -152,10 +147,10 @@ object KernelParser { * @param problem a problem, containing a list of annotated formulas from a tptp file * @return a sequent with axioms of the problem on the left, and the conjecture on the right */ - def problemToSequent(problem: Problem): SK.Sequent = { + def problemToSequent(problem: Problem): LK.Sequent = { if (problem.spc.contains("CNF")) problem.formulas.map(_.formula) |- () else - problem.formulas.foldLeft[SK.Sequent](() |- ())((s, f) => + problem.formulas.foldLeft[LK.Sequent](() |- ())((s, f) => if (f._1 == "axiom") s +< f._3 else if (f._1 == "conjecture" && s.right.isEmpty) s +> f._3 else throw Exception("Can only agglomerate axioms and one conjecture into a sequents") diff --git a/src/main/scala/tptp/ProblemGatherer.scala b/src/main/scala/utilities/tptp/ProblemGatherer.scala similarity index 89% rename from src/main/scala/tptp/ProblemGatherer.scala rename to src/main/scala/utilities/tptp/ProblemGatherer.scala index 41644e14..ae1df1fa 100644 --- a/src/main/scala/tptp/ProblemGatherer.scala +++ b/src/main/scala/utilities/tptp/ProblemGatherer.scala @@ -1,6 +1,6 @@ -package tptp +package utilities.tptp -import tptp.KernelParser._ +import KernelParser._ object ProblemGatherer { diff --git a/src/main/scala/utilities/tptp/package.scala b/src/main/scala/utilities/tptp/package.scala new file mode 100644 index 00000000..538a2f41 --- /dev/null +++ b/src/main/scala/utilities/tptp/package.scala @@ -0,0 +1,9 @@ +package utilities.tptp + +import lisa.kernel.fol.FOL as K + +case class AnnotatedFormula(role: String, name: String, formula: K.Formula) + +case class Problem(file: String, domain: String, name: String, status: String, spc: Seq[String], formulas: Seq[AnnotatedFormula]) + +case class FileNotAcceptedException(msg: String, file: String) extends Exception(msg + " File: " + file) diff --git a/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala b/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala index f8ee2a8c..518ce3f9 100644 --- a/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala +++ b/src/test/scala/lisa/kernel/EquivalenceCheckerTests.scala @@ -1,6 +1,6 @@ package lisa.kernel -import lisa.KernelHelpers.* +import utilities.KernelHelpers.* import lisa.kernel.Printer import lisa.kernel.fol.FOL import lisa.kernel.fol.FOL.* diff --git a/src/test/scala/lisa/kernel/FolTests.scala b/src/test/scala/lisa/kernel/FolTests.scala index 8f02688c..615d58e1 100644 --- a/src/test/scala/lisa/kernel/FolTests.scala +++ b/src/test/scala/lisa/kernel/FolTests.scala @@ -1,6 +1,6 @@ package lisa.kernel -import lisa.KernelHelpers.{_, given} +import utilities.KernelHelpers.{_, given} import lisa.kernel.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory diff --git a/src/test/scala/lisa/kernel/IncorrectProofsTests.scala b/src/test/scala/lisa/kernel/IncorrectProofsTests.scala index 9259274b..213336b6 100644 --- a/src/test/scala/lisa/kernel/IncorrectProofsTests.scala +++ b/src/test/scala/lisa/kernel/IncorrectProofsTests.scala @@ -1,7 +1,7 @@ package lisa.kernel //import lisa.settheory.AxiomaticSetTheory.{emptySet, emptySetAxiom, pair, pairAxiom, useAxiom} -import lisa.KernelHelpers.* +import utilities.KernelHelpers.* import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.* diff --git a/src/test/scala/lisa/kernel/ProofTests.scala b/src/test/scala/lisa/kernel/ProofTests.scala index 07b5a3a0..b1324337 100644 --- a/src/test/scala/lisa/kernel/ProofTests.scala +++ b/src/test/scala/lisa/kernel/ProofTests.scala @@ -1,6 +1,6 @@ package lisa.kernel -import lisa.KernelHelpers.{_, given} +import utilities.KernelHelpers.{_, given} import lisa.kernel.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.RunningTheory diff --git a/src/test/scala/lisa/proven/ElementsOfSetTheoryTests.scala b/src/test/scala/lisa/proven/ElementsOfSetTheoryTests.scala index 98ade22d..fde50ed0 100644 --- a/src/test/scala/lisa/proven/ElementsOfSetTheoryTests.scala +++ b/src/test/scala/lisa/proven/ElementsOfSetTheoryTests.scala @@ -1,10 +1,11 @@ package proven -import lisa.KernelHelpers.{_, given} import lisa.kernel.Printer import lisa.kernel.fol.FOL.* import lisa.kernel.proof.SCProof import lisa.kernel.proof.SequentCalculus.Sequent +import lisa.kernel.fol.FOL.* +import utilities.KernelHelpers.{*, given} import lisa.kernel.proof.SequentCalculus.* import lisa.settheory.AxiomaticSetTheory.* import proven.ElementsOfSetTheory.* diff --git a/src/test/scala/lisa/proven/SimpleProverTests.scala b/src/test/scala/lisa/proven/SimpleProverTests.scala index 9731249f..05bd4c4a 100644 --- a/src/test/scala/lisa/proven/SimpleProverTests.scala +++ b/src/test/scala/lisa/proven/SimpleProverTests.scala @@ -1,6 +1,6 @@ package proven -import lisa.KernelHelpers.* +import utilities.KernelHelpers.* import lisa.kernel.Printer import lisa.kernel.Printer.* import lisa.kernel.fol.FOL.* @@ -8,9 +8,9 @@ import lisa.kernel.proof.RunningTheory import lisa.kernel.proof.RunningTheory.PredicateLogic import lisa.kernel.proof.SCProofChecker import org.scalatest.funsuite.AnyFunSuite +import utilities.tptp.ProblemGatherer.getPRPproblems +import utilities.tptp.KernelParser.* import proven.tactics.SimplePropositionalSolver as SPS -import tptp.KernelParser.* -import tptp.ProblemGatherer.getPRPproblems class SimpleProverTests extends AnyFunSuite { diff --git a/src/test/scala/test/ProofCheckerSuite.scala b/src/test/scala/test/ProofCheckerSuite.scala index 8a596186..08d91983 100644 --- a/src/test/scala/test/ProofCheckerSuite.scala +++ b/src/test/scala/test/ProofCheckerSuite.scala @@ -1,7 +1,5 @@ package test -import lisa.KernelHelpers._ -import lisa.KernelHelpers.given_Conversion_Boolean_List_String_Option import lisa.kernel.Printer import lisa.kernel.proof.SCProof import lisa.kernel.proof.SCProofChecker._ @@ -9,6 +7,9 @@ import lisa.kernel.proof.SequentCalculus.Sequent import lisa.kernel.proof.SequentCalculus.isSameSequent import lisa.settheory.AxiomaticSetTheory import org.scalatest.funsuite.AnyFunSuite +import lisa.kernel.proof.SCProof +import utilities.KernelHelpers._ +import utilities.KernelHelpers.given_Conversion_Boolean_List_String_Option abstract class ProofCheckerSuite extends AnyFunSuite { import lisa.kernel.fol.FOL.* -- GitLab