Programming (Computer Algebra System) for Paired Suborbits The orbits of $G \leq Sym(\Omega)$ on $\Omega × \Omega$ are called the orbitals of $G$
on $\Omega$.
For each orbital $\Delta$ there is a paired orbital denoted $\Delta'$, where
$(y, x) \in \Delta'$ if and only if $(x, y) \in \Delta$.
For each orbital $\Delta$ of $G$ and each $x \in \Omega$  we define $\Delta(x) = \{y \in  \Omega |(x, y) \in \Delta\}$. Such sets are exactly the suborbits of point stabilizer $G_x$.
If $\Delta$ and $\Delta'$ are paired orbitals, then $\Delta(x)$ and $\Delta'(x)$ are called paired suborbits.
A suborbit $\Delta(x)$  is called self-paired if $\Delta(x)=\Delta'(x)$.
MAIN QUESTION
Is there any math software (computer algebra system) that shows output as graph or computes orbital and paired orbital  $\Delta$,  $\Delta'$,  $\Delta(x)$, $\Delta'(x)$ (for symmetric group input)? Can anyone provide a program for these in any language? Programming language Python, Computer Algebra System GAP are preferable.
SUPPLEMENTARY QUESTION
Can any one demonstrate $\Delta(x)$ and $\Delta'(x)$ for a permutation group acting on a domain? Please provide example with sufficient large set to demonstrate definitions.
 A: Just so that there is an answer for the main question (even if ignoring the supplemental question) for readers in the future:
Orbitals are orbits on pairs. E.g. for some group of degree 8:
gap> pairs:=Tuples([1..8],2);;
gap> Length(pairs); # 8^2
64
gap> g:=TransitiveGroup(8,20);; # just some group
gap> orb:=List(Orbits(g,pairs,OnTuples),Set);
[ [ [ 1, 1 ], [ 2, 2 ], [ 3, 3 ], [ 4, 4 ], [ 5, 5 ], [ 6, 6 ], [ 7, 7 ],
      [ 8, 8 ] ],
  [ [ 1, 2 ], [ 1, 6 ], [ 2, 3 ], [ 2, 7 ], [ 3, 4 ], [ 3, 8 ], [ 4, 1 ],
      [ 4, 5 ], [ 5, 2 ], [ 5, 6 ], [ 6, 3 ], [ 6, 7 ], [ 7, 4 ], [ 7, 8 ],
      [ 8, 1 ], [ 8, 5 ] ],
  [ [ 1, 3 ], [ 1, 7 ], [ 2, 4 ], [ 2, 8 ], [ 3, 1 ], [ 3, 5 ], [ 4, 2 ],
      [ 4, 6 ], [ 5, 3 ], [ 5, 7 ], [ 6, 4 ], [ 6, 8 ], [ 7, 1 ], [ 7, 5 ],
      [ 8, 2 ], [ 8, 6 ] ],
  [ [ 1, 4 ], [ 1, 8 ], [ 2, 1 ], [ 2, 5 ], [ 3, 2 ], [ 3, 6 ], [ 4, 3 ],
      [ 4, 7 ], [ 5, 4 ], [ 5, 8 ], [ 6, 1 ], [ 6, 5 ], [ 7, 2 ], [ 7, 6 ],
      [ 8, 3 ], [ 8, 7 ] ],
  [ [ 1, 5 ], [ 2, 6 ], [ 3, 7 ], [ 4, 8 ], [ 5, 1 ], [ 6, 2 ], [ 7, 3 ],
      [ 8, 4 ] ] ]

Now look at the sets of the reversed tuples and the pairing correspondence:
gap> opair:=List(orb,x->Set(List(x,Reversed)));;
gap> List(opair,x->Position(orb,x));
[ 1, 4, 3, 2, 5 ]

So orbit number  1 is self-paired, while number  2 is paired with number 4 and 3 with 5.
The associated suborbits (I pick $x=1$) are the numbers paired with $1$:
gap> x:=1;subo:=List(orb,o->Filtered(o,y->y[1]=x));
1
[ [ [ 1, 1 ] ], [ [ 1, 2 ], [ 1, 6 ] ], [ [ 1, 3 ], [ 1, 7 ] ],
  [ [ 1, 4 ], [ 1, 8 ] ], [ [ 1, 5 ] ] ]
gap> subo:=List(subo,x->Set(List(x,y->y[2])));
[ [ 1 ], [ 2, 6 ], [ 3, 7 ], [ 4, 8 ], [ 5 ] ]

So e.g. the suborbit $\{2,6\}$ is paired with $\{4,8\}$, while $\{1\}$ is self-paired.
