protocol
interval_constraint_network_protocol
Allen interval constraint-network protocol built on canonical relation sets, intended for small-to-medium symbolic networks.
logtalk_load(intervals(loader))staticPublic predicates
network/1
True if Network is a valid interval constraint network represented as a network(Nodes, Constraints) term.
staticnetwork(Network)network(?compound) - zero_or_morenew/2
Constructs a new network for a list of distinct nodes. Distinct node pairs are initialized with the universal relation set.
staticnew(Nodes,Network)new(+list,-compound) - zero_or_onenodes/2
Returns the list of nodes in a network.
staticnodes(Network,Nodes)nodes(+compound,-list) - zero_or_onerelation/4
Returns the current relation set between two nodes in a network. A node is always equal to itself.
staticrelation(Network,Node1,Node2,RelationSet)relation(+compound,@term,@term,-list(atom)) - zero_or_oneentails/4
True if the current relation set between two nodes is a subset of a queried relation set.
staticentails(Network,Node1,Node2,RelationSet)entails(+compound,@term,@term,+list(atom)) - zero_or_oneentails/5
True if the current relation set between two nodes is a subset of a queried relation set and returns an explanation term describing either a direct constraint or a supporting propagation path.
staticentails(Network,Node1,Node2,RelationSet,Explanation)entails(+compound,@term,@term,+list(atom),-compound) - zero_or_onepossible/4
True if the current relation set between two nodes intersects a queried relation set.
staticpossible(Network,Node1,Node2,RelationSet)possible(+compound,@term,@term,+list(atom)) - zero_or_oneexcluded/4
True if the current relation set between two nodes is disjoint from a queried relation set.
staticexcluded(Network,Node1,Node2,RelationSet)excluded(+compound,@term,@term,+list(atom)) - zero_or_onecontradiction/2
Returns a simple contradiction explanation for an inconsistent network as contradiction(Node1, Node2, Cause).
staticcontradiction(Network,Explanation)contradiction(+compound,-compound) - zero_or_moreentailment_explanations/5
Returns the list of immediate explanations supporting an entailed relation query, using identity, direct, and propagated explanation terms.
staticentailment_explanations(Network,Node1,Node2,RelationSet,Explanations)entailment_explanations(+compound,@term,@term,+list(atom),-list(compound)) - zero_or_onecontradiction_explanations/2
Returns the list of contradiction explanations for all empty explicit pair constraints in a network.
staticcontradiction_explanations(Network,Explanations)contradiction_explanations(+compound,-list(compound)) - zero_or_onerefine/5
Refines the relation set between two distinct nodes by intersecting it with a new relation set.
staticrefine(Network,Node1,Node2,RelationSet,RefinedNetwork)refine(+compound,@term,@term,+list(atom),-compound) - zero_or_oneconsistent/1
True if all explicit pair constraints in a network are non-empty.
staticconsistent(Network)consistent(+compound) - zero_or_onepropagate/2
Computes a path-consistency closure and succeeds only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticpropagate(Network,Closure)propagate(+compound,-compound) - zero_or_onepropagate/3
Computes a path-consistency closure, returns the list of propagated changes, and succeeds only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticpropagate(Network,Closure,Changes)propagate(+compound,-compound,-list(compound)) - zero_or_onerefine_propagate/5
Refines the relation set between two distinct nodes and then propagates the consequences, succeeding only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticrefine_propagate(Network,Node1,Node2,RelationSet,Closure)refine_propagate(+compound,@term,@term,+list(atom),-compound) - zero_or_onerefine_propagate/6
Refines the relation set between two distinct nodes, propagates the consequences incrementally, and returns the list of direct and propagated changes, succeeding only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticrefine_propagate(Network,Node1,Node2,RelationSet,Closure,Changes)refine_propagate(+compound,@term,@term,+list(atom),-compound,-list(compound)) - zero_or_onerefine_propagate/3
Applies a batch of relation-set refinements represented as constraint(Node1, Node2, RelationSet) terms and then propagates the combined consequences, succeeding only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticrefine_propagate(Network,Constraints,Closure)refine_propagate(+compound,+list(compound),-compound) - zero_or_onerefine_propagate/4
Applies a batch of relation-set refinements, propagates the combined consequences incrementally, and returns the list of direct and propagated changes, succeeding only if the resulting network is consistent. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticrefine_propagate(Network,Constraints,Closure,Changes)refine_propagate(+compound,+list(compound),-compound,-list(compound)) - zero_or_onepropagation_triple/2
Extracts the causing node triple triple(Node1, Node3, Node2) from a propagated change term.
staticpropagation_triple(Change,Triple)propagation_triple(+compound,-compound) - zero_or_onepropagation_triples/2
Collects the unique node triples that caused propagated refinements in a list of change terms.
staticpropagation_triples(Changes,Triples)propagation_triples(+list(compound),-list(compound)) - zero_or_onepath_consistency/2
Computes the path-consistency closure of a network by iterative refinement using relation-set composition and intersection. Intended for small-to-medium symbolic networks; not a large-scale temporal CSP solver.
staticpath_consistency(Network,Closure)path_consistency(+compound,-compound) - zero_or_oneconstraints/2
Returns the explicit pair constraints in canonical storage order using constraint(Node1, Node2, RelationSet) terms.
staticconstraints(Network,Constraints)constraints(+compound,-list(compound)) - zero_or_onesubsumes/2
True if the first network is at least as general as the second network, i.e. every pair relation set in the second network is a subset of the corresponding relation set in the first network.
staticsubsumes(Network1,Network2)subsumes(+compound,+compound) - zero_or_oneequivalent/2
True if two networks contain the same nodes and mutually subsume each other.
staticequivalent(Network1,Network2)equivalent(+compound,+compound) - zero_or_oneProtected predicates
(none)
Private predicates
(none)
Operators
(none)