/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 -- List Manipulation
      • broadcast.pl
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl
      • pairs.pl
      • prolog_source.pl -- Examine Prolog source-files
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl
      • pure_input.pl
      • solution_sequences.pl
      • ordsets.pl -- Ordered set manipulation
      • random.pl -- Random numbers
      • 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
      • 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
      • modules.pl
      • occurs.pl
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl -- Graph manipulation library
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • 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
      • terms.pl
      • date.pl
      • 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
      • base32.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl
      • coinduction.pl -- Co-Logic Programming
      • heaps.pl -- heaps/priority queues
      • rbtrees.pl -- Red black trees
      • statistics.pl -- Get information about resource usage
      • when.pl
      • backcomp.pl -- Backward compatibility
      • shell.pl
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_metainference.pl
      • files.pl
      • prolog_wrap.pl
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl -- XSB interface to tables
      • nb_set.pl -- Non-backtrackable sets
      • zip.pl
      • check.pl -- Consistency checking
      • thread.pl -- High level thread primitives
      • help.pl -- Text based manual
      • listing.pl -- List programs and pretty print clauses
      • writef.pl -- Old-style formatted write
      • prolog_autoload.pl -- Autoload all dependencies
      • edit.pl -- Editor interface
      • intercept.pl -- Intercept and signal interface
      • threadutil.pl -- Interactive thread utilities
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • rwlocks.pl
      • ctypes.pl -- Character code classification
      • ansi_term.pl
      • hashtable.pl -- Hash tables
      • optparse.pl
      • qsave.pl -- Save current program as a state or executable
      • make.pl -- Reload modified source files
      • prolog_debug.pl -- User level debugging tools
      • prolog_trace.pl
      • prolog_history.pl -- Per-directory persistent commandline history
      • prolog_config.pl -- Provide configuration information
      • explain.pl
      • portray_text.pl -- Portray text
      • prolog_coverage.pl -- Coverage analysis tool
      • oset.pl
      • streams.pl -- Manage Prolog streams
      • macros.pl
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • prolog_profile.pl -- Execution profiler
      • strings.pl -- String utilities
      • quintus.pl -- Quintus compatibility
      • fastrw.pl
      • exceptions.pl -- Exception classification
      • tty.pl
      • readln.pl
 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?