A term is carried by another term, if the possession of the right set
of keys allows the extraction of the term
Implementing carried only within
carriedOnlyWithin ::
Term t => t -> S.Set t -> t -> Bool
carriedOnlyWithin target escape term =
existsOnAllPathsToTarget
(flip S.member escape)
target term