This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Generating Posets with Interfaces

Olavi Äikäs École polytechnique, Palaiseau, Francethanks: Bachelor internship at École polytechnique in 2021; no current affiliation Uli Fahrenberg EPITA Research and Development Laboratory (LRDE), Francethanks: Most of this work conducted while author employed at École polytechnique Christian Johansen Norwegian University of Science and Technology (NTNU), Norway Krzysztof Ziemiański University of Warsaw, Poland
Abstract

We generate and count isomorphism classes of gluing-parallel posets with interfaces (iposets) on up to eight points, and on up to ten points with interfaces removed. In order to do so, we introduce a new class of iposets with full interfaces and show that considering these is sufficient. We also describe the software (written in Julia) that we have used for our exploration and define a new incomplete isomorphism invariant which may be computed in polynomial time yet identifies only very few pairs of non-isomorphic iposets.

1 Introduction

In concurrency theory, partially ordered sets (posets) are used to model executions of programs which exhibit both sequentiality and concurrency of events [Win77, Pra86, Vog92]. Series-parallel posets have been investigated due to their algebraic malleability---they are freely generated by serial and parallel composition [Gra81, Gis88]---and form a model of concurrent Kleene algebra [HMSW11]. Interval orders are another class of posets that arise naturally in the semantics of Petri nets [Vog92, JK93, JY17], higher-dimensional automata [vG06a, FJSZ21b], and distributed systems [Lam78]. Series-parallel posets and interval orders are incomparable.

This paper continues work begun in [FJST20] to consolidate series-parallel posets and interval orders. To this end, we have equipped posets with interfaces and extended the serial composition to an operation which glues posets along their interfaces. We have investigated the algebraic structure of the so-defined gluing-parallel posets, which encompass both series-parallel posets and interval orders, in [FJST20, FJSZ21c]. Here we concern ourselves with the combinatorial properties of this class.

An iposet is a poset with interfaces. We generate (and count) all isomorphism classes of iposets and of gluing-parallel iposets on up to 8 points, and of gluing-parallel posets (with interfaces removed) on up to 10 points. In order to do so, we introduce a new subclass of iposets with full interfaces and then generate all isomorphism classes of such ‘‘​Winkowski’’ iposets on up to 8 points and of gluing-parallel Winkowski iposets on up to 9 points.

We have found eleven forbidden substructures for gluing-parallel (i)posets, five on 6 points, one on 8 points, and five other on 10 points. We currently do not know whether there are any forbidden substructures on 11 points or more.

To conduct our exploration we have written software in Julia, using the LightGraphs package. We use a recursive algorithm to generate iposets and Julia’s built-in threading support for parallelization. For isomorphism checking we use a new incomplete invariant which may be computed in linear time yet identifies only relatively few pairs of non-isomorphic (i)posets. We also detail the software and process used to find forbidden substructures. Our software and generated data are freely available; McKay’s similarly freely available data has been of great help in our work.

After a preliminary Section 2 on posets we introduce interfaces in Section 3. Section 4 then reports on our software and Section 5 on forbidden substructures. Before we then can examine Winkowski iposets in Section 7 we need to concern ourselves with discrete iposets in Section 6.

We expose the numbers of non-isomorphic (i)posets in various classes throughout the paper. Table 1 shows the numbers of posets, series-parallel posets, interval orders, the union of the latter two classes, and series-parallel interval orders. Table 2 counts iposets and gluing-parallel (i)posets, Table 4 shows the numbers of some subclasses of discrete iposets, and Table 5 exposes the numbers of Winkowski and gluing-parallel Winkowski iposets. The appendix contains the counts of iposets and gluing-parallel iposets, and of their Winkowski subclasses, split by the numbers of sources and targets.

The main contributions of this paper are, especially when compared to [FJSZ21c], the exposition of the new subclass of Winkowski iposets and the showcase of Julia as a programming language for combinatorial exploration. Further, we believe that our new incomplete isomorphism invariant may be useful also in other contexts, but this remains to be explored.

2 Posets

A poset (P,<)(P,\mathord{<}) is a finite set PP equipped with an irreflexive transitive binary relation << (asymmetry of << follows). We use Hasse diagrams to visualize posets, but put greater elements to the right of smaller ones. Posets are equipped with a serial and a parallel composition. They are based on the disjoint union (coproduct) of sets, which we write XY={(x,1)xX}{(y,2)yY}X\sqcup Y=\{(x,1)\mid x\in X\}\cup\{(y,2)\mid y\in Y\}.

Definition 1

Let (P1,<1)(P_{1},<_{1}) and (P2,<2)(P_{2},<_{2}) be posets.

  1. 1.

    The parallel composition P1P2P_{1}\otimes P_{2} is the coproduct with P1P2P_{1}\sqcup P_{2} as carrier set and order defined as

    (p,i)<(q,j)i=jp<iq,i,j{1,2}.(p,i)<(q,j)\,\Leftrightarrow\,i=j\land p<_{i}q,\qquad i,j\in\{1,2\}.
  2. 2.

    The serial composition P1P2P_{1}\mathbin{\triangleright}P_{2} is the ordinal sum, which again has the disjoint union as carrier set, but order defined as

    (p,i)<(q,j)(i=jp<iq)i<j,i,j{1,2}.(p,i)<(q,j)\Leftrightarrow(i=j\land p<_{i}q)\lor i<j,\qquad i,j\in\{1,2\}.

A poset is series-parallel (an sp-poset) if it is either empty or can be obtained from the singleton poset by finitely many serial and parallel compositions. It is well known [VTL82, Gra81] that a poset is series-parallel if and only if it does not contain the induced subposet

