/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 -- Event service
      • shlib.pl
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl
      • main.pl
      • readutil.pl -- Read utilities
      • operators.pl
      • pairs.pl
      • prolog_source.pl -- Examine Prolog source-files
      • record.pl
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl
      • solution_sequences.pl
      • ordsets.pl
      • 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 -- Access and analyse predicate options
      • csv.pl
      • 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_colour.pl
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl
      • rbtrees.pl
      • 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 -- Support multiple Prolog dialects
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl
      • heaps.pl -- heaps/priority queues
      • exceptions.pl
      • base32.pl -- Base32 encoding and decoding
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • date.pl -- Process dates and times
      • statistics.pl -- Get information about resource usage
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl
      • backcomp.pl -- Backward compatibility
      • prolog_history.pl
      • optparse.pl
      • prolog_debug.pl -- User level debugging tools
      • threadutil.pl -- Interactive thread utilities
      • zip.pl
      • writef.pl
      • quintus.pl -- Quintus compatibility
      • strings.pl
      • ctypes.pl -- Character code classification
      • prolog_config.pl
      • prolog_codewalk.pl
      • listing.pl
      • prolog_wrap.pl
      • prolog_metainference.pl
      • help.pl
      • hashtable.pl
      • prolog_coverage.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • shell.pl
      • nb_set.pl -- Non-backtrackable sets
      • prolog_trace.pl -- Print access to predicates
      • rwlocks.pl
      • system.pl -- System utilities
      • increval.pl
      • tables.pl
      • check.pl
      • make.pl -- Reload modified source files
      • prolog_autoload.pl
      • prolog_profile.pl
      • thread.pl -- High level thread primitives
      • prolog_jiti.pl
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • oset.pl
      • explain.pl
      • intercept.pl -- Intercept and signal interface
      • portray_text.pl
      • files.pl
      • persistency.pl
      • edit.pl
      • qsave.pl
      • fastrw.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.