/usr/local/lib/swipl/library/aggregate.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
      • broadcast.pl -- Event service
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl -- Option list processing
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl -- Generate unique symbols
      • settings.pl
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl -- Read utilities
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl
      • random.pl -- Random numbers
      • base64.pl
      • 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 -- Lambda expressions
      • 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
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • modules.pl
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • 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 -- Term manipulation
      • date.pl
      • persistency.pl -- Provide persistent dynamic predicates
      • iostream.pl -- Utilities to deal with streams
      • prolog_stack.pl
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl -- Well Founded Semantics interface
      • prolog_code.pl
      • sort.pl
      • dicts.pl -- Dict utilities
      • dif.pl -- The dif/2 constraint
      • varnumbers.pl
      • pio.pl
      • base32.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl
      • coinduction.pl -- Co-Logic Programming
      • heaps.pl
      • rbtrees.pl -- Red black trees
      • statistics.pl
      • when.pl -- Conditional coroutining
      • backcomp.pl -- Backward compatibility
      • increval.pl -- Incremental dynamic predicate modification
      • tables.pl -- XSB interface to tables
      • help.pl
      • zip.pl -- Access resource ZIP archives
      • prolog_debug.pl
      • ctypes.pl -- Character code classification
      • check.pl -- Consistency checking
      • optparse.pl -- command line parsing
      • threadutil.pl -- Interactive thread utilities
      • nb_set.pl -- Non-backtrackable sets
      • hashtable.pl
      • shell.pl
      • prolog_wrap.pl
      • portray_text.pl
      • prolog_profile.pl -- Execution profiler
      • thread.pl
      • edit.pl
      • make.pl -- Reload modified source files
      • quintus.pl -- Quintus compatibility
      • listing.pl -- List programs and pretty print clauses
      • prolog_autoload.pl
      • ansi_term.pl
      • prolog_jiti.pl
      • oset.pl
      • fastrw.pl
      • streams.pl -- Manage Prolog streams
      • prolog_coverage.pl -- Coverage analysis tool
      • intercept.pl -- Intercept and signal interface
      • strings.pl -- String utilities
      • writef.pl
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_trace.pl -- Print access to predicates
      • exceptions.pl -- Exception classification
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • qsave.pl
      • files.pl
      • explain.pl
      • rwlocks.pl
      • prolog_metainference.pl
      • macros.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?