Index: src/ResolvExpr/RenameVars.cc
===================================================================
--- src/ResolvExpr/RenameVars.cc	(revision f0994a1ad4f14d586389f1b48863de6a941d89e2)
+++ src/ResolvExpr/RenameVars.cc	(revision c95b11526c10568ee3415f3873af592f6779ea99)
@@ -29,5 +29,5 @@
 	RenameVars global_renamer;
 
-	RenameVars::RenameVars() : level( 0 ) {
+	RenameVars::RenameVars() : level( 0 ), resetCount( 0 ) {
 		mapStack.push_front( std::map< std::string, std::string >() );
 	}
@@ -35,4 +35,5 @@
 	void RenameVars::reset() {
 		level = 0;
+		resetCount++;
 	}
 
@@ -130,5 +131,5 @@
 			for ( Type::ForallList::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
 				std::ostringstream output;
-				output << "_" << level << "_" << (*i)->get_name();
+				output << "_" << resetCount << "_" << level << "_" << (*i)->get_name();
 				std::string newname( output.str() );
 				mapStack.front()[ (*i)->get_name() ] = newname;
Index: src/ResolvExpr/RenameVars.h
===================================================================
--- src/ResolvExpr/RenameVars.h	(revision f0994a1ad4f14d586389f1b48863de6a941d89e2)
+++ src/ResolvExpr/RenameVars.h	(revision c95b11526c10568ee3415f3873af592f6779ea99)
@@ -48,5 +48,5 @@
 		void typeBefore( Type *type );
 		void typeAfter( Type *type );
-		int level;
+		int level, resetCount;
 		std::list< std::map< std::string, std::string > > mapStack;
 	};