N=.{\textup{{N}}}=\!\vbox{\hbox{ \leavevmode\hbox to38.08pt{\vbox to23.3pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-18.76318pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{{ {\pgfsys@beginscope{} {}{}{} {}{}{} {}{}{} \pgfsys@moveto{2.39996pt}{0.0pt}\pgfsys@curveto{1.39998pt}{0.2pt}{-0.4pt}{0.59999pt}{-1.59998pt}{1.49997pt}\pgfsys@curveto{-0.59999pt}{0.4pt}{-0.59999pt}{-0.4pt}{-1.59998pt}{-1.49997pt}\pgfsys@curveto{-0.4pt}{-0.59999pt}{1.39998pt}{-0.2pt}{2.39996pt}{0.0pt}\pgfsys@closepath\pgfsys@fill\pgfsys@endscope}} }{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-13.06088pt}\pgfsys@lineto{23.97485pt}{-2.23854pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-2.23854pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-14.22638pt}\pgfsys@lineto{24.03821pt}{-14.22638pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-14.22638pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}.

Further, generation of sp-posets is free: they form the free algebra in the variety of double monoids.

An interval order [Fis70] is a relational structure (P,<)(P,<) with << irreflexive such that w<yw<y and x<zx<z imply w<zw<z or x<yx<y, for all w,x,y,zPw,x,y,z\in P. Transitivity of << follows, and interval orders are therefore posets. Interval orders are precisely those posets that do not contain the induced subposet

2+2=.{\textup{{2+2}}}=\!\vbox{\hbox{ \leavevmode\hbox to38.08pt{\vbox to23.3pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-18.76318pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-14.22638pt}\pgfsys@lineto{24.03821pt}{-14.22638pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-14.22638pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}.

Concurrency theory employs both sp-posets and interval orders (and their labeled variants), the former for their algebraic malleability and the latter because the precedence order of events in distributed systems typically is an interval order. We are interested in classes of posets which retain the pleasurable algebraic properties of sp-posets but include interval orders.

Posets (P1,<1)(P_{1},\mathord{<}_{1}) and (P2,<2)(P_{2},\mathord{<}_{2}) are isomorphic if there is a bijection f:P1P2f:P_{1}\to P_{2} such that for all x,yP1x,y\in P_{1}, x<1yf(x)<2f(y)x<_{1}y\Leftrightarrow f(x)<_{2}f(y). It is well-known (and easy to see, given that posets are isomorphic if and only if their Hasse diagrams are) that the poset isomorphism problem is just as hard as graph isomorphism. State of the art is Brinkmann and McKay [BM02] which reports generating isomorphism classes of posets on up to sixteen points.

Also counting posets up to isomorphism is difficult and has been achieved up to sixteen points. On the other hand, both sp-posets and interval orders admit generating functions, so counting these is trivial. Table 1 shows the numbers of posets, sp-posets and interval orders on nn points up to isomorphism for n11n\leq 11, as well as the numbers of posets which are sp-or-interval and those which are series-parallel compositions of interval orders.

Table 1: Different types of posets on nn points: all posets; sp-posets; interval orders; sp or interval; sp-interval orders.
nn P(n)\textup{{P}}(n) SP(n)\textup{{SP}}(n) IO(n)\textsf{IO}(n) SP+IO(n)\textsf{SP{+}IO}(n) SPIO(n)\textsf{SPIO}(n)
0 1 1 1 1 1
1 1 1 1 1 1
2 2 2 2 2 2
3 5 5 5 5 5
4 16 15 15 16 16
5 63 48 53 59 59
6 318 167 217 252 253
7 2045 602 1014 1187 1203
8 16.999 2256 5335 6161 6327
9 183.231 8660 31.240 35.038 36.449
10 2.567.284 33.958 201.608 218.770 229.660
11 46.749.427 135.292 1.422.074
EIS 112 3430 22493

3 Posets with Interfaces

Let [n]={1,,n}[n]=\{1,\dotsc,n\} for n1n\geq 1 and [0]=[0]=\emptyset. We write PminP^{\min} for the set of minimal and PmaxP^{\max} for the set of maximal elements of poset PP.

Definition 2

A poset with interfaces (iposet) is a poset PP together with two injective functions

[n]𝑠P𝑡[m][n]\overset{s}{\longrightarrow}P\overset{t}{\longleftarrow}[m]

such that the images s([n])Pmins([n])\subseteq P^{\min} and t([m])Pmaxt([m])\subseteq P^{\max}.

An iposet as above is denoted (s,P,t):nm(s,P,t):n\to m. We let iPos be the set of iposets and define the identity iposets idn=(id[n],[n],id[n]):nn\textup{{id}}_{n}=(\textup{{id}}_{[n]},[n],\textup{{id}}_{[n]}):n\to n for n0n\geq 0. For notational convenience we also define source and target functions src,tgt:iPos\textit{src},\textit{tgt}:\text{{{iPos}}}\to\mathbbm{N} which map P:nmP:n\to m to src(P)=n\textit{src}(P)=n and tgt(P)=m\textit{tgt}(P)=m. Any poset PP is an iposet with trivial interfaces, src(P)=tgt(P)=0\textit{src}(P)=\textit{tgt}(P)=0.

Iposets (s1,P1,t1):n1m1(s_{1},P_{1},t_{1}):n_{1}\to m_{1} and (s2,P2,t2):n2m2(s_{2},P_{2},t_{2}):n_{2}\to m_{2} are isomorphic if there is a poset isomorphism f:P1P2f:P_{1}\to P_{2} such that fs1=s2f\circ s_{1}=s_{2} and ft1=t2f\circ t_{1}=t_{2}; this implies n1=n2n_{1}=n_{2} and m1=m2m_{1}=m_{2}. The mappings src and tgt are invariant under isomorphisms.

We extend the serial and parallel compositions to iposets. Below, ϕn,m:[n+m][n][m]\phi_{n,m}:[n+m]\to[n]\otimes[m] are the isomorphisms given by

ϕn,m(i)={(i,1)if in,(in,2)if i>n,\phi_{n,m}(i)=\begin{cases}(i,1)&\text{if }i\leq n,\\ (i-n,2)&\text{if }i>n,\end{cases}

and (P1P2)/t1s2(P_{1}\sqcup P_{2})_{/t_{1}\equiv s_{2}} denotes the quotient of the disjoint union obtained by identifying (t1(k),1)(t_{1}(k),1) with (s2(k),2)(s_{2}(k),2) for every k[m]k\in[m].

Definition 3

Let (s1,P1,t1):n1m1(s_{1},P_{1},t_{1}):n_{1}\to m_{1} and (s2,P2,t2):n2m2(s_{2},P_{2},t_{2}):n_{2}\to m_{2} be iposets.

  1. 1.

    Their parallel composition is the iposet (s,P1P2,t):n1+n2m1+m2(s,P_{1}\otimes P_{2},t):n_{1}+n_{2}\to m_{1}+m_{2} with s=(s1s2)ϕn1,n2s=(s_{1}\otimes s_{2})\circ\phi_{n_{1},n_{2}} and t=(t1t2)ϕm1,m2t=(t_{1}\otimes t_{2})\circ\phi_{m_{1},m_{2}}.

  2. 2.

    For m1=n2m_{1}=n_{2}, their gluing composition is the iposet (s1,P1P2,t2):n1m2(s_{1},P_{1}\mathbin{\triangleright}P_{2},t_{2}):n_{1}\to m_{2} with carrier set (P1P2)/t1s2(P_{1}\sqcup P_{2})_{/t_{1}\equiv s_{2}} and order defined as

    (p,i)<(q,j)(i=jp<iq)(i<jpt1[m1]qs2[n2]).(p,i)<(q,j)\Leftrightarrow(i=j\land p<_{i}q)\lor(i<j\land p\notin t_{1}[m_{1}]\land q\notin s_{2}[n_{2}]).

Thus P1P2P_{1}\mathbin{\triangleright}P_{2} is defined precisely if tgt(P1)=src(P2)\textit{tgt}(P_{1})=\textit{src}(P_{2}), and in that case, src(P1P2)=src(P1)\textit{src}(P_{1}\mathbin{\triangleright}P_{2})=\textit{src}(P_{1}) and tgt(P1P2)=tgt(P2)\textit{tgt}(P_{1}\mathbin{\triangleright}P_{2})=\textit{tgt}(P_{2}). Isomorphism classes of iposets form the morphisms in a category with objects the natural numbers and gluing as composition, or equivalently, a local partial r\ell r-semigroup [CFJ+21, FJSZ21a]. For the parallel composition, src(P1P2)=src(P1)src(P2)\textit{src}(P_{1}\otimes P_{2})=\textit{src}(P_{1})\otimes\textit{src}(P_{2}) and tgt(P1P2)=tgt(P1)tgt(P2)\textit{tgt}(P_{1}\otimes P_{2})=\textit{tgt}(P_{1})\otimes\textit{tgt}(P_{2}), extending iPos to a partial interchange monoid [CDS20].

Remark 1 (Interchange)

The equation (P1P2)(Q1Q2)=(P1Q1)(P2Q2)(P_{1}\otimes P_{2})\mathbin{\triangleright}(Q_{1}\otimes Q_{2})=(P_{1}\mathbin{\triangleright}Q_{1})\otimes(P_{2}\mathbin{\triangleright}Q_{2}) does not hold in general, not even up to isomorphism [FJSZ21c]; but see Lemma 4 below for a special case.

A composition P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} or P=P1P2P=P_{1}\otimes P_{2} is trivial if P=P1P=P_{1} or P=P2P=P_{2} as posets; see also Lemma 3 below. As before, we are interested in iposets and posets which can be obtained from elementary iposets by finitely many (nontrivial) gluing and parallel compositions. Let

𝒮={[0][1][0],[0][1][1],[1][1][0],[1][1][1]}\mathcal{S}=\big{\{}[0]\to[1]\leftarrow[0],\quad[0]\to[1]\leftarrow[1],\quad[1]\to[1]\leftarrow[0],\quad[1]\to[1]\leftarrow[1]\big{\}}

be the set of iposets on the singleton poset (the source and target maps are uniquely determined by their type here).

Definition 4

An iposet is gluing-parallel (a gp-iposet) if it is empty or can be obtained from elements of 𝒮\mathcal{S} by finitely many applications of \mathbin{\triangleright} and \otimes.

We are interested in generating and counting iposets and gp-iposets up to isomorphism, but also in doing so for gluing-parallel posets: those posets which are gp-as-iposets. The following property defines a class in-between iposets and gp-iposets.

Definition 5

Iposet (s,P,t):nm(s,P,t):n\to m is interface consistent if s1(x)<s1(y)t1(x)<t1(y)s^{-1}(x)<s^{-1}(y)\Leftrightarrow t^{-1}(x)<t^{-1}(y) for all x,ys([n])t([m])x,y\in s([n])\cap t([m]).

Here << is the (implicit) natural ordering on [n][n] and [m][m]. It is clear that gluing and parallel compositions of interface consistent iposets are again interface consistent, hence any gp-iposet is interface consistent. Table 2 shows the numbers of posets, sp-posets and gp-posets up to isomorphism, as well as of iposets, interface consistent iposets, and gp-iposets. In the appendix, Tables A.1 to A.6 show the numbers of the three classes of iposets split by the numbers of their sources and targets.

Table 2: Different types of posets and iposets on nn points: all posets; sp-posets; gp-posets; iposets; interface consistent iposets; gp-iposets
nn P(n)\textup{{P}}(n) SP(n)\textup{{SP}}(n) GP(n)\textup{{GP}}(n) IP(n)\textup{{IP}}(n) ICI(n)\textup{{ICI}}(n) GPI(n)\textup{{GPI}}(n)
0 1 1 1 1 1 1
1 1 1 1 4 4 4
2 2 2 2 17 16 16
3 5 5 5 86 74 74
4 16 15 16 532 420 419
5 63 48 63 4068 3030 2980
6 318 167 313 38.933 28.495 26.566
7 2045 602 1903 474.822 355.263 289.279
8 16.999 2256 13.943 7.558.620 5.937.237 3.726.311
9 183.231 8660 120.442
10 2.567.284 33.958 1.206.459
11 46.749.427 135.292
EIS 112 3430 345673 331158 331159

4 Software

Before we continue with our exploration, we describe the software we have used to generate most numbers in the tables contained in this paper and to explore the structural properties of (i)posets.111Our software is available at https://github.com/ulifahrenberg/pomsetproject/tree/main/code/20220303/, and the data at https://github.com/ulifahrenberg/pomsetproject/tree/main/data/. This started as a piece of Python code written to confirm or disprove some conjectures, but did not allow us to compute the GP(n)\textup{{GP}}(n) and GPI(n)\textup{{GPI}}(n) sequences beyond n=6n=6. During the BSc internship of the first author of this paper, it was converted to Julia, using the LightGraphs package [FBS+21]. This conversion, and major improvements in candidate generation and isomorphism checking (see below), allowed us to generate all gp-posets on n=9n=9 points and all gp-iposets on n=7n=7 points. Afterwards we managed to compute GP(10)\textup{{GP}}(10) and GPI(8)\textup{{GPI}}(8) using massively parallelized computations.222 We have used several ARM based servers running Linux with processor from High Silicon, model Hi1616, 64 cores, 256 GiB memory, 36 TiB of local disk, provided by the University of Oslo HPC services https://www.uio.no/english/services/it/research/hpc/.

Let GnG_{n} denote the set of isomorphism classes of gp-iposets on nn points for n0n\geq 0 and

Gn(k,)={PGn|src(P)=k,tgt(P)=}G_{n}(k,\ell)=\big{\{}P\in G_{n}\mathrel{\big{|}}\textit{src}(P)=k,\textit{tgt}(P)=\ell\big{\}}

for k,{0,,n}k,\ell\in\{0,\dotsc,n\}. That is, Gn(k,)G_{n}(k,\ell) is the set of iposets on nn points with kk points in the starting interface and \ell in the terminating interface. Then Gn=k,Gn(k,)G_{n}=\bigcup_{k,\ell}G_{n}(k,\ell), GPI(n)=|Gn|\textup{{GPI}}(n)=|G_{n}|, and GP(n)=|Gn(0,0)|\textup{{GP}}(n)=|G_{n}(0,0)|. Our algorithm for generating GnG_{n} is recursive and based on the following property, where we have extended \mathbin{\triangleright} and \otimes to sets of iposets the usual way.

Lemma 1

For all n>1n>1 and 0k,n0\leq k,\ell\leq n,

Gn(k,)=1p,q<nm=p+qn0m<p0m<qGp(k,m)Gq(m,)p+q=np,q1k1+k2=k1+2=Gp(k1,1)Gq(k2,2).G_{n}(k,\ell)=\bigcup_{\begin{subarray}{c}1\leq p,q<n\\ m=p+q-n\\ 0\leq m<p\\ 0\leq m<q\end{subarray}}G_{p}(k,m)\mathbin{\triangleright}G_{q}(m,\ell)\cup\bigcup_{\begin{subarray}{c}p+q=n\\ p,q\geq 1\\ k_{1}+k_{2}=k\\ \ell_{1}+\ell_{2}=\ell\end{subarray}}G_{p}(k_{1},\ell_{1})\otimes G_{q}(k_{2},\ell_{2}).

Proof

By definition, RGn(k,)R\in G_{n}(k,\ell) if and only if RR is a gluing or parallel composition of smaller gp-iposets. If R=PQR=P\mathbin{\triangleright}Q, then PGp(k,m)P\in G_{p}(k,m) and QGq(m,)Q\in G_{q}(m,\ell) for some p,q<np,q<n, and we can assume p,q1p,q\geq 1 because otherwise the composition would be trivial. The number of points of PQP\mathbin{\triangleright}Q is p+qmp+q-m, hence m=p+qnm=p+q-n, and m<p,qm<p,q because we can assume that both PP and QQ have at least one non-interface point; otherwise composition would again be trivial.

If R=PQR=P\otimes Q, then PGp(k1,1)P\in G_{p}(k_{1},\ell_{1}) and QGq(k2,2)Q\in G_{q}(k_{2},\ell_{2}) for some p+q=np+q=n, and we can again assume p,q1p,q\geq 1, and k1+k2=kk_{1}+k_{2}=k and 1+2=\ell_{1}+\ell_{2}=\ell by definition of \otimes. We have shown that Gn(k,)G_{n}(k,\ell) is included in the expression on the right-hand side; the reverse inclusion is trivial.

Listing 1: Julia function (parts) to compute Gn(k,)G_{n}(k,\ell).
f
1 #Return memoized if exists
2 if filled[k, l, n]
3 return (x[1] for x in vcat(iposets[:, k, l, n]...))
4 end
5 #If opposites exist, return opposites
6 if filled[l, k, n]
7 return (reverse(x[1]) for x in vcat(iposets[:, l, k, n]...))
8 end
9 #Otherwise, generate recursively
10 lock(locks[end, k, l, n])
11 #First, the gluings
12 Threads.@threads for p in 1:(n-1)
13 Threads.@threads for q in 1:(n-1)
14 m = p + q - n
15 if m < 0 || m {\scriptstyle\geq} p || m {\scriptstyle\geq} q || k > p || l > q
16 continue
17 end
18 for P in gpclosure(p, k, m, iposets, filled, locks)
19 for Q in gpclosure(q, m, l, iposets, filled, locks)
20 R = glue(P, Q)
21 neR = ne(R) #number of edges
22 pushuptoiso!(iposets[neR, k, l, n], ip, locks[neR, k, l, n])
23 end
24 end
25 end
26 end
27 #Now, the parallel compositions
28 ...
29 filled[k, l, n] = true
30 unlock(locks[end, k, l, n])
31 return (x[1] for x in vcat(iposets[:, k, l, n]...))
32end
\lst@TestEOLChar

Listing 1 shows part of the recursive Julia function which implements the above algorithm. The multi-dimensional array iposets is used for memoization and initiated with the four singletons in 𝒮\mathcal{S}, filled is used to denote which parts of iposets have been computed, and locks is used for locking. The heart of the procedure is the call to pushuptoiso! in line 23 which checks whether iposets already contains an element isomorphic to ip and, if not, pushes it into the array.

Due to the multi-threaded implementation and tight locking, we were able to generate G7G_{7} in about 4 minutes on a standard laptop. Generating G8G_{8} took altogether 300 hours in a distributed computation to generate each G8(k,)G_{8}(k,\ell) separately on four different computers: two standard laptops and two Norwegian supercomputers. For generating iposets and analyzing forbidden substructures we have benefited greatly from Brendan McKay’s poset collections.333See http://users.cecs.anu.edu.au/~bdm/data/digraphs.html.

Deciding whether iposets are isomorphic is just as difficult as for posets. Brinkmann and McKay [BM02] develop an algorithm to compute canonical representations: mappings ff from posets to labeled posets so that f(P)=f(P)f(P)=f(P^{\prime}) precisely if PP and PP^{\prime} are isomorphic. It is clear that if any such algorithm were to run in polynomial time, then poset isomorphism, and thus also graph isomorphism, would be in P.

Canonical representations are complete isomorphism invariants. In our software we are instead using an incomplete isomorphism invariant inspired by bisimulation [Mil89] which can be computed in polynomial time. For digraph GG and a point xx of GG, denote by ideg(x)\textup{{ideg}}(x) and odeg(x)\textup{{odeg}}(x) the in- and out-degrees of xx in GG.

Definition 6

An in-out bisimulation between digraphs G1=(V1,E1)G_{1}=(V_{1},E_{1}) and G2=(V2,E2)G_{2}=(V_{2},E_{2}) is a relation RV1×V2R\subseteq V_{1}\times V_{2} such that

  • for all (x1,x2)R(x_{1},x_{2})\in R, ideg(x1)=ideg(x2)\textup{{ideg}}(x_{1})=\textup{{ideg}}(x_{2}) and odeg(x1)=odeg(x2)\textup{{odeg}}(x_{1})=\textup{{odeg}}(x_{2});

  • for all (x1,x2)R(x_{1},x_{2})\in R and (x1,y1)E1(x_{1},y_{1})\in E_{1}, there exists (x2,y2)E2(x_{2},y_{2})\in E_{2} with (y1,y2)R(y_{1},y_{2})\in R;

  • for all (x1,x2)R(x_{1},x_{2})\in R and (x2,y2)E2(x_{2},y_{2})\in E_{2}, there exists (x1,y1)E1(x_{1},y_{1})\in E_{1} with (y1,y2)R(y_{1},y_{2})\in R.

Note that this is the same as a standard bisimulation [Mil89] between the transition systems (without initial state) given by enriching digraphs with propositions stating each vertex’s in- and out-degree. Digraphs are said to be in-out-bisimilar if there exists an in-out-bisimulation joining them.

Definition 7

Let PP be a poset. The functions ihash,ohash:P\textup{{ihash}},\textup{{ohash}}:P\to\mathbbm{N} are the least fixed points to the equations

ihash(x)=ideg(x)+|P|y<xihash(y),ohash(x)=odeg(x)+|P|x<yohash(y).\textup{{ihash}}(x)=\textup{{ideg}}(x)+|P|\sum_{y<x}\textup{{ihash}}(y),\qquad\textup{{ohash}}(x)=\textup{{odeg}}(x)+|P|\sum_{x<y}\textup{{ohash}}(y).

By acyclicity these hashes are well defined, and they may be computed in linear time. A hash isomorphism between posets PP and QQ is a bijection f:PQf:P\to Q such that

(ihash(f(x)),ohash(f(x)))=(ihash(x),ohash(x))(\textup{{ihash}}(f(x)),\textup{{ohash}}(f(x)))=(\textup{{ihash}}(x),\textup{{ohash}}(x))

for all xPx\in P.

Lemma 2

Let PP and QQ be posets.

  1. 1.

    If PP and QQ are isomorphic, then they are hash isomorphic.

  2. 2.

    If PP and QQ are hash isomorphic, then they are in-out-bisimilar.

Proof

If f:PQf:P\to Q is an isomorphism, then it is also a hash isomorphism. If ff is a hash isomorphism, then the relation defined by ff is an in-out-bisimulation.

Checking for existence of a hash isomorphism can be done in polynomial time, for example by sorting the hashes.

\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle
Figure 1: The two pairs of non-isomorphic posets on 6 points which are hash isomorphic.
Table 3: Numbers of pairs of non-isomorphic but hash isomorphic posets on nn points; their proportion as part of all pairs of non-isomorphic posets; average numbers of bijections checked for isomorphism.
nn NIHI(n)\textsf{NIHI}(n) NIHI(n)/P(n)2\textsf{NIHI}(n)/\textup{{P}}(n)^{2} nperm(n)\textsf{nperm}(n)
5 0 00\phantom{{}\cdot 10^{-6}} 00\phantom{{}\cdot 10^{-6}}
6 2 21062\cdot 10^{-6} 81068\cdot 10^{-6}
7 45 11061\cdot 10^{-6} 61066\cdot 10^{-6}
8 928 31073\cdot 10^{-7} 21062\cdot 10^{-6}
9 20443 61086\cdot 10^{-8} 41074\cdot 10^{-7}
Example 1

Hash isomorphisms are complete for posets on up to 5 points: if |P|,|Q|5|P|,|Q|\leq 5, then PP and QQ are isomorphic if and only if they are hash isomorphic. On 6 points, there are two pairs of non-isomorphic posets which are hash isomorphic, depicted in Figure 1. Proportionally to the number of all pairs of non-isomorphic posets, the number of “false positives” grows rather slowly, see Table 3. Hence it appears that hash isomorphism is a rather tight invariant which allows one to avoid most of the costly isomorphism checks.

Listing 2: Julia function to check poset isomorphism.
f
1 #Start with the easy stuff
2 P == Q && return true
3 n = nv(P) #number of points
4 (n != nv(Q) || ne(P) != ne(Q)) && return false
5 #Check for hash isomorphism
6 used = zeros(Bool, n)
7 @inbounds for i in 1:n
8 found = false
9 for j in 1:n
10 if pv[i] == qv[j] && !used[j]
11 used[j] = true; found = true
12 break
13 end
14 end
15 !found && return false
16 end
17 #Collect all hash isomorphisms, mapping points to their possible images
18 targets = Array{Array{Int}}(undef, n)
19 targets .= [[]]
20 @inbounds for v in 1:n
21 for u in 1:n
22 pv[v] == qv[u] && push!(targets[v], u)
23 end
24 end
25 #Check all target permutations if they are isos
26 for pos_isom in Iterators.product(targets...)
27 if bijective(pos_isom) && isomorphic(P, Q, pos_isom)
28 return true
29 end
30 end
31 return false
32end
\lst@TestEOLChar

Listing 2 shows our Julia code for checking whether two posets are isomorphic. The hashes are precomputed, so the function isomorphic takes two posets P and Q as arguments as well as their hashes, pv and qv of type Vprof for ‘‘vertex profile’’. After checking whether there is a hash isomorphism, the hashes are used to constrain possible isomorphisms: only bijections pos_isom which are hash isomorphisms are given to the isomorphism checker isomorphic(P,Q, pos_isom). Table 3 also shows the averages for how many bijections are checked whether they are isomorphisms.

5 Forbidden Substructures

Recall that an induced subposet (Q,<Q)(Q,\mathord{<}_{Q}) of a poset (P,<P)(P,\mathord{<}_{P}) is a subset QPQ\subseteq P with the order <Q<_{Q} the restriction of <P<_{P} to QQ. We have shown in [FJSZ21c] that gluing-parallel posets are closed under induced subposets: if QQ is an induced subposet of a gp-poset PP, then also QQ is gluing-parallel. This begs the question whether gp-posets admit a finite set of forbidden substructures: a set \mathcal{F} of posets which are incomparable under the induced-subposet relation and such that any poset is gluing-parallel if and only if it contains none of the structures in \mathcal{F} as induced subposets.

Proposition 1 ([FJST20])

The following posets are contained in \mathcal{F}:

NN=M=W=\displaystyle{\textup{{NN}}}=\!\vbox{\hbox{ \leavevmode\hbox to38.08pt{\vbox to37.53pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-32.98956pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-13.06088pt}\pgfsys@lineto{23.97485pt}{-2.23854pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-2.23854pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-14.22638pt}\pgfsys@lineto{24.03821pt}{-14.22638pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-14.22638pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-27.28726pt}\pgfsys@lineto{23.97485pt}{-16.46492pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-16.46492pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-28.45276pt}\pgfsys@lineto{24.03821pt}{-28.45276pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-28.45276pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}\qquad{\textup{{M}}}=\!\vbox{\hbox{ \leavevmode\hbox to66.53pt{\vbox to37.53pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-32.98956pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{54.40552pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{30.46735pt}{0.0pt}\pgfsys@lineto{52.49097pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{52.49097pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-13.06088pt}\pgfsys@lineto{23.97485pt}{-2.23854pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-2.23854pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-14.22638pt}\pgfsys@lineto{24.03821pt}{-14.22638pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-14.22638pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-27.28726pt}\pgfsys@lineto{23.97485pt}{-16.46492pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-16.46492pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-28.45276pt}\pgfsys@lineto{24.03821pt}{-28.45276pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-28.45276pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}\qquad{\textup{{W}}}=\!\vbox{\hbox{ \leavevmode\hbox to66.53pt{\vbox to37.53pt{\pgfpicture\makeatletter\hbox{\hskip 33.26735pt\lower-32.98956pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-30.95276pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-13.06088pt}\pgfsys@lineto{23.97485pt}{-2.23854pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-2.23854pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-14.22638pt}\pgfsys@lineto{24.03821pt}{-14.22638pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-14.22638pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-27.28726pt}\pgfsys@lineto{23.97485pt}{-16.46492pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-16.46492pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-26.43817pt}{-28.45276pt}\pgfsys@lineto{-4.41455pt}{-28.45276pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-4.41455pt}{-28.45276pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}
3C=LN=\displaystyle{\textup{{3C}}}=\!\vbox{\hbox{ \leavevmode\hbox to38.08pt{\vbox to37.53pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-32.98956pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-15.47638pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-29.70276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-13.06088pt}\pgfsys@lineto{23.97485pt}{-2.23854pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-2.23854pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-15.39188pt}\pgfsys@lineto{23.97485pt}{-26.21422pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{-0.44724}{0.44724}{0.89442}{23.97485pt}{-26.21422pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-27.28726pt}\pgfsys@lineto{23.97485pt}{-16.46492pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{0.44724}{-0.44724}{0.89442}{23.97485pt}{-16.46492pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-28.45276pt}\pgfsys@lineto{24.03821pt}{-28.45276pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-28.45276pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.33131pt}{-1.1655pt}\pgfsys@lineto{23.97485pt}{-11.98784pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.89442}{-0.44724}{0.44724}{0.89442}{23.97485pt}{-11.98784pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}\qquad{\textup{{LN}}}=\!\vbox{\hbox{ \leavevmode\hbox to66.53pt{\vbox to28.99pt{\pgfpicture\makeatletter\hbox{\hskip 4.81459pt\lower-24.45374pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.5pt}{-21.16693pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{25.95276pt}{-21.16693pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{54.40552pt}{-1.25pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{54.40552pt}{-21.16693pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\tiny{$\Circle$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{0.0pt}\pgfsys@lineto{24.03821pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{30.46735pt}{0.0pt}\pgfsys@lineto{52.49097pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{52.49097pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.18309pt}{-19.15425pt}\pgfsys@lineto{52.45726pt}{-1.55583pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.94383}{0.33038}{-0.33038}{0.94383}{52.45726pt}{-1.55582pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{2.01459pt}{-19.91693pt}\pgfsys@lineto{24.03821pt}{-19.91693pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.03821pt}{-19.91693pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{30.46735pt}{-19.91693pt}\pgfsys@lineto{52.49097pt}{-19.91693pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{52.49097pt}{-19.91693pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}}}

Listing 3: Julia code to find forbidden substructures.
f
1 n = 5
2 fsubs = Array{Poset}(undef, 0)
3 while true
4 n += 1
5 pngs = posetsnotgp(n)
6 newfsubs = nosubs(pngs, fsubs)
7 if !isempty(newfsubs)
8 println("Found new forbidden substructure(s) on $n points:")
9 for s in newfsubs
10 println(string(s))
11 end
12 append!(fsubs, newfsubs)
13 end
14 end
15 return fsubs
16end
17function posetsnotgp(n)
18 ps = posets(n)
19 gps = [ip.poset for ip in gpiposets(n, 0, 0)]
20 return diffuptoiso(ps, gps)
21end
22function nosubs(posets, subs)
23 res = Array{Poset}(undef, 0)
24 for p in posets
25 hasnosub = true
26 for s in subs
27 sg, _ = subgraph(p, s)
28 if sg
29 hasnosub = false
30 break
31 end
32 end
33 hasnosub && push!(res, p)
34 end
35 return res
36end
\lst@TestEOLChar

Listing 3 shows our implementation of the semi-algorithm to find forbidden substructures. These are collected in the array fsubs and printed out as they are found. The function posetsnotgp returns the posets on nn points which are not gluing-parallel, using the function diffuptoiso (not shown) which computes the difference between two (i)poset arrays up to isomorphism. The function nosubs returns all elements of posets which have no induced subposet isomorphic to any element of subs; this latter check is carried out in subgraph which we also do not show here. Using McKay’s files of posets and our own precomputed files of iposets, findforbiddensubs finds the forbidden substructures of Proposition 1 almost immediately. After a few seconds it finds another forbidden substructure on 8 points (see below), and after an hour it verifies that there are no new forbidden substructures on 9 points.

\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle\Circle
Figure 2: Additional forbidden substructures for gp-posets.
Proposition 2 ([FJSZ21c])

When restricting to posets on at most 10 points, \mathcal{F} contains precisely the five posets of Proposition 1 and the six posets in Figure 2.

In order to find the forbidden substructures on 10 points in Figure 2, we used another, distributed algorithm which took about two weeks to run. We generated 45 separate files containing the gp-iposets on 10 points obtained from gluing elements of Gn(0,k)G_{n}(0,k) and Gm(k,0)G_{m}(k,0) for n{1,,9}n\in\{1,\dotsc,9\} and m{10n,,9}m\in\{10-n,\dotsc,9\} (thus k=10nmk=10-n-m), each reduced up to isomorphism, and one file containing all gp-iposets on 10 points obtained as parallel compositions of smaller gp-iposets. Then we took posets10.txt, removed posets containing one of our forbidden substructures on 6 or 8 points, and then successively filtered it through these 46 files, using diffuptoiso.

Whether there are further forbidden substructures (on 11 points or more), and whether \mathcal{F} is a finite set, remains open.

6 Discrete Iposets

Table 4: Numbers of discrete iposets, gp-discrete iposets, starters, and gp-starters on nn points. (Numbers of terminators and gp-terminators are the same as in the two last columns.)
nn D(n)\textsf{D}(n) GPD(n)\textsf{GPD}(n) S(n)\textsf{S}(n) GPS(n)\textsf{GPS}(n)
0 1 1 1 1
1 4 4 2 2
2 13 12 5 4
3 45 33 16 8
4 184 88 65 16
5 913 232 326 32
6 5428 609 1957 64
7 37.764 1596 13.700 128
8 300.969 4180 109.601 256
9 2.702.152 10.945 986.410 512
10 26.977.189 28.656 9.864.101 1024
EIS 27941 522 79

This section explores the ‘‘fine structure’’ of iposets. An iposet (s,P,t):nm(s,P,t):n\to m is discrete if PP is, it is a starter if, additionally, t:[m]Pt:[m]\to P is bijective, and a terminator if s:[n]Ps:[n]\to P is bijective. Any discrete iposet is the gluing of a starter with a terminator and is gluing-parallel if and only if it is interface consistent. The following is clear.

Lemma 3

A gluing P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} is trivial if and only if P1P_{1} is a starter or P2P_{2} is a terminator.

The next proposition shows numbers of some classes of discrete iposets, see also Table 4.

Proposition 3

Let n0n\geq 0. Up to isomorphism,

  1. 1.

    there are 2n2^{n} gp-starters and 2n2^{n} gp-terminators on nn points;

  2. 2.

    there are k=0nn!k!\sum_{k=0}^{n}\frac{n!}{k!} starters and k=0nn!k!\sum_{k=0}^{n}\frac{n!}{k!} terminators on nn points;

  3. 3.

    there are s,t=0nu=max(0,s+tn)min(s,t)(su)(tu)\sum_{s,t=0}^{n}\sum_{u=\max(0,s+t-n)}^{\min(s,t)}\binom{s}{u}\binom{t}{u} gp-discrete iposets on nn points;

  4. 4.

    there are s,t=0nu=max(0,s+tn)min(s,t)(su)(tu)u!\sum_{s,t=0}^{n}\sum_{u=\max(0,s+t-n)}^{\min(s,t)}\binom{s}{u}\binom{t}{u}u! discrete iposets on nn points.

The third term above can be simplified by

s,t=0nu=max(0,s+tn)min(s,t)(su)(tu)=i=0n(n+2+ini),\sum_{s,t=0}^{n}\,\sum_{u=\max(0,s+t-n)}^{\min(s,t)}\binom{s}{u}\binom{t}{u}=\sum_{i=0}^{n}\binom{n+2+i}{n-i},

using a version of Vandermonde’s identity; we are not aware of any such simplification for the last term.

Proof

  1. 1.

    For any k{0,,n}k\in\{0,\dotsc,n\}, there are (nk)\binom{n}{k} non-isomorphic interface consistent starters on nn points with kk of them in the starting interface.

  2. 2.

    Similarly, there are (nk)k!\binom{n}{k}k! non-isomorphic starters on nn points with kk points in the starting interface when not requiring interface consistency.

  3. 3.

    Let s,t,u{0,,n}s,t,u\in\{0,\dotsc,n\} and consider the number of non-isomorphic interface consistent discrete iposets on nn points with ss points in the starting, tt points in the terminating, and uu points in both interfaces, then necessarily s+tnumin(s,t)s+t-n\leq u\leq\min(s,t). The points not in both interfaces only give rise to one isomorphism class, the points in the overlap may be chosen in (su)(tu)\binom{s}{u}\binom{t}{u} non-isomorphic ways, and their order is unique by interface consistency.

  4. 4.

    The argument is the same as above; but the missing interface consistency requirement adds a factor u!u!.

A discrete iposet (s,P,t):nn(s,P,t):n\to n is a symmetry if it is both a starter and a terminator, that is, ss and tt are both bijective. All points of PP are in the starting and terminating interfaces, but the permutation t1s:[n][n]t^{-1}\circ s:[n]\to[n] is not necessarily an identity. It is clear that there are precisely n!n! non-isomorphic symmetries on nn points, and that any discrete iposet PP may be written PσQRτP\cong\sigma\mathbin{\triangleright}Q\cong R\mathbin{\triangleright}\tau for symmetries σ\sigma, τ\tau and QQ and RR interface consistent.

We finish this section by a special case of the interchange property relating parallel and gluing compositions, cf. Remark 1.

Lemma 4 ([FJSZ21c])

Let P1P_{1}, P2P_{2}, Q1Q_{1}, Q2Q_{2} be iposets such that tgt(P1)=src(Q1)\textit{tgt}(P_{1})=\textit{src}(Q_{1}) and tgt(P2)=src(Q2)\textit{tgt}(P_{2})=\textit{src}(Q_{2}). Then (P1P2)(Q1Q2)=(P1Q1)(P2Q2)(P_{1}\otimes P_{2})\mathbin{\triangleright}(Q_{1}\otimes Q_{2})=(P_{1}\mathbin{\triangleright}Q_{1})\otimes(P_{2}\mathbin{\triangleright}Q_{2}) if and only if P1Q1P_{1}\mathbin{\triangleright}Q_{1} or P2Q2P_{2}\mathbin{\triangleright}Q_{2} is discrete.

7 Iposets with Full Interfaces

We now introduce a class of iposets where all minimal and/or maximal points are in the interfaces; we name these after Winkowski [Win77] who, to the best of our knowledge, was the first to consider posets with interfaces, and who only considered such full-interface iposets.

Definition 8

An iposet (s,P,t):nm(s,P,t):n\to m is left Winkowski if s([n])=Pmins([n])=P^{\min}, right Winkowski if t([m])=Pmaxt([m])=P^{\max}, and Winkowski if it is both left and right Winkowski.

Note that starters are precisely discrete right Winkowskis, terminators are precisely discrete left Winkowskis, and symmetries are precisely the discrete Winkowskis.

Lemma 5

Let P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} nontrivially.

  • PP is left Winkowski if and only if P1P_{1} is;

  • PP is right Winkowski if and only if P2P_{2} is;

  • PP is Winkowski if and only if P1P_{1} is left Winkowski and P2P_{2} is right Winkowski.

Proof

We show that Pmin=P1minP^{\min}=P_{1}^{\min} and Pmax=P2maxP^{\max}=P_{2}^{\max}; the lemma then follows. By non-triviality there must be xP1x\in P_{1} which is not in the target interface. Now P1minPminP_{1}^{\min}\subseteq P^{\min} by definition of \mathbin{\triangleright}, so assume yPminP1miny\in P^{\min}\setminus P_{1}^{\min}. Then yP1y\notin P_{1}, which implies x<yx<y in contradiction to yPminy\in P^{\min}. (Note that non-triviality of P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} is necessary here: if P1P_{1} is a starter, we may have yP1y\notin P_{1} but still yPminy\in P^{\min}.) The proof for Pmax=P2maxP^{\max}=P_{2}^{\max} is symmetric.

For parallel compositions, it is clear that P1P2P_{1}\otimes P_{2} is (left/right) Winkowski if and only if P1P_{1} and P2P_{2} are. Our immediate interest in Winkowski iposets is to speed up generation of gp-iposets by only considering gp-Winkowskis. It is clear that any iposet has a decomposition P=SWTP=S\mathbin{\triangleright}W\mathbin{\triangleright}T into a starter SS, a Winkowski WW and a terminator TT; by the next lemma, this also holds in the gluing-parallel case.

Lemma 6

Any gp-iposet PP has a decomposition P=SWTP=S\mathbin{\triangleright}W\mathbin{\triangleright}T into a starter SS, a Winkowski WW and a terminator TT which are all gluing-parallel.

Proof

Let n=|P|n=|P| be the number of points in PP. If n1n\leq 1, then the claim is trivially true as all iposets on 0 or 11 points are gluing-parallel. Let n2n\geq 2, assume that the claim is true for all iposets with fewer than nn points, and let PP be gluing-parallel.

If P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} nontrivially with P1P_{1} and P2P_{2} gluing-parallel, then by the induction hypothesis, P1=S1W1T1P_{1}=S_{1}\mathbin{\triangleright}W_{1}\mathbin{\triangleright}T_{1} and P2=S2W2T2P_{2}=S_{2}\mathbin{\triangleright}W_{2}\mathbin{\triangleright}T_{2} for S1S_{1}, S2S_{2} gp-starters, W1W_{1}, W2W_{2} gp-Winkowski, and T1T_{1}, T2T_{2} gp-terminators. Now P=P1P2=S1(W1T1S2W2)T2P=P_{1}\mathbin{\triangleright}P_{2}=S_{1}\mathbin{\triangleright}(W_{1}\mathbin{\triangleright}T_{1}\mathbin{\triangleright}S_{2}\mathbin{\triangleright}W_{2})\mathbin{\triangleright}T_{2}, and W1T1S2W2W_{1}\mathbin{\triangleright}T_{1}\mathbin{\triangleright}S_{2}\mathbin{\triangleright}W_{2} is gluing-parallel because all four components are, and is Winkowski because W1W_{1} and W2W_{2} are.

If P=P1P2P=P_{1}\otimes P_{2} nontrivially with P1P_{1} and P2P_{2} gluing-parallel, then by the induction hypothesis, P1=S1W1T1P_{1}=S_{1}\mathbin{\triangleright}W_{1}\mathbin{\triangleright}T_{1} and P2=S2W2T2P_{2}=S_{2}\mathbin{\triangleright}W_{2}\mathbin{\triangleright}T_{2} for S1S_{1}, S2S_{2} gp-starters, W1W_{1}, W2W_{2} gp-Winkowskis, and T1T_{1}, T2T_{2} gp-terminators. Now

P=P1P2=(S1W1T1)(S2W2T2)=(S1S2)(W1W2)(T1T2)P=P_{1}\otimes P_{2}=(S_{1}\mathbin{\triangleright}W_{1}\mathbin{\triangleright}T_{1})\otimes(S_{2}\mathbin{\triangleright}W_{2}\mathbin{\triangleright}T_{2})=(S_{1}\otimes S_{2})\mathbin{\triangleright}(W_{1}\otimes W_{2})\mathbin{\triangleright}(T_{1}\otimes T_{2})

by Lemma 4, S1S2S_{1}\otimes S_{2} is a gp-starter, W1W2W_{1}\otimes W_{2} is gp-Winkowski, and T1T2T_{1}\otimes T_{2} is a gp-terminator.

For generating gluing-parallel iposets it is thus sufficient to generate gp-Winkowskis, gp-starters and gp-terminators. The next lemma entails that also in the recursions these are the only classes we need to consider.

Lemma 7

For PP a gluing-parallel Winkowski iposet, the following are exhaustive:

  1. 1.

    P=id0P=\textup{{id}}_{0} or P=id1P=\textup{{id}}_{1};

  2. 2.

    P=P1P2P=P_{1}\otimes P_{2} nontrivially for P1P_{1} and P2P_{2} gp-Winkowski;

  3. 3.

    P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} nontrivially for P1P_{1} gp-Winkowski or a gp-terminator and P2P_{2} gp-Winkowski or a gp-starter.

Proof

The first two cases are clear. Otherwise, P=P1P2P=P_{1}\mathbin{\triangleright}P_{2} nontrivially for P1P_{1} and P2P_{2} gluing-parallel. By Lemma 5, P1P_{1} is left Winkowski and P2P_{2} right Winkowski, and by Lemma 6 we can decompose P1=W1T1P_{1}=W_{1}\mathbin{\triangleright}T_{1} and P2=S2W2P_{2}=S_{2}\mathbin{\triangleright}W_{2} into gp-starters, gp-Winkowskis and gp-terminators. Then P=W1T1S2W2P=W_{1}\mathbin{\triangleright}T_{1}\mathbin{\triangleright}S_{2}\mathbin{\triangleright}W_{2}. There are four cases to consider:

  1. 1.

    If both W1W_{1} and W2W_{2} are identities, then neither T1T_{1} nor S2S_{2} are (by non-triviality of P=P1P2P=P_{1}\mathbin{\triangleright}P_{2}), hence P=T1S2P=T_{1}\mathbin{\triangleright}S_{2} nontrivially.

  2. 2.

    If W1W_{1} is an identity, but W2W_{2} is not, then also T1T_{1} is not an identity. Now if S2S_{2} is an identity, then P=T1W2P=T_{1}\mathbin{\triangleright}W_{2} nontrivially; otherwise, T1S2T_{1}\mathbin{\triangleright}S_{2} is Winkowski by Lemma 5 and P=(S1T2)W2P=(S_{1}\mathbin{\triangleright}T_{2})\mathbin{\triangleright}W_{2}.

  3. 3.

    The case of W2W_{2} being an identity but not W1W_{1} is symmetric.

  4. 4.

    If neither W1W_{1} nor W2W_{2} are identities, but T1S2T_{1}\mathbin{\triangleright}S_{2} is, then P=W1W2P=W_{1}\mathbin{\triangleright}W_{2} nontrivially. If also T1S2T_{1}\mathbin{\triangleright}S_{2} is not an identity, then T1S2W2T_{1}\mathbin{\triangleright}S_{2}\mathbin{\triangleright}W_{2} is Winkowski by Lemma 5 and P=W1(T1S2W2)P=W_{1}\mathbin{\triangleright}(T_{1}\mathbin{\triangleright}S_{2}\mathbin{\triangleright}W_{2}) nontrivially.

Denoting by GnWG_{n}^{\textup{W}}, GnSG_{n}^{\textup{S}} and GnTG_{n}^{\textup{T}} the subsets of GnG_{n} consisting of Winkowskis, starters, respectively terminators, we have thus shown the following refinement of Lemma 1.

Lemma 8

For all n>1n>1 and 0k,n0\leq k,\ell\leq n,

GnW(k,)=1p,q<nm=p+qn0m<p0m<q(GpW(k,m)GpT(k,m))(GqW(m,)GqS(m,))p+q=np,q1k1+k2=k1+2=GpW(k1,1)GqW(k2,2).G_{n}^{\textup{W}}(k,\ell)=\smash[b]{\bigcup_{\begin{subarray}{c}1\leq p,q<n\\ m=p+q-n\\ 0\leq m<p\\ 0\leq m<q\end{subarray}}}\big{(}G_{p}^{\textup{W}}(k,m)\cup G_{p}^{\textup{T}}(k,m)\big{)}\mathbin{\triangleright}\big{(}G_{q}^{\textup{W}}(m,\ell)\cup G_{q}^{\textup{S}}(m,\ell)\big{)}\\[2.98996pt] \cup\bigcup_{\begin{subarray}{c}p+q=n\\ p,q\geq 1\\ k_{1}+k_{2}=k\\ \ell_{1}+\ell_{2}=\ell\end{subarray}}G_{p}^{\textup{W}}(k_{1},\ell_{1})\otimes G_{q}^{\textup{W}}(k_{2},\ell_{2}).

Table 5: Different types of (i)posets on nn points: posets; iposets; gp-iposets; Winkowski iposets; interface consistent Winkowskis; gp-Winkowskis
nn P(n)\textup{{P}}(n) IP(n)\textup{{IP}}(n) GPI(n)\textup{{GPI}}(n) WIP(n)\textsf{WIP}(n) ICW(n)\textsf{ICW}(n) GPWI(n)\textsf{GPWI}(n)
0 1 1 1 1 1 1
1 1 4 4 1 1 1
2 2 17 16 3 2 2
3 5 86 74 13 8 8
4 16 532 419 75 43 42
5 63 4068 2980 555 311 284
6 318 38.933 26.566 5230 3018 2430
7 2045 474.822 289.279 63.343 39.196 25.417
8 16.999 7.558.620 3.726.311 1.005.871 682.362 314.859
9 183.231 4.509.670
EIS 112 331158 331159

Note that in order to find forbidden substructures, it is not enough to generate GnW(0,0)G_{n}^{\textup{W}}(0,0) as was the case for general iposets; indeed GnW(0,0)=G_{n}^{\textup{W}}(0,0)=\emptyset for n1n\geq 1, given that the number of interfaces for Winkowski iposets is a structural property determined by the underlying posets. Generating G7WG_{7}^{\textup{W}} took about 4 seconds and G8WG_{8}^{\textup{W}} ca. 12 minutes on a standard laptop (compare this with the 4 minutes for G7G_{7} and 300 hours for G8G_{8}). Generating G9WG_{9}^{\textup{W}} took 79 hours on one of the machines mentioned in footnote 2. Table 5 shows the numbers of Winkowskis and gp-Winkowskis on nn points up to isomorphism, and Tables A.7 to A.13 in the appendix show the split into sources and targets.

References

  • [BM02] Gunnar Brinkmann and Brendan D. McKay. Posets on up to 16 points. Order, 19(2):147--179, 2002.
  • [CDS20] James Cranch, Simon Doherty, and Georg Struth. Convolution and concurrency. https://arxiv.org/abs/2002.02321, 2020.
  • [CFJ+21] Cameron Calk, Uli Fahrenberg, Christian Johansen, Georg Struth, and Krzysztof Ziemianski. r\ell r-Multisemigroups, modal quantales and the origin of locality. In Uli Fahrenberg, Mai Gehrke, Luigi Santocanale, and Michael Winter, editors, RAMiCS, volume 13027 of Lect. Notes Comput. Sci., pages 90--107. Springer-Verlag, 2021.
  • [FBS+21] James Fairbanks, Mathieu Besançon, Simon Schölly, Júlio Hoffiman, Nick Eubank, and Stefan Karpinski. Juliagraphs/graphs.jl: an optimized graphs package for the julia programming language, 2021. https://github.com/JuliaGraphs/Graphs.jl/.
  • [Fis70] Peter C. Fishburn. Intransitive indifference with unequal indifference intervals. Journal of Mathematical Psychology, 7(1):144--149, 1970.
  • [FJST20] Uli Fahrenberg, Christian Johansen, Georg Struth, and Ratan Bahadur Thapa. Generating posets beyond N. In Uli Fahrenberg, Peter Jipsen, and Michael Winter, editors, RAMiCS, volume 12062 of Lect. Notes Comput. Sci., pages 82--99, Heidelberg, 2020. Springer-Verlag.
  • [FJSZ21a] Uli Fahrenberg, Christian Johansen, Georg Struth, and Krzysztof Ziemiański. r\ell r-Multisemigroups and modal convolution algebras. https://arxiv.org/abs/2105.00188, 2021.
  • [FJSZ21b] Uli Fahrenberg, Christian Johansen, Georg Struth, and Krzysztof Ziemiański. Languages of higher-dimensional automata. Math. Struct. Comput. Sci., 31(5):575--613, 2021.
  • [FJSZ21c] Uli Fahrenberg, Christian Johansen, Georg Struth, and Krzysztof Ziemiański. Posets with interfaces for concurrent Kleene algebra. https://arxiv.org/abs/2106.10895, 2021.
  • [Gis88] Jay L. Gischer. The equational theory of pomsets. Theoretical Computer Science, 61:199--224, 1988.
  • [Gra81] J. Grabowski. On partial languages. Fundamentae Informatica, 4(2):427, 1981.
  • [HMSW11] Tony Hoare, Bernhard Möller, Georg Struth, and Ian Wehrman. Concurrent Kleene algebra and its foundations. Journal of Logic and Algebraic Programming, 80(6):266--296, 2011.
  • [JK93] Ryszard Janicki and Maciej Koutny. Structure of concurrency. Theoretical Computer Science, 112(1):5--52, 1993.
  • [JY17] Ryszard Janicki and Xiang Yin. Modeling concurrency with interval traces. Information and Computation, 253:78--108, 2017.
  • [Lam78] Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978.
  • [Mil89] Robin Milner. Communication and Concurrency. Prentice Hall, Upper Saddle River, 1989.
  • [Pra86] Vaughan R. Pratt. Modeling concurrency with partial orders. J. Parallel Programming, 15(1):33--71, 1986.
  • [vG06a] Rob J. van Glabbeek. On the expressiveness of higher dimensional automata. Theoretical Computer Science, 356(3):265--290, 2006. See also [vG06b].
  • [vG06b] Rob J. van Glabbeek. Erratum to ‘‘On the expressiveness of higher dimensional automata’’ [vG06a]. Theoretical Computer Science, 368(1-2):168--194, 2006.
  • [Vog92] Walter Vogler. Modular Construction and Partial Order Semantics of Petri Nets, volume 625 of Lecture Notes in Computer Science. Springer, 1992.
  • [VTL82] Jacobo Valdes, Robert Endre Tarjan, and Eugene L. Lawler. The recognition of series parallel digraphs. SIAM Journal on Computing, 11(2):298--313, 1982.
  • [Win77] Józef Winkowski. An algebraic characterization of the behaviour of non-sequential systems. Information Processing Letters, 6(4):105--109, 1977.
Table A.1: Numbers of iposets on 1, 2 and 3 points split by number of sources and targets.
IP(1)\textup{{IP}}(1) 0 1
0 1 1
1 1
IP(2)\textup{{IP}}(2) 0 1 2
0 2 2 1
1 3 2
2 2
ICI(2)\textup{{ICI}}(2) 0 1 2
0 2 2 1
1 3 2
2 1
IP(3)\textup{{IP}}(3) 0 1 2 3
0 5 6 4 1
1 9 8 3
2 10 6
3 6
ICI(3)\textup{{ICI}}(3) 0 1 2 3
0 5 6 4 1
1 9 8 3
2 9 3
3 1
Table A.2: Numbers of iposets on 4 points split by number of sources and targets.
IP(4)\textup{{IP}}(4) 0 1 2 3 4
0 16 22 19 8 1
1 36 37 20 4
2 48 36 12
3 42 24
4 24
ICI(4)\textup{{ICI}}(4) 0 1 2 3 4
0 16 22 19 8 1
1 36 37 20 4
2 46 30 6
3 19 4
4 1
GPI(4)\textup{{GPI}}(4) 0 1 2 3 4
0 16 22 19 8 1
1 36 37 20 4
2 45 30 6
3 19 4
4 1
Table A.3: Numbers of iposets on 5 points split by number of sources and targets.
IP(5)\textup{{IP}}(5) 0 1 2 3 4 5
0 63 101 106 63 16 1
1 180 214 148 48 5
2 295 250 112 20
3 282 192 60
4 216 120
5 120
ICI(5)\textup{{ICI}}(5) 0 1 2 3 4 5
0 63 101 106 63 16 1
1 180 214 148 48 5
2 290 232 88 10
3 209 80 10
4 33 5
5 1
GPI(5)\textup{{GPI}}(5) 0 1 2 3 4 5
0 63 101 106 62 16 1
1 180 214 146 48 5
2 281 220 88 10
3 198 80 10
4 33 5
5 1
Table A.4: Numbers of iposets on 6 points split by number of sources and targets.
IP(6)\textup{{IP}}(6) 0 1 2 3 4 5 6
0 318 576 720 552 217 32 1
1 1131 1536 1303 589 112 6
2 2305 2221 1212 320 30
3 2549 1812 720 120
4 1872 1200 360
5 1320 720
6 720
ICI(6)\textup{{ICI}}(6) 0 1 2 3 4 5 6
0 318 576 720 552 217 32 1
1 1131 1536 1303 589 112 6
2 2289 2155 1098 240 15
3 2245 1242 280 20
4 690 170 15
5 51 6
6 1
GPI(6)\textup{{GPI}}(6) 0 1 2 3 4 5 6
0 313 565 703 523 205 32 1
1 1104 1493 1235 561 112 6
2 2146 1931 993 240 15
3 1911 1092 280 20
4 644 170 15
5 51 6
6 1
Table A.5: Numbers of iposets on 7 points split by number of sources and targets.
IP(7)\textup{{IP}}(7) 0 1 2 3 4 5 6 7
0 2045 4162 6026 5692 3074 771 64 1
1 8945 13756 13925 8210 2352 256 7
2 22664 24956 16465 5654 864 42
3 30610 23572 10440 2400 210
4 22880 14400 5280 840
5 14040 8640 2520
6 9360 5040
7 5040
ICI(7)\textup{{ICI}}(7) 0 1 2 3 4 5 6 7
0 2045 4162 6026 5692 3074 771 64 1
1 8945 13756 13925 8210 2352 256 7
2 22601 24653 15829 5024 624 21
3 29054 20072 6760 880 35
4 14489 4870 700 35
5 1777 312 21
6 73 7
7 1
GPI(7)\textup{{GPI}}(7) 0 1 2 3 4 5 6 7
0 1903 3813 5423 4878 2563 680 64 1
1 8056 12179 11811 6865 2110 256 7
2 19129 19567 12305 4246 624 21
3 21295 14420 5433 880 35
4 10439 4112 700 35
5 1647 312 21
6 73 7
7 1
Table A.6: Numbers of iposets on 8 points split by number of sources and targets.
IP(8)\textup{{IP}}(8) 0 1 2 3 4 5 6 7 8
0 16999 38280 63088 70946 49255 18152 2809 128 1
1 89699 154451 182680 134680 53651 9451 576 8
2 279685 350957 278197 122505 25810 2240 56
3 472927 410905 207923 56322 7392 336
4 406232 253640 96600 20160 1680
5 218200 126120 43680 6720
6 118080 70560 20160
7 75600 40320
8 40320
ICI(8)\textup{{ICI}}(8) 0 1 2 3 4 5 6 7 8
0 16999 38280 63088 70946 49255 18152 2809 128 1
1 89699 154451 182680 134680 53651 9451 576 8
2 279367 349229 273877 116985 22555 1568 28
3 463000 384873 173073 34857 2576 56
4 334532 152970 30605 2520 70
5 68080 14711 1484 56
6 3854 518 28
7 99 8
8 1
GPI(8)\textup{{GPI}}(8) 0 1 2 3 4 5 6 7 8
0 13943 30333 48089 50187 32790 12348 2251 128 1
1 68571 113701 125539 88295 36791 7789 576 8
2 193330 221192 164078 73774 17438 1568 28
3 263828 206161 98655 25233 2576 56
4 169476 85192 22937 2520 70
5 44362 12173 1484 56
6 3559 518 28
7 99 8
8 1
Table A.7: Numbers of Winkowski iposets on 1, 2 and 3 points split by number of sources and targets.
WIP(1)\textsf{WIP}(1) 0 1
0 0 0
1 1
WIP(2)\textsf{WIP}(2) 0 1 2
0 0 0 0
1 1 0
2 2
GPWI(2)\textsf{GPWI}(2) 0 1 2
0 0 0 0
1 1 0
2 1
WIP(3)\textsf{WIP}(3) 0 1 2 3
0 0 0 0 0
1 1 1 0
2 4 0
3 6
GPWI(3)\textsf{GPWI}(3) 0 1 2 3
0 0 0 0 0
1 1 1 0
2 4 0
3 1
Table A.8: Numbers of Winkowski iposets on 4 points split by number of sources and targets.
WIP(4)\textsf{WIP}(4) 0 1 2 3 4
0 0 0 0 0 0
1 2 3 1 0
2 11 6 0
3 18 0
4 24
GPWI(4)\textsf{GPWI}(4) 0 1 2 3 4
0 0 0 0 0 0
1 2 3 1 0
2 10 6 0
3 9 0
4 1
Table A.9: Numbers of Winkowski iposets on 5 points split by number of sources and targets.
WIP(5)\textsf{WIP}(5) 0 1 2 3 4 5
0 0 0 0 0 0 0
1 5 11 7 1 0
2 41 43 8 0
3 81 36 0
4 96 0
5 120
GPWI(5)\textsf{GPWI}(5) 0 1 2 3 4 5
0 0 0 0 0 0 0
1 5 11 7 1 0
2 39 36 8 0
3 61 18 0
4 16 0
5 1
Table A.10: Numbers of Winkowski iposets on 6 points split by number of sources and targets.
WIP(6)\textsf{WIP}(6) 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 16 47 47 15 1 0
2 200 285 135 10 0
3 598 408 60 0
4 600 240 0
5 600 0
6 720
GPWI(6)\textsf{GPWI}(6) 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 16 47 46 15 1 0
2 190 238 102 10 0
3 406 256 30 0
4 222 40 0
5 25 0
6 1
Table A.11: Numbers of Winkowski iposets on 7 points split by number of sources and targets.
WIP(7)\textsf{WIP}(7) 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 63 243 343 185 31 1 0
2 1203 2198 1609 391 12 0
3 5323 5185 1605 90 0
4 6808 3720 480 0
5 4800 1800 0
6 4320 0
7 5040
GPWI(7)\textsf{GPWI}(7) 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 63 239 318 173 31 1 0
2 1096 1727 1129 260 12 0
3 3284 2699 838 45 0
4 2864 1112 80 0
5 595 75 0
6 36 0
7 1
Table A.12: Numbers of Winkowski iposets on 8 points split by number of sources and targets.
WIP(8)\textsf{WIP}(8) 0 1 2 3 4 5 6 7 8
0 0 0 0 0 0 0 0 0 0
1 318 1533 2891 2319 707 63 1 0
2 8895 20195 20222 8333 1099 14 0
3 56783 71835 37396 5688 126 0
4 112751 72140 17580 840 0
5 74000 35400 4200 0
6 42120 15120 0
7 35280 0
8 40320
GPWI(8)\textsf{GPWI}(8) 0 1 2 3 4 5 6 7 8
0 0 0 0 0 0 0 0 0 0
1 313 1432 2413 1856 616 63 1 0
2 7402 13942 12152 4736 626 14 0
3 29702 30062 14150 2433 63 0
4 36058 20366 4230 140 0
5 13812 3507 175 0
6 1316 126 0
7 49 0
8 1
Table A.13: Numbers of gp-Winkowski iposets on 9 points split by number of sources and targets.
GPWI(9)\textsf{GPWI}(9) 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0
1 1903 10109 20397 20173 9935 2123 127 1 0
2 57949 126041 135862 74501 18507 1456 16 0
3 298002 355788 221772 65086 6585 84 0
4 478218 340355 115612 13988 224 0
5 276343 108612 15337 350 0
6 49569 8960 336 0
7 2555 196 0
8 64 0
9 1