.. index:: setp .. _setp/0: .. rst-class:: right **protocol** ``setp`` ======== Set protocol. | **Availability:** | ``logtalk_load(sets(loader))`` | **Author:** Paulo Moura | **Version:** 1:6:0 | **Date:** 2019-05-23 | **Compilation flags:** | ``static`` | **Dependencies:** | (none) | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: as_set/2 .. _setp/0::as_set/2: ``as_set/2`` ^^^^^^^^^^^^ Returns a set with all unique elements from the given list. | **Compilation flags:** | ``static`` | **Template:** | ``as_set(List,Set)`` | **Mode and number of proofs:** | ``as_set(@list,-set)`` - ``one`` ------------ .. index:: as_list/2 .. _setp/0::as_list/2: ``as_list/2`` ^^^^^^^^^^^^^ Returns a list with all elements of the given set. | **Compilation flags:** | ``static`` | **Template:** | ``as_list(Set,List)`` | **Mode and number of proofs:** | ``as_list(@set,-list)`` - ``one`` ------------ .. index:: delete/3 .. _setp/0::delete/3: ``delete/3`` ^^^^^^^^^^^^ Deletes an element from a set returning the set of remaining elements. | **Compilation flags:** | ``static`` | **Template:** | ``delete(Set,Element,Remaining)`` | **Mode and number of proofs:** | ``delete(+set,@term,?set)`` - ``one`` ------------ .. index:: disjoint/2 .. _setp/0::disjoint/2: ``disjoint/2`` ^^^^^^^^^^^^^^ True if the two sets have no element in common. | **Compilation flags:** | ``static`` | **Template:** | ``disjoint(Set1,Set2)`` | **Mode and number of proofs:** | ``disjoint(+set,+set)`` - ``zero_or_one`` ------------ .. index:: equal/2 .. _setp/0::equal/2: ``equal/2`` ^^^^^^^^^^^ True if the two sets are equal. | **Compilation flags:** | ``static`` | **Template:** | ``equal(Set1,Set2)`` | **Mode and number of proofs:** | ``equal(+set,+set)`` - ``zero_or_one`` ------------ .. index:: empty/1 .. _setp/0::empty/1: ``empty/1`` ^^^^^^^^^^^ True if the set is empty. | **Compilation flags:** | ``static`` | **Template:** | ``empty(Set)`` | **Mode and number of proofs:** | ``empty(+set)`` - ``zero_or_one`` ------------ .. index:: insert/3 .. _setp/0::insert/3: ``insert/3`` ^^^^^^^^^^^^ Inserts an element in a set, returning the resulting set. | **Compilation flags:** | ``static`` | **Template:** | ``insert(In,Element,Out)`` | **Mode and number of proofs:** | ``insert(+set,+term,?set)`` - ``one`` ------------ .. index:: insert_all/3 .. _setp/0::insert_all/3: ``insert_all/3`` ^^^^^^^^^^^^^^^^ Inserts a list of elements in a set, returning the resulting set. | **Compilation flags:** | ``static`` | **Template:** | ``insert_all(List,In,Out)`` | **Mode and number of proofs:** | ``insert_all(+list,+set,?set)`` - ``one`` ------------ .. index:: intersect/2 .. _setp/0::intersect/2: ``intersect/2`` ^^^^^^^^^^^^^^^ True if the two sets have at least one element in common. | **Compilation flags:** | ``static`` | **Template:** | ``intersect(Set1,Set2)`` | **Mode and number of proofs:** | ``intersect(+set,+set)`` - ``zero_or_one`` ------------ .. index:: intersection/3 .. _setp/0::intersection/3: ``intersection/3`` ^^^^^^^^^^^^^^^^^^ Returns the intersection of ``Set1`` and ``Set2``. | **Compilation flags:** | ``static`` | **Template:** | ``intersection(Set1,Set2,Intersection)`` | **Mode and number of proofs:** | ``intersection(+set,+set,?set)`` - ``zero_or_one`` ------------ .. index:: intersection/4 .. _setp/0::intersection/4: ``intersection/4`` ^^^^^^^^^^^^^^^^^^ True if ``Intersection`` is the intersection of ``Set1`` and ``Set2`` and ``Difference`` is the difference between ``Set2`` and ``Set1``. | **Compilation flags:** | ``static`` | **Template:** | ``intersection(Set1,Set2,Intersection,Difference)`` | **Mode and number of proofs:** | ``intersection(+set,+set,?set,?set)`` - ``zero_or_one`` ------------ .. index:: size/2 .. _setp/0::size/2: ``size/2`` ^^^^^^^^^^ Number of set elements. | **Compilation flags:** | ``static`` | **Template:** | ``size(Set,Size)`` | **Mode and number of proofs:** | ``size(+set,?integer)`` - ``zero_or_one`` ------------ .. index:: member/2 .. _setp/0::member/2: ``member/2`` ^^^^^^^^^^^^ ``Element`` is a member of set ``Set``. | **Compilation flags:** | ``static`` | **Template:** | ``member(Element,Set)`` | **Mode and number of proofs:** | ``member(+term,+set)`` - ``zero_or_one`` | ``member(-term,+set)`` - ``zero_or_more`` ------------ .. index:: memberchk/2 .. _setp/0::memberchk/2: ``memberchk/2`` ^^^^^^^^^^^^^^^ Checks if a term is a member of a set. | **Compilation flags:** | ``static`` | **Template:** | ``memberchk(Element,Set)`` | **Mode and number of proofs:** | ``memberchk(+term,+set)`` - ``zero_or_one`` ------------ .. index:: powerset/2 .. _setp/0::powerset/2: ``powerset/2`` ^^^^^^^^^^^^^^ Returns the power set of a set, represented as a list of sets. | **Compilation flags:** | ``static`` | **Template:** | ``powerset(Set,Powerset)`` | **Mode and number of proofs:** | ``powerset(+set,-list)`` - ``one`` ------------ .. index:: product/3 .. _setp/0::product/3: ``product/3`` ^^^^^^^^^^^^^ Returns the cartesian product of two sets. | **Compilation flags:** | ``static`` | **Template:** | ``product(Set1,Set2,Product)`` | **Mode and number of proofs:** | ``product(+set,+set,-set)`` - ``one`` ------------ .. index:: select/3 .. _setp/0::select/3: ``select/3`` ^^^^^^^^^^^^ Selects an element from a set, returning the set of remaining elements. | **Compilation flags:** | ``static`` | **Template:** | ``select(Element,Set,Remaining)`` | **Mode and number of proofs:** | ``select(?term,+set,?set)`` - ``zero_or_more`` ------------ .. index:: selectchk/3 .. _setp/0::selectchk/3: ``selectchk/3`` ^^^^^^^^^^^^^^^ Checks that an element can be selected from a set, returning the set of remaining elements. | **Compilation flags:** | ``static`` | **Template:** | ``selectchk(Element,Set,Remaining)`` | **Mode and number of proofs:** | ``selectchk(?term,+set,?set)`` - ``zero_or_one`` ------------ .. index:: subset/2 .. _setp/0::subset/2: ``subset/2`` ^^^^^^^^^^^^ True if ``Subset`` is a subset of ``Set``. | **Compilation flags:** | ``static`` | **Template:** | ``subset(Subset,Set)`` | **Mode and number of proofs:** | ``subset(+set,+set)`` - ``zero_or_one`` ------------ .. index:: subtract/3 .. _setp/0::subtract/3: ``subtract/3`` ^^^^^^^^^^^^^^ True when ``Difference`` contains all and only the elements of ``Set1`` which are not also in ``Set2``. | **Compilation flags:** | ``static`` | **Template:** | ``subtract(Set1,Set2,Difference)`` | **Mode and number of proofs:** | ``subtract(+set,+set,?set)`` - ``zero_or_one`` ------------ .. index:: symdiff/3 .. _setp/0::symdiff/3: ``symdiff/3`` ^^^^^^^^^^^^^ True if ``Difference`` is the symmetric difference of ``Set1`` and ``Set2``, containing all elements that are not in the sets intersection. | **Compilation flags:** | ``static`` | **Template:** | ``symdiff(Set1,Set2,Difference)`` | **Mode and number of proofs:** | ``symdiff(+set,+set,?set)`` - ``zero_or_one`` ------------ .. index:: union/3 .. _setp/0::union/3: ``union/3`` ^^^^^^^^^^^ True if ``Union`` is the union of ``Set1`` and ``Set2``. | **Compilation flags:** | ``static`` | **Template:** | ``union(Set1,Set2,Union)`` | **Mode and number of proofs:** | ``union(+set,+set,?set)`` - ``zero_or_one`` ------------ .. index:: union/4 .. _setp/0::union/4: ``union/4`` ^^^^^^^^^^^ True if ``Union`` is the union of ``Set1`` and ``Set2`` and ``Difference`` is the difference between ``Set2`` and ``Set1``. | **Compilation flags:** | ``static`` | **Template:** | ``union(Set1,Set2,Union,Difference)`` | **Mode and number of proofs:** | ``union(+set,+set,?set,?set)`` - ``zero_or_one`` ------------ Protected predicates -------------------- (none) Private predicates ------------------ (none) Operators --------- (none) .. seealso:: :ref:`set `, :ref:`set(Type) `