From 5a6ac7f4da9bc2d7f2cfb769d65db5db2da5da3e Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Fri, 21 Aug 2015 13:48:02 +0200 Subject: [PATCH] Annotate proof DSL as @library --- library/proof/Internal.scala | 2 ++ library/proof/package.scala | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/library/proof/Internal.scala b/library/proof/Internal.scala index 3ac290310..72333c501 100644 --- a/library/proof/Internal.scala +++ b/library/proof/Internal.scala @@ -2,8 +2,10 @@ package leon.proof import leon.lang._ +import leon.annotation._ /** Internal helper classes and methods for the 'proof' package. */ +@library object Internal { /*** Helper classes for relational reasoning ***/ diff --git a/library/proof/package.scala b/library/proof/package.scala index fd07a8128..f298dce27 100644 --- a/library/proof/package.scala +++ b/library/proof/package.scala @@ -9,6 +9,7 @@ import leon.proof.Internal._ package object proof { + @library case class ProofOps(prop: Boolean) { def because(proof: Boolean): Boolean = proof && prop def neverHolds: Boolean = { @@ -17,13 +18,17 @@ package object proof { } } + @library implicit def boolean2ProofOps(prop: Boolean): ProofOps = ProofOps(prop) + @library def trivial: Boolean = true + @library def by(proof: Boolean)(prop: Boolean): Boolean = proof && prop + @library def check(prop: Boolean): Boolean = { require(prop) prop @@ -39,6 +44,7 @@ package object proof { * x * }.qed */ + @library case class RelReasoning[A](x: A, prop: Boolean) { def ^^[B](r: (A, B) => Boolean): WithRel[A, B] = WithRel(x, r, prop) @@ -52,6 +58,7 @@ package object proof { def qed: Boolean = prop } + @library implicit def any2RelReasoning[A](x: A): RelReasoning[A] = RelReasoning(x, true) -- GitLab