A.9.17.4 Global constraints
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • The SWI-Prolog library
        • library(clpfd): CLP(FD): Constraint Logic Programming over Finite Domains
          • CLP(FD) predicate index
            • Global constraints
              • all_distinct/1
              • all_different/1
              • sum/3
              • scalar_product/4
              • 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
              • chain/2
    • Packages
Availability::- use_module(library(clpfd)).
Sourceautomaton(+Vs, +Nodes, +Arcs)
Describes a list of finite domain variables with a finite automaton. Equivalent to automaton(Vs, _, Vs, Nodes, Arcs, [], [], _), a common use case of automaton/8. In the following example, a list of binary finite domain variables is constrained to contain at least two consecutive ones:
two_consecutive_ones(Vs) :-
        automaton(Vs, [source(a),sink(c)],
                  [arc(a,0,a), arc(a,1,b),
                   arc(b,0,a), arc(b,1,c),
                   arc(c,0,c), arc(c,1,c)]).

Example query:

?- length(Vs, 3), two_consecutive_ones(Vs), label(Vs).
Vs = [0, 1, 1] ;
Vs = [1, 1, 0] ;
Vs = [1, 1, 1].