We present a novel denotational semantics for the untyped call-by-value $\lambda$-calculus, where terms are interpreted as \emph{stable relations}, \ie as binary relations between substitutions and values, enjoying a monotonicity property. The denotation captures the input-output behaviour of higher-order programs, and is proved sound and complete with respect to the operational semantics. The definition also admits a presentation as a program logic. Following the principles of abstract interpretation, we use our denotational semantics as a \emph{collecting semantics} to derive a modular \emph{relational} analysis for higher-order programs. The analysis infers equalities between the arguments of a program and its result—a form of \emph{frame condition} for functional programs.