• 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
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl
      • arithmetic.pl
      • 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
      • 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
      • 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
      • 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
      • 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
      • 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
      • listing.pl
      • macros.pl
      • optparse.pl
      • prolog_coverage.pl
      • sort.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • prolog_codewalk.pl
      • 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
      • writef.pl
      • streams.pl -- Manage Prolog streams
      • fastrw.pl
      • explain.pl
      • prolog_history.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?
ClioPatria (version V3.1.1-59-g7b9a7a3)