One recurring problem in program development is that of understanding how to re-use code
developed by a third party. In the context of (constraint) logic programming, part of this
problem reduces to figuring out how to query a program. If the logic program does not
come with any documentation, then the programmer is forced to either experiment with
queries in an ad hoc fashion or trace the control-flow of the program (backward) to infer the
modes in which a predicate must be called so as to avoid an instantiation error. This paper
presents an abstract interpretation scheme that automates the latter technique. The analysis
presented in this paper can infer moding properties which if satisfied by the initial query,
come with the guarantee that the program and query can never generate any moding or
instantiation errors. Other applications of the analysis are discussed. The paper explains how
abstract domains with certain computational properties (they condense) can be used to trace
control-flow backward (right-to-left) to infer useful properties of initial queries. A correctness
argument is presented and an implementation is reported.