/usr/local/lib/swipl/library/occurs.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl
      • pure_input.pl
      • solution_sequences.pl
      • ordsets.pl
      • random.pl
      • base64.pl
      • aggregate.pl
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • prolog_format.pl
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl
      • atom.pl
      • modules.pl -- Module utility predicates
      • occurs.pl -- 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
        • sub_term_shared_variables/3
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • prolog_pack.pl
      • git.pl
      • rbtrees.pl -- Red black trees
      • dif.pl -- The dif/2 constraint
      • charsio.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl
      • dialect.pl -- Support multiple Prolog dialects
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl -- Utilities for numbered terms
      • statistics.pl -- Get information about resource usage
      • listing.pl
      • base32.pl
      • codesio.pl
      • coinduction.pl
      • date.pl -- Process dates and times
      • heaps.pl -- heaps/priority queues
      • terms.pl
      • utf8.pl
      • when.pl
      • backcomp.pl
      • optparse.pl -- command line parsing
      • portray_text.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • quintus.pl -- Quintus compatibility
      • threadutil.pl -- Interactive thread utilities
      • prolog_debug.pl -- User level debugging tools
      • prolog_codewalk.pl
      • prolog_metainference.pl
      • thread.pl -- High level thread primitives
      • tables.pl
      • writef.pl -- Old-style formatted write
      • system.pl
      • ctypes.pl -- Character code classification
      • intercept.pl -- Intercept and signal interface
      • zip.pl -- Access resource ZIP archives
      • exceptions.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • strings.pl -- String utilities
      • make.pl
      • nb_set.pl
      • prolog_trace.pl
      • streams.pl -- Manage Prolog streams
      • increval.pl
      • help.pl -- Text based manual
      • check.pl
      • macros.pl
      • hashtable.pl
      • rwlocks.pl
      • prolog_profile.pl
      • prolog_coverage.pl
      • oset.pl
      • fastrw.pl
      • edit.pl -- Editor interface
      • prolog_autoload.pl
      • prolog_history.pl
      • prolog_config.pl
      • shell.pl
      • persistency.pl
      • qsave.pl
      • prolog_wrap.pl
      • prolog_versions.pl
      • explain.pl
 sub_term_shared_variables(+Sub, +Term, -Vars) is det
If Sub is a sub term of Term, Vars is bound to the list of variables in Sub that also appear outside Sub in Term. Note that if Sub appears twice in Term, its variables are all considered shared.

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.