/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
      • broadcast.pl
      • shlib.pl
      • option.pl
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl
      • main.pl
      • readutil.pl
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • 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
      • yall.pl
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • prolog_format.pl
      • predicate_options.pl
      • csv.pl
      • pprint.pl
      • atom.pl -- Operations on atoms
      • 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
      • lazy_lists.pl
      • ugraphs.pl
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • rbtrees.pl
      • dif.pl -- The dif/2 constraint
      • charsio.pl -- I/O on Lists of Character Codes
      • prolog_stack.pl
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl
      • dialect.pl
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl
      • base32.pl -- Base32 encoding and decoding
      • codesio.pl
      • coinduction.pl -- Co-Logic Programming
      • date.pl -- Process dates and times
      • heaps.pl
      • statistics.pl
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl
      • backcomp.pl
      • intercept.pl
      • files.pl
      • prolog_codewalk.pl
      • listing.pl
      • prolog_metainference.pl
      • fastrw.pl
      • prolog_config.pl
      • prolog_jiti.pl
      • ansi_term.pl
      • thread.pl -- High level thread primitives
      • tables.pl
      • nb_set.pl -- Non-backtrackable sets
      • make.pl
      • check.pl -- Consistency checking
      • hashtable.pl -- Hash tables
      • persistency.pl -- Provide persistent dynamic predicates
      • prolog_debug.pl -- User level debugging tools
      • portray_text.pl
      • optparse.pl
      • strings.pl -- String utilities
      • system.pl -- System utilities
      • prolog_trace.pl -- Print access to predicates
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • threadutil.pl -- Interactive thread utilities
      • prolog_profile.pl
      • writef.pl -- Old-style formatted write
      • streams.pl
      • ctypes.pl -- Character code classification
      • oset.pl
      • edit.pl
      • quintus.pl -- Quintus compatibility
      • increval.pl -- Incremental dynamic predicate modification
      • shell.pl -- Elementary shell commands
      • prolog_wrap.pl -- Wrapping predicates
      • prolog_history.pl
      • zip.pl -- Access resource ZIP archives
      • prolog_coverage.pl
      • qsave.pl
      • prolog_autoload.pl
      • exceptions.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.