
occurs.pl -- Finding and counting sub-terms
This is a SWI-Prolog implementation of the corresponding Quintus library, based on the generalised arg/3 predicate of SWI-Prolog.
contains_term(+Sub, +Term) is semidet- Succeeds if Sub is contained in Term (=, deterministically)
contains_var(+Sub, +Term) is det- 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.
count(:Goal, -Count)[private]- Count number of times Goal succeeds.