SWI-Prolog 8.2.1 Reference Manual: Section A.25

## A.25 library(occurs): Finding and counting sub-terms

See also
  `library(terms)` provides similar predicates and is probably more wide-spread than this library.

This is a SWI-Prolog implementation of the corresponding Quintus library, based on the generalised arg/3 predicate of SWI-Prolog.

[semidet]contains_term(+Sub, +Term)
  Succeeds if Sub is contained in Term (=, deterministically)
[det]contains_var(+Sub, +Term)
  Succeeds if Sub is contained in Term (==, deterministically)
free_of_term(+Sub, +Term)
  Succeeds of Sub does not unify to any subterm of Term
free_of_var(+Sub, +Term)
  Succeeds of Sub is not equal (`==`) to any subterm of Term
occurrences_of_term(+SubTerm, +Term, ?Count)
  Count the number of SubTerms in Term
occurrences_of_var(+SubTerm, +Term, ?Count)
  Count the number of SubTerms in Term
sub_term(-Sub, +Term)
  Generates (on backtracking) all subterms of Term.
sub_var(-Sub, +Term)
  Generates (on backtracking) all subterms (`==`) of Term.