From a357ae8223eee406f1f2d9c005d2fd752a4473a3 Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Tue, 23 Oct 2012 18:33:45 +0200 Subject: [PATCH] Add examples from Spt --- testcases/synthesis/Spt.scala | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 testcases/synthesis/Spt.scala diff --git a/testcases/synthesis/Spt.scala b/testcases/synthesis/Spt.scala new file mode 100644 index 000000000..551317142 --- /dev/null +++ b/testcases/synthesis/Spt.scala @@ -0,0 +1,24 @@ +import leon.Utils._ + +// Examples taken from http://lara.epfl.ch/~psuter/spt/ +object SynthesisProceduresToolkit { + + def e1(a: Nat, b: Nat, c: Nat): Nat = choose( (x: Nat) => x != a && x != b && x != c) + + def e2(): (Nat, Nat, Nat) = choose( (x: Nat, y: Nat, z: Nat) => x != y && y != z && x != z) + + def e3(a1 : Nat, a2 : Nat, a3 : Nat, a4 : Nat): (Nat, Nat) = choose( (x1 : Nat, x2 : Nat) => Cons(x1, Cons(x2, Nil())) == Cons(a3, Cons(a4, Nil())) && Cons(a1, Cons(a2, Nil())) != Cons(x1, Cons(x2, Nil()))) + + def e4(a1 : Nat, a2 : Nat, a3 : Nat, a4 : Nat): (Nat, Nat, NatList) = choose( (x1 : Nat, x2 : Nat, x3 : NatList) => Cons(x1, Cons(x2, Nil())) != Cons(a1, Cons(a2, Nil()))) + + def e5(a1 : NatList, a2 : Nat, a3 : NatList): (Nat, NatList, Nat, NatList) = choose( (x1 : Nat, x2 : NatList, x3 : Nat, x4 : NatList) => Cons(Succ(x1), x2) == a1 && Succ(x1) != a2 && a3 == Cons(x3, Cons(x3, x4))) + + abstract class Nat + case class Z() extends Nat + case class Succ(n: Nat) extends Nat + + abstract class NatList + case class Nil() extends NatList + case class Cons(head: Nat, tail: NatList) extends NatList + +} -- GitLab