From 32d5be76baaddb6047e64b8bb98a41ca61489ca1 Mon Sep 17 00:00:00 2001 From: Sankalp Gambhir <sankalp.gambhir47@gmail.com> Date: Wed, 6 Dec 2023 16:36:27 +0100 Subject: [PATCH] Upgrade to Scala 3.3.1 (#197) * Upgrade to 3.3.1 disabling pattern matching checks * Fixes for build * scalafix * Fix reference to kernel formula * File changes --- CHANGES.md | 6 +++++ build.sbt | 12 +++++++-- .../scala/lisa/automation/CommonTactics.scala | 25 ++++++++++--------- .../maths/settheory/orderings/Induction.scala | 2 +- .../maths/settheory/orderings/Recursion.scala | 2 +- .../maths/settheory/orderings/Segments.scala | 2 +- .../scala/lisa/prooflib/WithTheorems.scala | 15 ++++++----- 7 files changed, 41 insertions(+), 23 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 64137c56..b054dda8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Change List +## 2023-12-06 +Upgrade to Scala 3.3.1 + +- the `Proof` class has been temporarily unsealed, till [lampepfl/dotty#19031](https://github.com/lampepfl/dotty/issues/19031) / [epfl-lara/lisa#190](https://github.com/epfl-lara/lisa/issues/190) is fixed +- minor fixes to address compilation errors, mostly involving explicitly specifying types or implicits in some places. + ## 2023-12-02 Creation of the present Change Liste, going back to October 2023 diff --git a/build.sbt b/build.sbt index 23635146..8178b559 100644 --- a/build.sbt +++ b/build.sbt @@ -26,7 +26,7 @@ val commonSettings = Seq( val scala2 = "2.13.8" -val scala3 = "3.2.2" +val scala3 = "3.3.1" val commonSettings2 = commonSettings ++ Seq( scalaVersion := scala2, @@ -94,7 +94,15 @@ lazy val utils = Project( .dependsOn(scallion % "compile->compile") .settings(libraryDependencies += "io.github.leoprover" % "scala-tptp-parser_2.13" % "1.4") - +ThisBuild / assemblyMergeStrategy := { + case PathList("module-info.class") => MergeStrategy.discard + case x if x.endsWith("/module-info.class") => MergeStrategy.discard + case x if x.endsWith(".class") => MergeStrategy.first + case x if x.endsWith(".tasty") => MergeStrategy.first + case x => + val oldStrategy = (ThisBuild / assemblyMergeStrategy).value + oldStrategy(x) +} lazy val examples = Project( diff --git a/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala b/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala index 6de053d7..3ecd56b4 100644 --- a/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala +++ b/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala @@ -143,18 +143,19 @@ object CommonTactics { case Some(value: lib.FunctionDefinition[?]) => value case _ => return proof.InvalidProofTactic("Could not get definition of function.") } - val method = expr.f.substituteUnsafe(expr.vars.zip(xs).toMap) match { - case F.AppliedConnector( - F.And, - Seq( - F.AppliedConnector(F.Implies, Seq(a, _)), - F.AppliedConnector(F.Implies, Seq(b, _)) - ) - ) if F.isSame(F.Neg(a), b) => - conditional - - case _ => unconditional - } + val method: (F.ConstantFunctionLabel[?], proof.Fact) => Seq[F.Term] => F.Sequent => proof.ProofTacticJudgement = + expr.f.substituteUnsafe(expr.vars.zip(xs).toMap) match { + case F.AppliedConnector( + F.And, + Seq( + F.AppliedConnector(F.Implies, Seq(a, _)), + F.AppliedConnector(F.Implies, Seq(b, _)) + ) + ) if F.isSame(F.Neg(a), b) => + conditional(using lib, proof) + + case _ => unconditional(using lib, proof) + } method(f, uniqueness)(xs)(bot) } diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Induction.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Induction.scala index e57c0683..b43484c7 100644 --- a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Induction.scala +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Induction.scala @@ -4,7 +4,7 @@ import lisa.automation.settheory.SetTheoryTactics.* import lisa.maths.Quantifiers.* import lisa.maths.settheory.SetTheory.* import lisa.maths.settheory.orderings.InclusionOrders.* -import lisa.maths.settheory.orderings.Ordinals.* +import Ordinals.* import lisa.maths.settheory.orderings.PartialOrders.* import lisa.maths.settheory.orderings.Segments.* import lisa.maths.settheory.orderings.WellOrders.* diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Recursion.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Recursion.scala index 6182209b..60af52ff 100644 --- a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Recursion.scala +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Recursion.scala @@ -5,7 +5,7 @@ import lisa.maths.Quantifiers.* import lisa.maths.settheory.SetTheory.* import lisa.maths.settheory.orderings.InclusionOrders.* import lisa.maths.settheory.orderings.Induction.* -import lisa.maths.settheory.orderings.Ordinals.* +import Ordinals.* import lisa.maths.settheory.orderings.PartialOrders.* import lisa.maths.settheory.orderings.Segments.* import lisa.maths.settheory.orderings.WellOrders.* diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Segments.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Segments.scala index 0ecd5aae..877ad459 100644 --- a/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Segments.scala +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/orderings/Segments.scala @@ -4,7 +4,7 @@ import lisa.automation.settheory.SetTheoryTactics.* import lisa.maths.Quantifiers.* import lisa.maths.settheory.SetTheory.* import lisa.maths.settheory.orderings.InclusionOrders.* -import lisa.maths.settheory.orderings.Ordinals.* +import Ordinals.* import lisa.maths.settheory.orderings.PartialOrders.* import lisa.maths.settheory.orderings.WellOrders.* diff --git a/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala b/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala index 24614ca3..46a510d4 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala @@ -25,7 +25,10 @@ trait WithTheorems { * * @param assump list of starting assumptions, usually propagated from outer proofs. */ - sealed abstract class Proof(assump: List[F.Formula]) { + // TODO: reseal this class + // see https://github.com/lampepfl/dotty/issues/19031 + // and https://github.com/epfl-lara/lisa/issues/190 + abstract class Proof(assump: List[F.Formula]) { val possibleGoal: Option[F.Sequent] type SelfType = this.type type OutsideFact >: JUSTIFICATION @@ -259,11 +262,11 @@ trait WithTheorems { */ def asOutsideFact(j: JUSTIFICATION): OutsideFact - @nowarn("msg=.*It would fail on pattern case: _: InnerProof.*") - def depth: Int = this match { - case p: Proof#InnerProof => 1 + p.parent.depth - case _: BaseProof => 0 - } + def depth: Int = + (this: @unchecked) match { + case p: Proof#InnerProof => 1 + p.parent.depth + case _: BaseProof => 0 + } /** * Create a subproof inside the current proof. The subproof will have the same assumptions as the current proof. -- GitLab