  Resolution and subtyping are two common mechanisms in programming languages.
Resolution is used by features such as type classes or Scala-style implicits to
synthesize values automatically from contextual type information. Subtyping is
commonly used to automatically convert the type of a value into another
compatible type. So far the two mechanisms have been considered independently
of each other. This paper shows that, with a small extension, subtyping with
intersection types can subsume resolution. This has three main consequences.
Firstly, resolution does not need to be implemented as a separate mechanism.
Secondly, the interaction between resolution and subtyping becomes apparent.
Finally, the integration of resolution into subtyping enables first-class
(implicit) environments. The extension that recovers the power of resolution
via subtyping is the modus ponens rule of propositional logic. While it is
easily added to declarative subtyping, significant care needs to be taken to
retain desirable properties, such as transitivity and decidability of
algorithmic subtyping, and coherence. To materialize these ideas we develop
$\lambda_i^{\mathsf{MP}}$, a calculus that extends a iprevious calculus with
disjoint intersection types, and develop its metatheory in the Coq theorem
prover.
