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

  • swipl
    • library
      • error.pl
      • debug.pl -- Print debug messages and test assertions
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl -- Option list processing
      • thread_pool.pl -- Resource bounded thread management
      • 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 -- Examine Prolog source-files
      • record.pl
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl -- Ordered set manipulation
      • random.pl -- Random numbers
      • base64.pl
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • 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
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • rbtrees.pl -- Red black trees
      • dif.pl
      • charsio.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl
      • dialect.pl -- Support multiple Prolog dialects
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl
      • backcomp.pl -- Backward compatibility
      • base32.pl
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • date.pl
      • heaps.pl
      • statistics.pl
      • terms.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • when.pl -- Conditional coroutining
      • threadutil.pl -- Interactive thread utilities
      • zip.pl
      • prolog_debug.pl
      • make.pl
      • check.pl -- Consistency checking
      • macros.pl
      • listing.pl
      • prolog_codewalk.pl
      • prolog_metainference.pl
      • prolog_profile.pl
      • prolog_coverage.pl
      • thread.pl -- High level thread primitives
      • optparse.pl
      • portray_text.pl -- Portray text
      • prolog_history.pl
      • explain.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_autoload.pl -- Autoload all dependencies
      • increval.pl
      • tables.pl -- XSB interface to tables
      • fastrw.pl -- Fast reading and writing of terms
      • prolog_versions.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • exceptions.pl
      • prolog_config.pl
      • quintus.pl
      • nb_set.pl
      • system.pl
      • hashtable.pl
      • rwlocks.pl
      • ctypes.pl
      • intercept.pl -- Intercept and signal interface
      • persistency.pl
      • writef.pl
      • shell.pl -- Elementary shell commands
      • help.pl
      • strings.pl -- String utilities
      • qsave.pl
      • oset.pl
      • prolog_trace.pl
      • prolog_wrap.pl -- Wrapping predicates
      • edit.pl -- Editor interface
      • streams.pl -- Manage Prolog streams
      • files.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.