Skip to content
Snippets Groups Projects
Commit 827c54c3 authored by Etienne Kneuss's avatar Etienne Kneuss
Browse files

Produce a table

parent caf0f133
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ summaryLog=repairs.log ...@@ -4,6 +4,7 @@ summaryLog=repairs.log
fullLog=fullLog.log fullLog=fullLog.log
echo -n "" > $log; echo -n "" > $log;
echo -n "" > "repairs.table";
echo "################################" >> $summaryLog echo "################################" >> $summaryLog
......
...@@ -56,6 +56,12 @@ object RepairPhase extends LeonPhase[Program, Program] { ...@@ -56,6 +56,12 @@ object RepairPhase extends LeonPhase[Program, Program] {
} finally { } finally {
fw.close fw.close
} }
val fw2 = new FileWriter("repairs.table", true)
try {
fw2.write(res.toTableLine)
} finally {
fw2.close
}
} }
program program
......
...@@ -11,6 +11,7 @@ case class RepairResult(f: File, ...@@ -11,6 +11,7 @@ case class RepairResult(f: File,
focusTime: Option[Long] = None, focusTime: Option[Long] = None,
focusSize: Option[Int] = None, focusSize: Option[Int] = None,
repairTime: Option[Long] = None, repairTime: Option[Long] = None,
repairSize: Option[Int] = None,
repairTrusted: Option[Boolean] = None) { repairTrusted: Option[Boolean] = None) {
def toLine = { def toLine = {
...@@ -21,5 +22,24 @@ case class RepairResult(f: File, ...@@ -21,5 +22,24 @@ case class RepairResult(f: File,
f"$benchCat%20s, $benchName%20s, $benchFun%20s, $psize%3s, $fsize%3s, ${focusSize.getOrElse("")}%3s, ${initTime.getOrElse("")}%5s, ${focusTime.getOrElse("")}%5s, ${repairTime.getOrElse("")}%5s, ${repairTrusted.getOrElse("")}%5s\n" f"$benchCat%20s, $benchName%20s, $benchFun%20s, $psize%3s, $fsize%3s, ${focusSize.getOrElse("")}%3s, ${initTime.getOrElse("")}%5s, ${focusTime.getOrElse("")}%5s, ${repairTime.getOrElse("")}%5s, ${repairTrusted.getOrElse("")}%5s\n"
} }
def toTableLine = {
val benchCat = f.getParentFile().getName()
val benchName = f.getName()
val benchFun = name
def ts(ot: Option[Long]): String = {
val s = ot.map{
ms =>
val t: Double = Math.round(ms/100.0)/10.0
f"$t%.1f"
}.getOrElse("")
f"$s%5s"
}
val verified = repairTrusted.map(if (_) "\\chmark" else "").getOrElse("")
f"$benchCat%20s & $benchName%20s & $benchFun%20s & $psize%4s & $fsize%3s & ${focusSize.getOrElse("")}%3s & ${repairSize.getOrElse("")}%3s & ${ts(initTime)} & ${ts(focusTime)} & ${ts(repairTime)} & $verified%7s \\\\ \n"
}
} }
...@@ -37,9 +37,14 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout ...@@ -37,9 +37,14 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout
case class NotValid(passing : List[Example], failing : List[Example]) extends VerificationResult case class NotValid(passing : List[Example], failing : List[Example]) extends VerificationResult
} }
var result = RepairResult(ctx.files.head, visibleFunDefsFromMain(initProgram).foldLeft(0) { def programSize(pgm: Program): Int = {
case (s, f) => formulaSize(f.fullBody) + s visibleFunDefsFromMain(pgm).foldLeft(0) {
}); case (s, f) =>
1 + f.params.size + formulaSize(f.fullBody) + s
}
}
var result = RepairResult(ctx.files.head, programSize(initProgram));
import VRes._ import VRes._
...@@ -121,6 +126,7 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout ...@@ -121,6 +126,7 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout
for ((sol, i) <- solutions.reverse.zipWithIndex) { for ((sol, i) <- solutions.reverse.zipWithIndex) {
reporter.info(ASCIIHelpers.subTitle("Solution "+(i+1)+":")) reporter.info(ASCIIHelpers.subTitle("Solution "+(i+1)+":"))
val expr = sol.toSimplifiedExpr(ctx, program) val expr = sol.toSimplifiedExpr(ctx, program)
result = result.copy(repairSize = Some(formulaSize(expr)))
reporter.info(ScalaPrinter(expr)); reporter.info(ScalaPrinter(expr));
} }
reporter.info(ASCIIHelpers.title("In context:")) reporter.info(ASCIIHelpers.title("In context:"))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment