Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ src/SymTab/Mangler.cc	(revision b10c39a0eabbc4a5be7be30e5a79480917e65b87)
@@ -38,5 +38,4 @@
 			struct Mangler : public WithShortCircuiting, public WithVisitorRef<Mangler>, public WithGuards {
 				Mangler( bool mangleOverridable, bool typeMode, bool mangleGenericParams );
-				Mangler( const ResolvExpr::TypeEnvironment& env );
 				Mangler( const Mangler & ) = delete;
 
@@ -67,8 +66,7 @@
 			  private:
 				std::ostringstream mangleName;  ///< Mangled name being constructed
-				typedef std::map< std::string, std::pair< std::string, int > > VarMapType;
+				typedef std::map< std::string, std::pair< int, int > > VarMapType;
 				VarMapType varNums;             ///< Map of type variables to indices
 				int nextVarNum;                 ///< Next type variable index
-				const ResolvExpr::TypeEnvironment* env;  ///< optional environment for substitutions
 				bool isTopLevel;                ///< Is the Mangler at the top level
 				bool mangleOverridable;         ///< Specially mangle overridable built-in methods
@@ -80,6 +78,5 @@
 			  public:
 				Mangler( bool mangleOverridable, bool typeMode, bool mangleGenericParams, 
-					int nextVarNum, const ResolvExpr::TypeEnvironment* env, 
-					const VarMapType& varNums );
+					int nextVarNum, const VarMapType& varNums );
 
 			  private:
@@ -109,25 +106,13 @@
 		}
 
-		std::string mangleAssnKey( DeclarationWithType* decl, 
-				const ResolvExpr::TypeEnvironment& env ) {
-			PassVisitor<Mangler> mangler( env );
-			maybeAccept( decl, mangler );
-			return mangler.pass.get_mangleName();
-		}
-
 		namespace {
 			Mangler::Mangler( bool mangleOverridable, bool typeMode, bool mangleGenericParams )
-				: nextVarNum( 0 ), env(nullptr), isTopLevel( true ), 
+				: nextVarNum( 0 ), isTopLevel( true ), 
 				mangleOverridable( mangleOverridable ), typeMode( typeMode ), 
 				mangleGenericParams( mangleGenericParams ) {}
 			
-			Mangler::Mangler( const ResolvExpr::TypeEnvironment& env )
-				: nextVarNum( 0 ), env( &env ), isTopLevel( true ), mangleOverridable( false ),
-				typeMode( false ), mangleGenericParams( true ) {}
-			
 			Mangler::Mangler( bool mangleOverridable, bool typeMode, bool mangleGenericParams, 
-				int nextVarNum, const ResolvExpr::TypeEnvironment* env, 
-				const VarMapType& varNums )
-				: varNums( varNums ), nextVarNum( nextVarNum ), env( env ), isTopLevel( false ), 
+				int nextVarNum, const VarMapType& varNums )
+				: varNums( varNums ), nextVarNum( nextVarNum ), isTopLevel( false ), 
 				mangleOverridable( mangleOverridable ), typeMode( typeMode ), 
 				mangleGenericParams( mangleGenericParams ) {}
@@ -358,25 +343,8 @@
 							assert( false );
 						} // switch
-						std::string varName;
-						// replace type with substitution name if environment is available and bound
-						if ( env ) {
-							const ResolvExpr::EqvClass* varClass = env->lookup( (*i)->name );
-							if ( varClass && varClass->type ) {
-								PassVisitor<Mangler> sub_mangler(
-									mangleOverridable, typeMode, mangleGenericParams, nextVarNum, 
-									env, varNums );
-								varClass->type->accept( sub_mangler );
-								varName = std::string{"%"} + sub_mangler.pass.get_mangleName();
-							}
-						}
-						// otherwise just give type numeric name
-						if ( varName.empty() ) {
-							varName = std::to_string( nextVarNum++ );
-						}
-						varNums[ (*i)->name ] = std::make_pair( varName, (int)(*i)->get_kind() );
+						varNums[ (*i)->name ] = std::make_pair( nextVarNum, (int)(*i)->get_kind() );
 						for ( std::list< DeclarationWithType* >::iterator assert = (*i)->assertions.begin(); assert != (*i)->assertions.end(); ++assert ) {
 							PassVisitor<Mangler> sub_mangler( 
-								mangleOverridable, typeMode, mangleGenericParams, nextVarNum, env, 
-								varNums );
+								mangleOverridable, typeMode, mangleGenericParams, nextVarNum, varNums );
 							(*assert)->accept( sub_mangler );
 							assertionNames.push_back( sub_mangler.pass.get_mangleName() );
Index: src/SymTab/Mangler.h
===================================================================
--- src/SymTab/Mangler.h	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ src/SymTab/Mangler.h	(revision b10c39a0eabbc4a5be7be30e5a79480917e65b87)
@@ -44,7 +44,4 @@
 		/// Mangle ignoring generic type parameters
 		std::string mangleConcrete( Type* ty );
-		/// Mangle for assertion key
-		std::string mangleAssnKey( DeclarationWithType* decl, 
-			const ResolvExpr::TypeEnvironment& env );
 
 		namespace Encoding {
