.. index:: single: integer
.. _integer/0:

.. rst-class:: right

**object**

``integer``
===========

Integer data type predicates.

| **Availability:** 
|    ``logtalk_load(types(loader))``

| **Author:** Paulo Moura
| **Version:** 1:56:0
| **Date:** 2025-05-26

| **Compilation flags:**
|    ``static, context_switching_calls``


| **Extends:**
|    ``public`` :ref:`number <number/0>`

| **Remarks:**

   - Portability notes: This object will use the backend Prolog system ``between/3``, ``plus/3``, and ``succ/2`` built-in predicates when available.

| **Inherited public predicates:**
|     :ref:`comparingp/0::(<)/2`  :ref:`comparingp/0::(=:=)/2`  :ref:`comparingp/0::(=<)/2`  :ref:`comparingp/0::(=\=)/2`  :ref:`number/0::=~= / 2`  :ref:`comparingp/0::(>)/2`  :ref:`comparingp/0::(>=)/2`  :ref:`number/0::approximately_equal/2`  :ref:`number/0::approximately_equal/3`  :ref:`termp/0::check/1`  :ref:`termp/0::depth/2`  :ref:`number/0::essentially_equal/3`  :ref:`termp/0::ground/1`  :ref:`termp/0::new/1`  :ref:`termp/0::numbervars/1`  :ref:`termp/0::numbervars/3`  :ref:`termp/0::occurs/2`  :ref:`termp/0::singletons/2`  :ref:`termp/0::subsumes/2`  :ref:`termp/0::subterm/2`  :ref:`number/0::tolerance_equal/4`  :ref:`termp/0::valid/1`  :ref:`termp/0::variables/2`  :ref:`termp/0::variant/2`  :ref:`termp/0::varnumbers/2`  :ref:`termp/0::varnumbers/3`  

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

.. index:: between/3
.. _integer/0::between/3:

``between/3``
^^^^^^^^^^^^^

Returns integers in the interval defined by the two first arguments.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``between(Lower,Upper,Integer)``
| **Mode and number of proofs:**
|    ``between(+integer,+integer,+integer)`` - ``zero_or_one``
|    ``between(+integer,+integer,-integer)`` - ``zero_or_more``


------------

.. index:: plus/3
.. _integer/0::plus/3:

``plus/3``
^^^^^^^^^^

Reversible integer sum. At least two of the arguments must be instantiated to integers.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``plus(I,J,Sum)``
| **Mode and number of proofs:**
|    ``plus(+integer,+integer,?integer)`` - ``zero_or_one``
|    ``plus(+integer,?integer,+integer)`` - ``zero_or_one``
|    ``plus(?integer,+integer,+integer)`` - ``zero_or_one``


------------

.. index:: succ/2
.. _integer/0::succ/2:

``succ/2``
^^^^^^^^^^

Successor of a natural number. At least one of the arguments must be instantiated to a natural number.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``succ(I,J)``
| **Mode and number of proofs:**
|    ``succ(+integer,?integer)`` - ``zero_or_one``
|    ``succ(?integer,+integer)`` - ``zero_or_one``


------------

.. index:: sequence/3
.. _integer/0::sequence/3:

``sequence/3``
^^^^^^^^^^^^^^

Generates a list with the sequence of all integers in the interval ``[Lower,Upper]``. Assumes ``Lower =< Upper`` and fails otherwise.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``sequence(Lower,Upper,List)``
| **Mode and number of proofs:**
|    ``sequence(+integer,+integer,-list(integer))`` - ``zero_or_one``


------------

.. index:: sequence/4
.. _integer/0::sequence/4:

``sequence/4``
^^^^^^^^^^^^^^

Generates a list with the sequence of integers in the interval ``[Lower,Upper]`` by ``Step``. Assumes ``Lower =< Upper, Step >= 1`` and fails otherwise.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``sequence(Lower,Upper,Step,List)``
| **Mode and number of proofs:**
|    ``sequence(+integer,+integer,+integer,-list(integer))`` - ``zero_or_one``


------------

.. index:: power_sequence/4
.. _integer/0::power_sequence/4:

``power_sequence/4``
^^^^^^^^^^^^^^^^^^^^

Generates a list of exponentiation results given ``[Lower,Upper]`` sequence of exponents and ``Base``. Assumes ``Lower =< Upper`` and ``Base > 1`` and fails otherwise.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``power_sequence(Lower,Upper,Base,List)``
| **Mode and number of proofs:**
|    ``power_sequence(+integer,+integer,+integer,-list(integer))`` - ``zero_or_one``


------------

Protected predicates
--------------------

(no local declarations; see entity ancestors if any)

Private predicates
------------------

(no local declarations; see entity ancestors if any)

Operators
---------

(none)

