diff --git a/testcases/verification/quantifiers/Relations.scala b/testcases/verification/quantifiers/Relations.scala
new file mode 100644
index 0000000000000000000000000000000000000000..353009fa67ca6f44caf4befd79993e142b7dee64
--- /dev/null
+++ b/testcases/verification/quantifiers/Relations.scala
@@ -0,0 +1,68 @@
+import leon.lang._
+import leon.lang.synthesis._
+import leon.proof._
+
+object Relations {
+
+  case class Relation[A](r: (A, A) => Boolean)
+
+  def reflexive[A](rel: Relation[A]) = 
+    forall( (x: A) => rel.r(x, x) )
+
+  def symmetric[A](rel: Relation[A]) =
+    forall( (x:A, y:A) => rel.r(x, y) == rel.r(y, x) )
+  
+  def antisymmetric[A](rel: Relation[A]) = 
+    forall( (x:A, y:A) => ( rel.r(x,y) && rel.r(y,x) ) ==> (x == y) )
+  
+  def transitive[A](rel: Relation[A]) = 
+    forall( (x:A, y:A, z:A) => ( rel.r(x,y) && rel.r(y,z) ) ==> rel.r(x,z) )
+    
+  def po[A](rel: Relation[A]) =
+    reflexive(rel) &&
+    antisymmetric(rel) &&
+    transitive(rel)
+
+}
+
+
+object Proofs {
+  import Relations._
+
+  def int = {
+    val rel = Relation[BigInt](_ <= _)
+    po(rel) because {{
+      po(rel)                                           ==| trivial |
+      (
+        reflexive(rel) &&
+        antisymmetric(rel) &&
+        transitive(rel)
+      )                                                 ==| trivial |
+      (
+        forall( (x:BigInt) => 
+          rel.r(x, x) 
+        ) &&
+        forall( (x:BigInt, y:BigInt) => 
+          ( rel.r(x,y) && rel.r(y,x) ) ==> (x == y) 
+        ) &&
+        forall( (x:BigInt, y:BigInt, z:BigInt) => 
+          ( rel.r(x,y) && rel.r(y,z) ) ==> rel.r(x,z) 
+        )
+      )                                                 ==| trivial |
+      (
+        forall( (x: BigInt) => 
+          x <= x 
+        ) &&
+        forall( (x: BigInt, y:BigInt) => 
+          ( x <= y && y <= x ) ==> ( x == y )
+        ) &&
+        forall( (x: BigInt, y: BigInt, z: BigInt) => 
+          ( x <= y && y <= z ) ==> x <= z 
+        )  
+      )                                                 ==| trivial |
+      true
+    }.qed }
+  }.holds
+
+}
+