|Did you know ...||Search Documentation:|
|library(occurs): Finding and counting sub-terms|
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.
==) to any subterm of Term
?- freeze(S, integer(S)), occurrences_of_term(S, f(1,2,a), C). C = 2, freeze(S, integer(S)).
==) of Term.
An example use-case is refactoring a large clause body by introducing intermediate predicates. This predicate can be used to find the arguments that must be passed to the new predicate.