Index: src/ResolvExpr/TypeEnvironment.cc
===================================================================
--- src/ResolvExpr/TypeEnvironment.cc	(revision 11094d9e8320e6ac1134dd033cf6a3b08036a935)
+++ src/ResolvExpr/TypeEnvironment.cc	(revision 98a249fbb9735b5f15e5de97f07784fc1d3f2032)
@@ -212,4 +212,8 @@
 	}
 
+	std::ostream & operator<<( std::ostream & out, const TypeEnvironment & env ) {
+		env.print( out );
+		return out;
+	}
 } // namespace ResolvExpr
 
Index: src/ResolvExpr/TypeEnvironment.h
===================================================================
--- src/ResolvExpr/TypeEnvironment.h	(revision 11094d9e8320e6ac1134dd033cf6a3b08036a935)
+++ src/ResolvExpr/TypeEnvironment.h	(revision 98a249fbb9735b5f15e5de97f07784fc1d3f2032)
@@ -86,5 +86,5 @@
 		TypeEnvironment *clone() const { return new TypeEnvironment( *this ); }
 
-		/// Iteratively adds the environment of a new actual (with allowWidening = false), 
+		/// Iteratively adds the environment of a new actual (with allowWidening = false),
 		/// and extracts open variables.
 		void addActual( const TypeEnvironment& actualEnv, OpenVarSet& openVars );
@@ -114,4 +114,6 @@
 		return sub.applyFree( type );
 	}
+
+	std::ostream & operator<<( std::ostream & out, const TypeEnvironment & env );
 } // namespace ResolvExpr
 
