diff --git a/vstte10competition/AmortizedQueue.scala b/vstte10competition/AmortizedQueue.scala
index 055e7042cb6be157a6b7cc5a9266a35b8f8f2ca4..7968b415ed1c83b9f8f2d3652a71f55771f5367e 100644
--- a/vstte10competition/AmortizedQueue.scala
+++ b/vstte10competition/AmortizedQueue.scala
@@ -19,6 +19,10 @@ object AmortizedQueue {
     case Nil() => Set.empty[Int]
     case Cons(x, xs) => Set(x) ++ content(xs)
   }
+  
+  def asList(queue : AbsQueue) : List = queue match {
+    case Queue(front, rear) => concat(front, reverse(rear))
+  }
 
   def concat(l1 : List, l2 : List) : List = (l1 match {
     case Nil() => l2
@@ -64,6 +68,39 @@ object AmortizedQueue {
     }
   }
 
+  @induct
+  def propEnqueue(rear : List, front : List, list : List, elem : Int) : Boolean = {
+    require(isAmortized(Queue(front, rear)))
+    val queue = Queue(front, rear)
+    if (asList(queue) == list) {
+      asList(enqueue(queue, elem)) == concat(list, Cons(elem, Nil()))
+    } else
+      true
+  } // holds
+
+  @induct
+  def propFront(queue : AbsQueue, list : List, elem : Int) : Boolean = {
+    require(!isEmpty(queue) && isAmortized(queue))
+    if (asList(queue) == list) {
+      list match {
+        case Cons(x, _) => front(queue) == x
+      }
+    } else
+      true
+  } holds
+
+  @induct
+  def propTail(rear : List, front : List, list : List, elem : Int) : Boolean = {
+    require(!isEmpty(Queue(front, rear)) && isAmortized(Queue(front, rear)))
+    val queue = Queue(front, rear)
+    if (asList(queue) == list) {
+      list match {
+        case Cons(_, xs) => asList(tail(queue)) == xs
+      }
+    } else
+      true
+  } // holds
+
   def enqueueAndFront(queue : AbsQueue, elem : Int) : Boolean = {
     if (isEmpty(queue))
       front(enqueue(queue, elem)) == elem