# ISListToPair
Convert an `IS` list to a pair of `IS` of equal length defining an equivalent integer multimap. Each `IS` on the input list is assigned an integer j so that all of the indices of that `IS` are mapped to j. 
## Synopsis
```
#include "petscis.h"  
PetscErrorCode ISListToPair(MPI_Comm comm, PetscInt listlen, IS islist[], IS *xis, IS *yis)
```
Collective.


## Input Parameters

- ***comm    -*** `MPI_Comm`
- ***listlen -*** `IS` list length
- ***islist  -*** `IS` list



## Output Parameters

- ***xis -*** domain `IS`
- ***yis -*** range  `I`S





## Notes
The global integers assigned to the `IS` of the local input list might not correspond to the
local numbers of the `IS` on that list, but the two *orderings* are the same: the global
integers assigned to the `IS` on the local list form a strictly increasing sequence.

The `IS` on the input list can belong to subcommunicators of comm, and the subcommunicators
on the input `IS` list are assumed to be in a "deadlock-free" order.

Local lists of `PetscObject`s (or their subcomms) on a comm are "deadlock-free" if subcomm1
preceeds subcomm2 on any local list, then it preceeds subcomm2 on all ranks.
Equivalently, the local numbers of the subcomms on each local list are drawn from some global
numbering. This is ensured, for example, by `ISPairToList()`.


## See Also
 `IS`, `ISPairToList()`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/is/is/utils/isdiff.c.html#ISListToPair">src/vec/is/is/utils/isdiff.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/vec/is/is/utils/isdiff.c)


[Index of all IS routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
