 		return analysis(
 			ifPi: { _, f in f(other) },
 			ifSigma: { _, f in f(other) },
-			ifNeutral: { .neutral(.application($0, other)) },
 			otherwise: { assert(false, "illegal application of \(self) to \(other)") ; return .type })
 	}
 

	case Type(Int)
	case Pi(Box<Value>, Value -> Value)
	case Sigma(Box<Value>, Value -> Value)
	case Neutral(Box<Manifold.Neutral>)
}



		@noescape ifType: Int -> T,
		@noescape ifPi: (Value, Value -> Value) -> T,
		@noescape ifSigma: (Value, Value -> Value) -> T,
		@noescape ifFree: Name -> T) -> T {
		switch self {
		case .UnitTerm:
			return ifUnitTerm()
