The paradigm of type-based termination is explored for functional
programming with recursive data types.
The article introduces $\boldsymbol{\Lambda_\mu^+}$, a lambda-calculus with
recursion, inductive types,
subtyping and bounded quantification. Decorated type
variables representing approximations of inductive types are used to
track the size of function arguments and return values.
The system is shown to be type safe and strongly normalizing.
The main novelty is a bidirectional type checking algorithm whose
soundness is established formally.