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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl -- Apply predicates on a list
      • lists.pl
      • broadcast.pl
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl -- Read utilities
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl
      • random.pl
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
        • safe_meta/2
        • aggregate/3
        • aggregate/4
        • aggregate_all/3
        • aggregate_all/4
        • foldall/4
        • foreach/2
        • free_variables/4
      • yall.pl
      • 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
      • predicate_options.pl -- Access and analyse predicate options
      • 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
      • prolog_xref.pl
      • prolog_colour.pl
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl -- Analysing and constructing URL
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl -- Run GIT commands
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • dialect.pl -- Support multiple Prolog dialects
      • system.pl -- System utilities
      • terms.pl
      • date.pl -- Process dates and times
      • persistency.pl -- Provide persistent dynamic predicates
      • iostream.pl -- Utilities to deal with streams
      • 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 -- Well Founded Semantics interface
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • dicts.pl -- Dict utilities
      • dif.pl -- The dif/2 constraint
      • varnumbers.pl -- Utilities for numbered terms
      • pio.pl -- Pure I/O
      • thread.pl
      • nb_set.pl
      • edit.pl
      • backcomp.pl -- Backward compatibility
      • strings.pl -- String utilities
      • base32.pl -- Base32 encoding and decoding
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • heaps.pl -- heaps/priority queues
      • rbtrees.pl -- Red black trees
      • statistics.pl -- Get information about resource usage
      • when.pl -- Conditional coroutining
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl -- XSB interface to tables
      • threadutil.pl -- Interactive thread utilities
      • ansi_term.pl
      • hashtable.pl
      • macros.pl
      • intercept.pl -- Intercept and signal interface
      • prolog_metainference.pl
      • prolog_codewalk.pl -- Prolog code walker
      • fastrw.pl -- Fast reading and writing of terms
      • prolog_coverage.pl -- Coverage analysis tool
      • prolog_debug.pl -- User level debugging tools
      • prolog_profile.pl -- Execution profiler
      • check.pl -- Consistency checking
      • prolog_autoload.pl -- Autoload all dependencies
      • ctypes.pl -- Character code classification
      • writef.pl -- Old-style formatted write
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • explain.pl
      • listing.pl -- List programs and pretty print clauses
      • zip.pl
      • tty.pl
      • prolog_trace.pl -- Print access to predicates
      • prolog_wrap.pl -- Wrapping predicates
      • make.pl -- Reload modified source files
      • files.pl
      • portray_text.pl -- Portray text
      • optparse.pl
      • quintus.pl -- Quintus compatibility
      • help.pl -- Text based manual
      • shell.pl
      • exceptions.pl -- Exception classification
      • rwlocks.pl -- Read/write locks
      • oset.pl
      • streams.pl -- Manage Prolog streams
      • prolog_history.pl -- Per-directory persistent commandline history
      • prolog_config.pl -- Provide configuration information
      • qsave.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
 free_variables(:Generator, +Template, +VarList0, -VarList) is det
Find free variables in bagof/setof template. In order to handle variables properly, we have to find all the universally quantified variables in the Generator. All variables as yet unbound are universally quantified, unless
  1. they occur in the template
  2. they are bound by X^P, setof/3, or bagof/3

free_variables(Generator, Template, OldList, NewList) finds this set using OldList as an accumulator.

author
- Richard O'Keefe
- Jan Wielemaker (made some SWI-Prolog enhancements)
license
- Public domain (from DEC10 library).
To be done
- Distinguish between control-structures and data terms.
- Exploit our built-in term_variables/2 at some places?