• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl
      • prolog_source.pl -- Examine Prolog source-files
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_colour.pl -- Prolog syntax colouring support.
      • record.pl -- Access compound arguments by name
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • occurs.pl
      • ordsets.pl -- Ordered set manipulation
      • assoc.pl -- Binary associations
      • ugraphs.pl
      • solution_sequences.pl
      • atom.pl
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl -- Run GIT commands
      • ctypes.pl -- Character code classification
      • utf8.pl
      • base64.pl
      • persistency.pl
      • pure_input.pl
      • nb_set.pl -- Non-backtrackable sets
      • 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
      • csv.pl
      • iostream.pl -- Utilities to deal with streams
      • dialect.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • yall.pl -- Lambda expressions
      • prolog_code.pl -- Utilities for reasoning about code
      • dif.pl -- The dif/2 constraint
      • thread.pl -- High level thread primitives
      • predicate_options.pl
      • rbtrees.pl
      • nb_rbtrees.pl -- Non-backtrackable operations on red black trees
      • sandbox.pl
      • prolog_format.pl
      • random.pl -- Random numbers
      • pprint.pl
      • modules.pl
      • lazy_lists.pl
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • dicts.pl
      • prolog_config.pl
      • shell.pl
      • backcomp.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • base32.pl -- Base32 encoding and decoding
      • heaps.pl -- heaps/priority queues
      • prolog_debug.pl
      • date.pl -- Process dates and times
      • threadutil.pl -- Interactive thread utilities
      • terms.pl
      • edit.pl
      • make.pl -- Reload modified source files
      • wfs.pl -- Well Founded Semantics interface
      • check.pl -- Consistency checking
      • codesio.pl -- I/O on Lists of Character Codes
      • statistics.pl
      • coinduction.pl -- Co-Logic Programming
      • files.pl
      • strings.pl
      • tableutil.pl -- Table inspection and statistics utilities
      • increval.pl
      • tables.pl
      • hashtable.pl
      • help.pl
      • prolog_trace.pl -- Print access to predicates
      • prolog_jiti.pl
      • intercept.pl -- Intercept and signal interface
      • listing.pl
      • macros.pl
      • optparse.pl
      • prolog_coverage.pl -- Coverage analysis tool
      • sort.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_profile.pl
      • quintus.pl
      • qsave.pl
      • zip.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • varnumbers.pl -- Utilities for numbered terms
      • when.pl
      • system.pl
      • prolog_wrap.pl
      • prolog_qlfmake.pl -- Compile the library to QLF format
      • exceptions.pl
      • tty.pl
      • oset.pl
      • portray_text.pl -- Portray text
      • writef.pl
      • streams.pl -- Manage Prolog streams
      • fastrw.pl
      • explain.pl
      • prolog_history.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
 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?
ClioPatria (version V3.1.1-59-g7b9a7a3)