And clearly it's not None, so the if/elif never actually gives min a value. Also notice that all the examples use lambda functions for their cons values.

Since cons "This should be either a function or list of functions that must be positive", perhaps just having a symbolic expression is not enough. After all, who knows what the variable is to be? But maybe we should have a better error check for this?