/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 -- Event service
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl -- Generate unique symbols
      • settings.pl
      • arithmetic.pl
      • main.pl -- Provide entry point for scripts
      • readutil.pl -- Read utilities
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • 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 -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • yall.pl
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • 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 -- 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_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • 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 -- Manage Prolog break-points
      • wfs.pl -- Well Founded Semantics interface
      • dialect.pl
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl
      • heaps.pl -- heaps/priority queues
      • base32.pl
      • codesio.pl
      • coinduction.pl -- Co-Logic Programming
      • date.pl -- Process dates and times
      • statistics.pl -- Get information about resource usage
      • terms.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • when.pl -- Conditional coroutining
      • backcomp.pl -- Backward compatibility
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • thread.pl -- High level thread primitives
      • intercept.pl -- Intercept and signal interface
      • listing.pl -- List programs and pretty print clauses
      • help.pl -- Text based manual
      • files.pl
      • shell.pl
      • hashtable.pl -- Hash tables
      • check.pl
      • prolog_codewalk.pl -- Prolog code walker
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • tables.pl
      • threadutil.pl -- Interactive thread utilities
      • quintus.pl -- Quintus compatibility
      • oset.pl
      • portray_text.pl
      • prolog_profile.pl -- Execution profiler
      • macros.pl -- Macro expansion
      • zip.pl -- Access resource ZIP archives
      • increval.pl -- Incremental dynamic predicate modification
      • persistency.pl -- Provide persistent dynamic predicates
      • optparse.pl -- command line parsing
      • explain.pl -- Describe Prolog Terms
      • prolog_metainference.pl
      • prolog_debug.pl -- User level debugging tools
      • fastrw.pl -- Fast reading and writing of terms
      • rwlocks.pl
      • prolog_wrap.pl
      • exceptions.pl -- Exception classification
      • edit.pl -- Editor interface
      • make.pl -- Reload modified source files
      • streams.pl -- Manage Prolog streams
      • prolog_history.pl
      • prolog_config.pl -- Provide configuration information
      • prolog_coverage.pl -- Coverage analysis tool
      • prolog_trace.pl
      • qsave.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • writef.pl -- Old-style formatted write
      • nb_set.pl -- Non-backtrackable sets
      • ctypes.pl
      • strings.pl -- String utilities
      • system.pl -- System utilities
 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.