protocol

multisets_protocol

Protocol for multiset operations over lists.

Availability:
logtalk_load(multisets(loader))
Author: Paulo Moura
Version: 1:0:0
Date: 2026-05-12
Compilation flags:
static
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

Public predicates

multisets/3

Generates all K-multisets (unordered K-element selections with replacement) of a list using default order.

Compilation flags:
static
Template:
multisets(K,List,Multisets)
Mode and number of proofs:
multisets(+integer,+list,-list) - one

multiset/3

True iff the third argument is a K-multiset with replacement of a list using default order.

Compilation flags:
static
Template:
multiset(K,List,Multiset)
Mode and number of proofs:
multiset(+integer,+list,-list) - one_or_more

multisets/4

Generates all K-multisets with the given order: default or lexicographic.

Compilation flags:
static
Template:
multisets(K,List,Order,Multisets)
Mode and number of proofs:
multisets(+integer,+list,+atom,-list) - one

multiset/4

True iff the fourth argument is a K-multiset with replacement with the given order: default or lexicographic.

Compilation flags:
static
Template:
multiset(K,List,Order,Multiset)
Mode and number of proofs:
multiset(+integer,+list,+atom,-list) - one_or_more

distinct_multisets/3

Generates all distinct K-multisets (deduplicating repeated values in the input list) using default order.

Compilation flags:
static
Template:
distinct_multisets(K,List,Multisets)
Mode and number of proofs:
distinct_multisets(+integer,+list,-list) - one

distinct_multiset/3

True iff the third argument is a distinct K-multiset with replacement of a list using default order.

Compilation flags:
static
Template:
distinct_multiset(K,List,Multiset)
Mode and number of proofs:
distinct_multiset(+integer,+list,-list) - one_or_more

distinct_multisets/4

Generates all distinct K-multisets with the given order: default or lexicographic.

Compilation flags:
static
Template:
distinct_multisets(K,List,Order,Multisets)
Mode and number of proofs:
distinct_multisets(+integer,+list,+atom,-list) - one

distinct_multiset/4

True iff the fourth argument is a distinct K-multiset with replacement with the given order: default or lexicographic.

Compilation flags:
static
Template:
distinct_multiset(K,List,Order,Multiset)
Mode and number of proofs:
distinct_multiset(+integer,+list,+atom,-list) - one_or_more

nth_multiset/4

Returns the K-multiset at a given zero-based index using default order.

Compilation flags:
static
Template:
nth_multiset(K,List,Index,Multiset)
Mode and number of proofs:
nth_multiset(+integer,+list,+integer,-list) - zero_or_one

nth_multiset/5

Returns the K-multiset at a given zero-based index in the given order: default or lexicographic.

Compilation flags:
static
Template:
nth_multiset(K,List,Order,Index,Multiset)
Mode and number of proofs:
nth_multiset(+integer,+list,+atom,+integer,-list) - zero_or_one

multiset_index/4

Returns the zero-based index of a K-multiset using default order.

Compilation flags:
static
Template:
multiset_index(K,List,Multiset,Index)
Mode and number of proofs:
multiset_index(+integer,+list,+list,-integer) - zero_or_one

multiset_index/5

Returns the zero-based index of a K-multiset in the given order: default or lexicographic.

Compilation flags:
static
Template:
multiset_index(K,List,Order,Multiset,Index)
Mode and number of proofs:
multiset_index(+integer,+list,+atom,+list,-integer) - zero_or_one

count_multisets/3

Counts the number of K-multisets with replacement of a list.

Compilation flags:
static
Template:
count_multisets(K,List,Count)
Mode and number of proofs:
count_multisets(+integer,+list,-integer) - one

count_distinct_multisets/3

Counts the number of distinct K-multisets with replacement of a list (deduplicating repeated values in the input list).

Compilation flags:
static
Template:
count_distinct_multisets(K,List,Count)
Mode and number of proofs:
count_distinct_multisets(+integer,+list,-integer) - one

nth_distinct_multiset/4

Returns the distinct K-multiset at a given zero-based index in default generation order.

Compilation flags:
static
Template:
nth_distinct_multiset(K,List,Index,Multiset)
Mode and number of proofs:
nth_distinct_multiset(+integer,+list,+integer,-list) - zero_or_one

distinct_multiset_index/4

Returns the zero-based index of a distinct K-multiset in default generation order.

Compilation flags:
static
Template:
distinct_multiset_index(K,List,Multiset,Index)
Mode and number of proofs:
distinct_multiset_index(+integer,+list,+list,-integer) - zero_or_one

random_multiset/3

Returns a random K-multiset with replacement of a list.

Compilation flags:
static
Template:
random_multiset(K,List,Multiset)
Mode and number of proofs:
random_multiset(+integer,+list,-list) - zero_or_one

sample_multisets/4

Returns SampleCount random K-multisets with replacement of a list, sampled with replacement.

Compilation flags:
static
Template:
sample_multisets(K,List,SampleCount,Samples)
Mode and number of proofs:
sample_multisets(+integer,+list,+integer,-list) - zero_or_one

random_distinct_multiset/3

Returns a random distinct K-multiset with replacement of a list (deduplicating repeated values in the input list).

Compilation flags:
static
Template:
random_distinct_multiset(K,List,Multiset)
Mode and number of proofs:
random_distinct_multiset(+integer,+list,-list) - zero_or_one

sample_distinct_multisets/4

Returns SampleCount random distinct K-multisets with replacement of a list, sampled with replacement after deduplicating repeated values in the input list.

Compilation flags:
static
Template:
sample_distinct_multisets(K,List,SampleCount,Samples)
Mode and number of proofs:
sample_distinct_multisets(+integer,+list,+integer,-list) - zero_or_one

next_multiset/3

Returns the next distinct multiset value in lexicographic order induced by the first argument.

Compilation flags:
static
Template:
next_multiset(List,Multiset,Next)
Mode and number of proofs:
next_multiset(+list,+list,-list) - zero_or_one

previous_multiset/3

Returns the previous distinct multiset value in lexicographic order induced by the first argument.

Compilation flags:
static
Template:
previous_multiset(List,Multiset,Previous)
Mode and number of proofs:
previous_multiset(+list,+list,-list) - zero_or_one

Protected predicates

(none)

Private predicates

(none)

Operators

(none)