A The SWI-Prolog library
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • The SWI-Prolog library
        • library(aggregate): Aggregation operators on backtrackable predicates
        • library(ansi_term): Print decorated text to ANSI consoles
        • library(apply): Apply predicates on a list
        • library(assoc): Association lists
        • library(broadcast): Broadcast and receive event notifications
        • library(charsio): I/O on Lists of Character Codes
        • library(check): Consistency checking
        • library(clpb): CLP(B): Constraint Logic Programming over Boolean Variables
        • library(clpfd): CLP(FD): Constraint Logic Programming over Finite Domains
        • library(clpqr): Constraint Logic Programming over Rationals and Reals
        • library(csv): Process CSV (Comma-Separated Values) data
        • library(dcg/basics): Various general DCG utilities
        • library(dcg/high_order): High order grammar operations
        • library(debug): Print debug messages and test assertions
        • library(dicts): Dict utilities
        • library(error): Error generating support
        • library(gensym): Generate unique identifiers
        • library(iostream): Utilities to deal with streams
        • library(lists): List Manipulation
        • library(main): Provide entry point for scripts
        • library(nb_set): Non-backtrackable set
        • library(www_browser): Activating your Web-browser
        • library(occurs): Finding and counting sub-terms
          • contains_term/2
          • contains_var/2
          • free_of_term/2
          • free_of_var/2
          • occurrences_of_term/3
          • occurrences_of_var/3
          • sub_term/2
          • sub_var/2
        • library(option): Option list processing
        • library(optparse): command line parsing
        • library(ordsets): Ordered set manipulation
        • library(pairs): Operations on key-value lists
        • library(persistency): Provide persistent dynamic predicates
        • library(pio): Pure I/O
        • library(predicate_options): Declare option-processing of predicates
        • library(prolog_pack): A package manager for Prolog
        • library(prolog_xref): Cross-reference data collection library
        • library(quasi_quotations): Define Quasi Quotation syntax
        • library(random): Random numbers
        • library(readutil): Reading lines, streams and files
        • library(record): Access named fields in a term
        • library(registry): Manipulating the Windows registry
        • library(settings): Setting management
        • library(simplex): Solve linear programming problems
        • library(solution_sequences): Modify solution sequences
        • library(thread_pool): Resource bounded thread management
        • library(ugraphs): Unweighted Graphs
        • library(url): Analysing and constructing URL
        • library(varnumbers): Utilities for numbered terms
        • library(yall): Lambda expressions
    • Packages

A.23 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.