/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
      • option.pl
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl
      • random.pl
      • base64.pl
      • aggregate.pl
      • yall.pl -- Lambda expressions
      • sandbox.pl -- Sandboxed Prolog code
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • prolog_format.pl
      • predicate_options.pl
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl
      • modules.pl
      • 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 -- Lazy list handling
      • ugraphs.pl -- Graph manipulation library
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • rbtrees.pl -- Red black trees
      • dif.pl -- The dif/2 constraint
      • charsio.pl
      • prolog_stack.pl
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl -- Well Founded Semantics interface
      • dialect.pl
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl
      • prolog_coverage.pl
      • backcomp.pl
      • base32.pl
      • codesio.pl
      • coinduction.pl
      • date.pl
      • heaps.pl
      • statistics.pl
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • listing.pl
      • check.pl
      • macros.pl
      • make.pl -- Reload modified source files
      • zip.pl
      • quintus.pl -- Quintus compatibility
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • qsave.pl -- Save current program as a state or executable
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl
      • nb_set.pl -- Non-backtrackable sets
      • shell.pl -- Elementary shell commands
      • optparse.pl
      • prolog_debug.pl
      • oset.pl
      • exceptions.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • strings.pl
      • ctypes.pl
      • help.pl
      • prolog_wrap.pl
      • thread.pl
      • threadutil.pl -- Interactive thread utilities
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • explain.pl -- Describe Prolog Terms
      • writef.pl
      • prolog_codewalk.pl
      • prolog_metainference.pl
      • hashtable.pl
      • edit.pl
      • files.pl
      • system.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.