(* And now two instantiations *)

(* Specifications: *)
Lemma reduce_append_nil1 :
forall (d : E) (q2 : queue E), reduce (input E d q2) = (reduce q2 + f d)%Z.
Lemma reduce_append_nil2 :
forall (q1 : queue E) (d : E),
reduce (append E q1 (input E d (empty E))) = (reduce q1 + f d)%Z.
Lemma reduce_append_nil2_symmetric :
forall (q1 : queue E) (d : E),
reduce q1 = (reduce (append E q1 (input E d (empty E))) - f d)%Z.