/usr/lib/swipl/library/occurs.pl
AllApplicationManualNameSummaryHelp

  • swipl
    • library
      • error.pl
      • apply.pl -- Apply predicates on a list
      • lists.pl
      • debug.pl -- Print debug messages and test assertions
      • broadcast.pl -- Event service
      • socket.pl -- Network socket (TCP and UDP) library
      • predicate_options.pl -- Access and analyse predicate options
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl -- Option list processing
      • uid.pl -- User and group management on Unix systems
      • unix.pl -- Unix specific operations
      • syslog.pl -- Unix syslog interface
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl -- Read utilities
      • ssl.pl -- Secure Socket Layer (SSL) library
      • crypto.pl -- Cryptography and authentication library
      • pldoc.pl -- Process source documentation
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
      • pengines.pl -- Pengines: Web Logic Programming Made Easy
      • record.pl -- Access compound arguments by name
      • memfile.pl
      • sgml.pl -- SGML, XML and HTML parser
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • time.pl -- Time and alarm library
      • uri.pl -- Process URIs
      • solution_sequences.pl -- Modify solution sequences
      • uuid.pl -- Universally Unique Identifier (UUID) Library
      • ordsets.pl -- Ordered set manipulation
      • random.pl -- Random numbers
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • pcre.pl -- Perl compatible regular expression matching for SWI-Prolog
      • pengines_io.pl -- Provide Prolog I/O for HTML clients
      • 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
      • yall.pl -- Lambda expressions
      • sha.pl -- SHA secure hashes
      • process.pl -- Create processes and redirect I/O
      • filesex.pl -- Extended operations on files
      • zlib.pl -- Zlib wrapper for SWI-Prolog
      • bdb.pl -- Berkeley DB interface
      • hash_stream.pl -- Maintain a hash on a stream
      • md5.pl -- MD5 hashes
      • porter_stem.pl
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • ctypes.pl -- Character code classification
      • 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 -- Lazy list handling
      • prolog_code.pl -- Utilities for reasoning about code
      • ugraphs.pl -- Graph manipulation library
      • xpath.pl -- Select nodes in an XML DOM
      • iostream.pl -- Utilities to deal with streams
      • doc_http.pl -- Documentation server
      • url.pl -- Analysing and constructing URL
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • prolog_config.pl -- Provide configuration information
      • git.pl -- Run GIT commands
      • strings.pl -- String utilities
      • dif.pl -- The dif/2 constraint
      • dialect.pl -- Support multiple Prolog dialects
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • terms.pl -- Term manipulation
      • listing.pl -- List programs and pretty print clauses
      • persistency.pl -- Provide persistent dynamic predicates
      • pengines_sandbox.pl -- Declare Pengine interaction sandbox-safe
      • term_to_json.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • prolog_clause.pl -- Get detailed source-information about a clause
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl -- Well Founded Semantics interface
      • mallocinfo.pl -- Memory allocation details
      • chr.pl
      • sort.pl
      • dicts.pl -- Dict utilities
      • varnumbers.pl -- Utilities for numbered terms
      • nb_set.pl -- Non-backtrackable sets
      • rbtrees.pl -- Red black trees
      • prolog_stream.pl -- A stream with Prolog callbacks
      • backcomp.pl -- Backward compatibility
      • charsio.pl -- I/O on Lists of Character Codes
      • heaps.pl -- heaps/priority queues
      • redis_streams.pl -- Using Redis streams
      • redis.pl -- Redis client
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl -- XSB interface to tables
      • archive.pl -- Access several archive formats
      • stomp.pl -- STOMP client.
      • rdf.pl -- RDF/XML parser
      • 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
      • when.pl -- Conditional coroutining
      • streampool.pl -- Input multiplexing
      • prolog_autoload.pl -- Autoload all dependencies
      • check.pl -- Consistency checking
      • shell.pl -- Elementary shell commands
      • crypt.pl
      • odbc.pl
      • intercept.pl -- Intercept and signal interface
      • writef.pl -- Old-style formatted write
      • files.pl
      • prolog_profile.pl -- Execution profiler
      • threadutil.pl -- Interactive thread utilities
      • hashtable.pl -- Hash tables
      • protobufs.pl -- Google's Protocol Buffers ("protobufs")
      • plunit.pl -- Unit Testing
      • editline.pl -- BSD libedit based command line editing
      • test_cover.pl -- Clause coverage analysis
      • help.pl -- Text based manual
      • table.pl
      • doc_latex.pl -- PlDoc LaTeX backend
      • mqi.pl
      • make.pl -- Reload modified source files
      • readline.pl -- GNU readline interface
      • prolog_debug.pl -- User level debugging tools
      • paxos.pl -- A Replicated Data Store
      • system.pl -- System utilities
      • prolog_codewalk.pl -- Prolog code walker
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • edit.pl -- Editor interface
      • prolog_metainference.pl -- Infer meta-predicate properties
      • prolog_wrap.pl -- Wrapping predicates
      • quintus.pl -- Quintus compatibility
      • oset.pl -- Ordered set manipulation
      • udp_broadcast.pl -- A UDP broadcast proxy
      • optparse.pl -- command line parsing
      • rdf_triple.pl -- Create triples from intermediate representation
      • rdf_parser.pl
      • rewrite_term.pl
      • thread.pl -- High level thread primitives
      • prolog_versions.pl -- Demand specific Prolog versions
      • rdf_write.pl -- Write RDF/XML from a list of triples
      • xsdp_types.pl -- XML-Schema primitive types
      • sgml_write.pl -- XML/SGML writer module
      • c14n2.pl -- C14n2 canonical XML documents
      • doc_files.pl -- Create stand-alone documentation files
      • streams.pl -- Manage Prolog streams
      • zip.pl -- Access resource ZIP archives
      • portray_text.pl -- Portray text
      • unicode.pl -- Unicode string handling
      • macros.pl -- Macro expansion
      • qsave.pl -- Save current program as a state or executable
      • yaml.pl -- Process YAML data
      • rlimit.pl
      • fastrw.pl -- Fast reading and writing of terms
      • snowball.pl -- The Snowball multi-lingual stemmer library
      • cgi.pl -- Read CGI parameters
      • xmldsig.pl -- XML Digital signature
      • double_metaphone.pl -- Phonetic string matching
      • pwp.pl -- Prolog Well-formed Pages
      • rwlocks.pl -- Read/write locks
      • xmlenc.pl -- XML encryption library
      • prolog_trace.pl -- Print access to predicates
      • readln.pl -- Read line as list of tokens
      • tty.pl -- Terminal operations
 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.