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

/usr/lib/swipl/library/clp/clpfd.pl
AllApplicationManualNameSummaryHelp

  • library
    • clp
      • clpfd.pl -- CLP(FD): Constraint Logic Programming over Finite Domains
        • in/2
        • ins/2
        • indomain/1
        • label/1
        • labeling/2
        • all_different/1
        • all_distinct/1
        • sum/3
        • scalar_product/4
        • #>=/2
        • #=</2
        • #=/2
        • #\=/2
        • #>/2
        • #</2
        • #\/1
        • #<==>/2
        • #==>/2
        • #<==/2
        • #/\/2
        • #\//2
        • #\/2
        • lex_chain/1
        • tuples_in/2
        • serialized/2
        • element/3
        • global_cardinality/2
        • global_cardinality/3
        • circuit/1
        • cumulative/1
        • cumulative/2
        • disjoint2/1
        • automaton/3
        • automaton/8
        • transpose/2
        • zcompare/3
        • chain/2
        • fd_var/1
        • fd_inf/2
        • fd_sup/2
        • fd_size/2
        • fd_dom/2
      • clpb.pl -- CLP(B): Constraint Logic Programming over Boolean Variables
 tuples_in(+Tuples, +Relation)
True iff all Tuples are elements of Relation. Each element of the list Tuples is a list of integers or finite domain variables. Relation is a list of lists of integers. Arbitrary finite relations, such as compatibility tables, can be modeled in this way. For example, if 1 is compatible with 2 and 5, and 4 is compatible with 0 and 3:
?- tuples_in([[X,Y]], [[1,2],[1,5],[4,0],[4,3]]), X = 4.
X = 4,
Y in 0\/3.

As another example, consider a train schedule represented as a list of quadruples, denoting departure and arrival places and times for each train. In the following program, Ps is a feasible journey of length 3 from A to D via trains that are part of the given schedule.

trains([[1,2,0,1],
        [2,3,4,5],
        [2,3,0,1],
        [3,4,5,6],
        [3,4,2,3],
        [3,4,8,9]]).

threepath(A, D, Ps) :-
        Ps = [[A,B,_T0,T1],[B,C,T2,T3],[C,D,T4,_T5]],
        T2 #> T1,
        T4 #> T3,
        trains(Ts),
        tuples_in(Ps, Ts).

In this example, the unique solution is found without labeling:

?- threepath(1, 4, Ps).
Ps = [[1, 2, 0, 1], [2, 3, 4, 5], [3, 4, 8, 9]].
ClioPatria (version V3.1.1-40-g9d9e003)