/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
      • lists.pl
      • broadcast.pl -- Event service
      • shlib.pl
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl
      • prolog_source.pl -- Examine Prolog source-files
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl
      • random.pl
      • base64.pl
      • aggregate.pl
      • yall.pl
      • sandbox.pl -- Sandboxed Prolog code
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • 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
      • 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
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl
      • edit.pl -- Editor interface
      • base32.pl -- Base32 encoding and decoding
      • codesio.pl
      • coinduction.pl
      • date.pl -- Process dates and times
      • heaps.pl
      • statistics.pl -- Get information about resource usage
      • terms.pl
      • utf8.pl
      • when.pl -- Conditional coroutining
      • backcomp.pl
      • prolog_debug.pl -- User level debugging tools
      • listing.pl -- List programs and pretty print clauses
      • optparse.pl
      • prolog_trace.pl
      • prolog_wrap.pl -- Wrapping predicates
      • make.pl -- Reload modified source files
      • prolog_coverage.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • writef.pl -- Old-style formatted write
      • help.pl
      • threadutil.pl -- Interactive thread utilities
      • persistency.pl -- Provide persistent dynamic predicates
      • nb_set.pl
      • prolog_config.pl
      • prolog_versions.pl
      • shell.pl -- Elementary shell commands
      • intercept.pl
      • macros.pl
      • check.pl
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_metainference.pl
      • thread.pl -- High level thread primitives
      • system.pl -- System utilities
      • prolog_profile.pl
      • qsave.pl
      • zip.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • hashtable.pl -- Hash tables
      • fastrw.pl -- Fast reading and writing of terms
      • quintus.pl
      • ctypes.pl -- Character code classification
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl
      • strings.pl
      • prolog_jiti.pl
      • explain.pl
      • exceptions.pl
      • streams.pl
      • prolog_history.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.