- Documentation
- Reference manual
- The SWI-Prolog library
- library(aggregate): Aggregation operators on backtrackable predicates
- library(ansi_term): Print decorated text to ANSI consoles
- library(apply): Apply predicates on a list
- library(assoc): Association lists
- library(broadcast): Broadcast and receive event notifications
- library(charsio): I/O on Lists of Character Codes
- library(check): Consistency checking
- library(clpb): CLP(B): Constraint Logic Programming over Boolean Variables
- library(clpfd): CLP(FD): Constraint Logic Programming over Finite Domains
- library(clpqr): Constraint Logic Programming over Rationals and Reals
- library(csv): Process CSV (Comma-Separated Values) data
- library(dcg/basics): Various general DCG utilities
- library(dcg/high_order): High order grammar operations
- library(debug): Print debug messages and test assertions
- library(dicts): Dict utilities
- library(error): Error generating support
- library(fastrw): Fast reading and writing of terms
- library(gensym): Generate unique symbols
- library(heaps): heaps/priority queues
- library(increval): Incremental dynamic predicate modification
- library(intercept): Intercept and signal interface
- library(iostream): Utilities to deal with streams
- library(listing): List programs and pretty print clauses
- library(lists): List Manipulation
- library(macros): Macro expansion
- library(main): Provide entry point for scripts
- library(nb_set): Non-backtrackable set
- library(www_browser): Open a URL in the users browser
- library(occurs): Finding and counting sub-terms
- library(option): Option list processing
- library(optparse): command line parsing
- library(ordsets): Ordered set manipulation
- library(pairs): Operations on key-value lists
- library(persistency): Provide persistent dynamic predicates
- library(pio): Pure I/O
- library(portray_text): Portray text
- library(predicate_options): Declare option-processing of predicates
- library(prolog_coverage): Coverage analysis tool
- library(prolog_debug): User level debugging tools
- library(prolog_jiti): Just In Time Indexing (JITI) utilities
- library(prolog_trace): Print access to predicates
- library(prolog_versions): Demand specific (Prolog) versions
- library(prolog_xref): Prolog cross-referencer data collection
- library(quasi_quotations): Define Quasi Quotation syntax
- library(random): Random numbers
- library(rbtrees): Red black trees
- library(readutil): Read utilities
- library(record): Access named fields in a term
- library(registry): Manipulating the Windows registry
- library(rwlocks): Read/write locks
- library(settings): Setting management
- library(statistics): Get information about resource usage
- library(strings): String utilities
- library(simplex): Solve linear programming problems
- library(solution_sequences): Modify solution sequences
- library(tables): XSB interface to tables
- library(terms): Term manipulation
- library(thread): High level thread primitives
- library(thread_pool): Resource bounded thread management
- library(ugraphs): Graph manipulation library
- library(url): Analysing and constructing URL
- library(varnumbers): Utilities for numbered terms
- library(yall): Lambda expressions
- The SWI-Prolog library
- Packages
- Reference manual
A.20 library(increval): Incremental dynamic predicate modification
- Compatibility
- XSB
This module emulates the XSB module increval
. This
module serves two goals: (1) provide alternatives for the dynamic clause
manipulation predicates that propagate into the incremental tables and
(2) query the dynamically maintained Incremental Depency Graph
(IDG).
The change propagation for incremental dynamic predicates. SWI-Prolog relies in prolog_listen/2 to forward any change to dynamic predicates to the table IDG and incr_assert/1 and friends thus simply call the corresponding database update.
- [nondet]is_incremental_subgoal(?SubGoal)
- This predicate non-deterministically unifies Subgoal with incrementally tabled subgoals that are currently table entries.
- [nondet]incr_directly_depends(:Goal1, :Goal2)
- True if Goal1 depends on Goal2 in the IDG.
- Compatibility
- : In XSB, at least one of Goal 1 or Goal 2 must be bound. This implementation may be used with both arguments unbound.
- [nondet]incr_trans_depends(:Goal1, Goal2)
- True for each pair in the transitive closure of
incr_directly_depends(G1, G2)
. - [det]incr_invalid_subgoals(-List)
- List is a sorted list (set) of the incremental subgoals that are currently invalid.
- [semidet]incr_is_invalid(:Subgoal)
- True when Subgoal’s table is marked as invalid.
- [det]incr_invalidate_calls(:Goal)
- Invalidate all tables for subgoals of Goal as well as tables that are affected by these.
- [det]incr_invalidate_call(:Goal)
- This is the XSB name, but the manual says incr_invalidate_calls/1
and the comment with the code suggests this is misnamed.
- deprecated
- Use incr_invalidate_calls/1.
- incr_table_update
- Updated all invalid tables
- [det]incr_propagate_calls(:Answer)
- Activate the monotonic answer propagation similarly to when a new fact is asserted for a monotonic dynamic predicate. The Answer term must match a monotonic dynamic predicate.