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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl -- Apply predicates on a list
      • lists.pl
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl
      • gensym.pl
      • settings.pl
      • arithmetic.pl
      • main.pl
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl
      • random.pl
      • base64.pl
      • aggregate.pl
      • yall.pl
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl
      • atom.pl -- Operations on atoms
      • 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_colour.pl
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl
      • rbtrees.pl
      • dif.pl
      • charsio.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl
      • dialect.pl
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl -- Utilities for numbered terms
      • edit.pl
      • nb_set.pl -- Non-backtrackable sets
      • strings.pl
      • backcomp.pl
      • prolog_wrap.pl
      • base32.pl
      • codesio.pl
      • coinduction.pl
      • date.pl
      • heaps.pl
      • statistics.pl
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl -- Conditional coroutining
      • intercept.pl
      • writef.pl -- Old-style formatted write
      • shell.pl
      • check.pl -- Consistency checking
      • quintus.pl
      • thread.pl
      • threadutil.pl -- Interactive thread utilities
      • optparse.pl -- command line parsing
      • make.pl
      • files.pl
      • prolog_history.pl
      • listing.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • tables.pl
      • persistency.pl
      • increval.pl
      • zip.pl
      • ctypes.pl -- Character code classification
      • prolog_autoload.pl
      • streams.pl -- Manage Prolog streams
      • portray_text.pl
      • system.pl
      • prolog_metainference.pl
      • prolog_codewalk.pl
      • oset.pl
      • hashtable.pl
      • prolog_jiti.pl
      • prolog_coverage.pl
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • prolog_profile.pl
      • prolog_trace.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.