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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl
      • main.pl -- Provide entry point for scripts
      • readutil.pl -- Read utilities
      • 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 -- Modify solution sequences
      • ordsets.pl -- Ordered set manipulation
      • 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 -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl
      • 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_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
      • rbtrees.pl
      • dif.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl -- Well Founded Semantics interface
      • dialect.pl
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl -- Utilities for numbered terms
      • ansi_term.pl
      • backcomp.pl -- Backward compatibility
      • listing.pl
      • when.pl
      • oset.pl
      • base32.pl -- Base32 encoding and decoding
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • date.pl -- Process dates and times
      • heaps.pl -- heaps/priority queues
      • statistics.pl
      • terms.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • portray_text.pl
      • edit.pl
      • make.pl -- Reload modified source files
      • nb_set.pl -- Non-backtrackable sets
      • prolog_autoload.pl
      • check.pl -- Consistency checking
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_versions.pl
      • prolog_debug.pl
      • streams.pl
      • prolog_wrap.pl
      • rwlocks.pl
      • thread.pl -- High level thread primitives
      • tables.pl
      • zip.pl -- Access resource ZIP archives
      • prolog_metainference.pl
      • strings.pl
      • ctypes.pl
      • prolog_trace.pl
      • help.pl
      • quintus.pl
      • shell.pl
      • prolog_jiti.pl
      • persistency.pl
      • optparse.pl
      • threadutil.pl -- Interactive thread utilities
      • increval.pl
      • macros.pl
      • hashtable.pl
      • fastrw.pl
      • prolog_coverage.pl
      • prolog_history.pl
      • qsave.pl
      • prolog_profile.pl -- Execution profiler
      • writef.pl
      • system.pl -- System utilities
      • exceptions.pl
      • prolog_config.pl -- Provide configuration information
      • intercept.pl
      • explain.pl
      • 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.