Skip to content
Snippets Groups Projects
Commit b263cb81 authored by Emmanouil (Manos) Koukoutos's avatar Emmanouil (Manos) Koukoutos Committed by Etienne Kneuss
Browse files

Some small benchmark changes

parent 73d58d51
No related branches found
No related tags found
No related merge requests found
...@@ -22,8 +22,9 @@ object DaysToYears { ...@@ -22,8 +22,9 @@ object DaysToYears {
res._2 > 0 && res._2 > 0 &&
res._1 >= base && res._1 >= base &&
(((year,days), res) passes { (((year,days), res) passes {
case (1980, 366 ) => (1980, 366) case (1999, 14 ) => (1999, 14)
case (1980, 1000) => (1982, 269) case (1980, 366) => (1980, 366)
case (1981, 634) => (1982, 269)
}) })
} }
......
...@@ -145,7 +145,7 @@ object Desugar { ...@@ -145,7 +145,7 @@ object Desugar {
@induct @induct
def desugar(e : Trees.Expr) : SimpleE = { e match { def desugar(e : Trees.Expr) : SimpleE = { e match {
case Trees.Plus (lhs, rhs) => Neg(desugar(lhs)) // FIXME: Complete nonsense. Leon can't disprove it so it's happy... case Trees.Plus (lhs, rhs) => Neg(desugar(lhs)) // FIXME: Complete nonsense. Leon can't disprove it, uses example...
case Trees.Minus(lhs, rhs) => Plus(desugar(lhs), Neg(desugar(rhs))) case Trees.Minus(lhs, rhs) => Plus(desugar(lhs), Neg(desugar(rhs)))
case Trees.LessThan(lhs, rhs) => LessThan(desugar(lhs), desugar(rhs)) case Trees.LessThan(lhs, rhs) => LessThan(desugar(lhs), desugar(rhs))
case Trees.And (lhs, rhs) => Ite(desugar(lhs), desugar(rhs), Literal(0)) case Trees.And (lhs, rhs) => Ite(desugar(lhs), desugar(rhs), Literal(0))
...@@ -157,7 +157,6 @@ object Desugar { ...@@ -157,7 +157,6 @@ object Desugar {
case Trees.IntLiteral(v) => Literal(v) case Trees.IntLiteral(v) => Literal(v)
case Trees.BoolLiteral(b) => Literal(b2i(b)) case Trees.BoolLiteral(b) => Literal(b2i(b))
}} ensuring { res => }} ensuring { res =>
// TODO: Z3 fails to disprove this!
((e, res) passes { ((e, res) passes {
case Trees.Plus(Trees.IntLiteral(i), Trees.Minus(Trees.IntLiteral(j), Trees.IntLiteral(42))) => case Trees.Plus(Trees.IntLiteral(i), Trees.Minus(Trees.IntLiteral(j), Trees.IntLiteral(42))) =>
Plus(Literal(i), Plus(Literal(j), Neg(Literal(42)))) Plus(Literal(i), Plus(Literal(j), Neg(Literal(42))))
......
...@@ -82,62 +82,20 @@ object RedBlackTree { ...@@ -82,62 +82,20 @@ object RedBlackTree {
makeBlack(ins(x, t)) makeBlack(ins(x, t))
} ensuring (res => content(res) == content(t) ++ Set(x) && redNodesHaveBlackChildren(res) && blackBalanced(res) ) } ensuring (res => content(res) == content(t) ++ Set(x) && redNodesHaveBlackChildren(res) && blackBalanced(res) )
// def buggyAdd(x: Int, t: Tree): Tree = {
// require(redNodesHaveBlackChildren(t))
// // makeBlack(ins(x, t))
// ins(x, t)
// } ensuring (res => content(res) == content(t) ++ Set(x) && redNodesHaveBlackChildren(res))
def balance(c: Color, a: Tree, x: Int, b: Tree): Tree = { def balance(c: Color, a: Tree, x: Int, b: Tree): Tree = {
// require(
// Node(c,a,x,b) match { (c,a,x,b) match {
// case Node(Black,Node(Red,Node(Red,a,_,b),_,c),_,d) => case (Black,Node(Red,Node(Red,a,xV,b),yV,c),zV,d) =>
// redNodesHaveBlackChildren(a) &&
// redNodesHaveBlackChildren(b) &&
// redNodesHaveBlackChildren(c) &&
// redNodesHaveBlackChildren(d)
// case Node(Black,Node(Red,a,_,Node(Red,b,_,c)),_,d) =>
// redNodesHaveBlackChildren(a) &&
// redNodesHaveBlackChildren(b) &&
// redNodesHaveBlackChildren(c) &&
// redNodesHaveBlackChildren(d)
// case Node(Black,a,_,Node(Red,Node(Red,b,_,c),_,d)) =>
// redNodesHaveBlackChildren(a) &&
// redNodesHaveBlackChildren(b) &&
// redNodesHaveBlackChildren(c) &&
// redNodesHaveBlackChildren(d)
// case Node(Black,a,_,Node(Red,b,_,Node(Red,c,_,d))) =>
// redNodesHaveBlackChildren(a) &&
// redNodesHaveBlackChildren(b) &&
// redNodesHaveBlackChildren(c) &&
// redNodesHaveBlackChildren(d)
// case t => redDescHaveBlackChildren(t)
// }
// )
Node(c,a,x,b) match {
case Node(Black,Node(Red,Node(Red,a,xV,b),yV,c),zV,d) =>
Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d)) Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
case Node(Black,Node(Red,a,xV,Node(Red,b,yV,c)),zV,d) => case (Black,Node(Red,a,xV,Node(Red,b,yV,c)),zV,d) =>
Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d)) Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
case Node(Black,a,xV,Node(Red,Node(Red,b,yV,c),zV,d)) => case (Black,a,xV,Node(Red,Node(Red,b,yV,c),zV,d)) =>
Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d)) Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
case Node(Black,a,xV,Node(Red,b,yV,Node(Red,c,zV,d))) => case (Black,a,xV,Node(Red,b,yV,Node(Red,c,zV,d))) =>
Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d)) Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
case Node(c,a,xV,b) => Node(c,a,xV,b) case (c,a,xV,b) => Node(c,a,xV,b)
} }
} ensuring (res => content(res) == content(Node(c,a,x,b)) )// && redDescHaveBlackChildren(res)) } ensuring (res => content(res) == content(Node(c,a,x,b)))// && redDescHaveBlackChildren(res))
// def buggyBalance(c: Color, a: Tree, x: Int, b: Tree): Tree = {
// Node(c,a,x,b) match {
// case Node(Black,Node(Red,Node(Red,a,xV,b),yV,c),zV,d) =>
// Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
// case Node(Black,Node(Red,a,xV,Node(Red,b,yV,c)),zV,d) =>
// Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
// case Node(Black,a,xV,Node(Red,Node(Red,b,yV,c),zV,d)) =>
// Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
// case Node(Black,a,xV,Node(Red,b,yV,Node(Red,c,zV,d))) =>
// Node(Red,Node(Black,a,xV,b),yV,Node(Black,c,zV,d))
// }
// } ensuring (res => content(res) == content(Node(c,a,x,b)) ) // && redDescHaveBlackChildren(res))
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment