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

\publyear

24 \papernumber2194 \finalVersionForARXIV

Myhill-Nerode Theorem for Higher-Dimensional Automata

Uli Fahrenberg
EPITA Research Laboratory (LRE)
Address for correspondence: EPITA Research Laboratory (LRE), France.
   France
uli@lrde.epita.fr
   Krzysztof Ziemiański
University of Warsaw
   Poland
ziemians@mimuw.edu.pl
Abstract

We establish a Myhill-Nerode type theorem for higher-dimensional automata (HDAs), stating that a language is regular if and only if it has finite prefix quotient. HDAs extend standard automata with additional structure, making it possible to distinguish between interleavings and concurrency. We also introduce deterministic HDAs and show that not all HDAs are determinizable, that is, there exist regular languages that cannot be recognised by a deterministic HDA. Using our theorem, we develop an internal characterisation of deterministic languages. Lastly, we develop analogues of the Myhill-Nerode construction and of determinacy for HDAs with interfaces.

keywords:
higher-dimensional automaton; Myhill-Nerode theorem; concurrency theory; determinism
volume: 192issue: 3-4

Myhill-Nerode Theorem for Higher-Dimensional Automata

1 Introduction

a\vphantom{b}abba\vphantom{b}abbbba\vphantom{b}a
a\vphantom{b}abbbba\vphantom{b}aa\vphantom{b}abb
Figure 1: Petri net and HDA models distinguishing interleaving from non-interleaving concurrency. Left: Petri net and HDA models for a.b+b.aa.b+b.a; right: HDA and Petri net models for aba\mathrel{\|}b.

Higher-dimensional automata (HDAs), introduced by Pratt and van Glabbeek [1, 2, 3], extend standard automata with additional structure that makes it possible to distinguish between interleavings and concurrency. That puts them in a class with other non-interleaving models for concurrency such as Petri nets [4], event structures [5], configuration structures [6, 7], asynchronous transition systems [8, 9], and similar approaches [10, 11, 12, 13], while retaining some of the properties and intuition of automata-like models. As an example, Figure 1 shows Petri net and HDA models for a system with two events, labelled aa and bb. The Petri net and HDA on the left side model the (mutually exclusive) interleaving of aa and bb as either a.ba.b or b.ab.a; those to the right model concurrent execution of aa and bb. In the HDA, this independence is indicated by a filled-in square.

We have recently introduced languages of HDAs [14], which consist of partially ordered multisets with interfaces (ipomsets), and shown a Kleene theorem for them [15, 16]. Here we continue to develop the language theory of HDAs. Our first contribution is a Myhill-Nerode type theorem for HDAs, stating that a language is regular if and only if it has finite prefix quotient. This provides a necessary and sufficient condition for regularity. Our proof is inspired by the standard proofs of the Myhill-Nerode theorem, but the higher-dimensional structure introduces some difficulties. For example, we cannot use the standard prefix quotient relation but need to develop a stronger one which takes concurrency of events into account.

As a second contribution, we give a precise definition of deterministic HDAs and show that there exist regular languages that cannot be recognised by deterministic HDAs. Our Myhill-Nerode construction will produce a deterministic HDA for such deterministic languages, and a non-deterministic HDA otherwise. Our definition of determinism is more subtle than for standard automata as it is not always possible to remove non-accessible parts of HDAs. We develop a language-internal characterisation of deterministic languages.

Thirdly, we develop a variant of the Myhill-Nerode construction and of determinism which uses higher-dimensional automata with interfaces (iHDAs). These were introduced in [15] and allow for some components to be missing which in HDAs would have to exist solely for structural reasons. In iHDAs, non-accessible parts may be removed, which allows for a more principled Myhill-Nerode construction. HDAs and iHDAs are related via mappings called resolution and closure which preserve languages.

We start this paper by introducing languages of ipomsets in Section 2. Section 3 develops important decomposition properties of ipomsets needed in the sequel, and HDAs are introduced in Section 4. Section 5 then states and proves our Myhill-Nerode theorem, and Section 6 introduces deterministic HDAs. HDAs with interfaces are defined in Section 7, the Myhill-Nerode theorem using iHDAs is in Section 8, and deterministic iHDAs are treated in Section 9. This paper is based on [17] which was presented at the 44th International Conference on Application and Theory of Petri Nets and Concurrency. Compared to this conference paper, proofs have been added and errors corrected, and the material in Sections 8 and 9 is new.

2 Pomsets with interfaces

HDAs model systems in which labelled events have duration and may happen concurrently. Every event has a time interval during which it is active: it starts at some point, then remains active until its termination and never reappears. Events may be concurrent, that is, their activity intervals may overlap; otherwise, one of the events precedes the other. We also need to consider executions in which some events are already active at the beginning (source events) or are still active at the end (target events).

At any moment of an execution we observe a list of currently active events (such lists are called conclists below). The relative position of any two concurrent events on these lists remains the same, regardless of the point in time. This provides a secondary relation between events, which we call event order.

To make the above precise, let Σ\Sigma be a finite alphabet. A conclist (for “concurrency list”) (U,,λ)(U,{\dashrightarrow},\lambda) is a finite set UU with a total order \dashrightarrow called the event order and a labelling function λ:UΣ\lambda:U\to\Sigma. Conclists (or rather their isomorphism classes) are effectively strings but consist of concurrent, not subsequent, events.

A labelled poset with event order (lposet) (P,<,,λ)(P,{<},{\dashrightarrow},\lambda) consists of a finite set PP with two relations: precedence << and event order \dashrightarrow, together with a labelling function λ:PΣ\lambda:P\to\Sigma. Note that different events may carry the same label: we do not exclude autoconcurrency. We require that both << and \dashrightarrow are strict partial orders, that is, they are irreflexive and transitive (and thus asymmetric). We also require that for each xyx\neq y in PP, at least one of x<yx<y or y<xy<x or xyx\dashrightarrow y or yxy\dashrightarrow x must hold; that is, if xx and yy are concurrent, then they must be related by \dashrightarrow.

Conclists may be regarded as lposets with empty precedence relation; the last condition enforces that their elements are totally ordered by \dashrightarrow. A temporary state of an execution is described by a conclist, while the whole execution provides an lposet of its events. The precedence order expresses that one event terminates before the other starts. The event order of an lposet is generated by the event orders of temporary conclists. Hence any two events which are active concurrently are unrelated by << but related by \dashrightarrow.

In order to accommodate source and target events, we need to introduce lposets with interfaces (iposets). An iposet (P,<,,S,T,λ)(P,{<},{\dashrightarrow},S,T,\lambda) consists of an lposet (P,<,,λ)(P,{<},{\dashrightarrow},\lambda) together with subsets S,TPS,T\subseteq P of source and target interfaces. Elements of SS must be <<-minimal and those of TT <<-maximal; hence both SS and TT are conclists. We often denote an iposet as above by SPT{\vphantom{P}}_{S}P_{T} or (S,P,T)(S,P,T), ignoring the orders and labelling, or use SP=SS_{P}=S and TP=TT_{P}=T if convenient. Source and target events will be marked by “ \bullet ” at the left or right side, and if the event order is not shown, we assume that it goes downwards.

aabbccaa \bullet ccbbaabbccaa \bullet ccbbaabbccaa \bullet ccbbaabbccaa \bullet ccbb
Figure 2: Activity intervals (top) and corresponding iposets (bottom), see Example 2.1. Full arrows indicate precedence order; dashed arrows indicate event order; bullets indicate interfaces.
Example 2.1

Figure 2 shows some simple examples of activity intervals of events and the corresponding iposets. The left iposet consists of three totally ordered events, given that the intervals do not overlap; the event aa is already active at the beginning and hence in the source interface. In the other iposets, the activity intervals do overlap and hence the precedence order is partial (and the event order non-trivial).

Given that the precedence relation << of an iposet represents activity intervals of events, it is an interval order [18]. In other words, any of the iposets we will encounter admits an interval representation: functions bb and ee from PP to real numbers such that b(x)e(x)b(x)\leq e(x) for all xPx\in P and x<Pye(x)<b(y)x<_{P}y\iff e(x)<b(y) for all x,yPx,y\in P. We will only consider interval iposets in this paper and hence omit the qualification “interval”. This is not a restriction, but rather induced by the semantics. The following property is trivial, but we will make heavy use of it later.

Lemma 2.2

If PP is an (interval) iposet and APA\subseteq P, then the set difference PAP-A is an (interval) iposet as well.

Iposets may be refined by shortening the activity intervals of events, so that some events stop being concurrent. This corresponds to expanding the precedence relation << (and, potentially, removing event order). The inverse to refinement is called subsumption and defined as follows. For iposets PP and QQ, we say that QQ subsumes PP (or that PP is a refinement of QQ) and write PQP\sqsubseteq Q if there exists a bijection f:PQf:P\to Q (a subsumption) which

  • respects interfaces and labels: f(SP)=SQf(S_{P})=S_{Q}, f(TP)=TQf(T_{P})=T_{Q}, and λQf=λP\lambda_{Q}\circ f=\lambda_{P};

  • reflects precedence: f(x)<Qf(y)f(x)<_{Q}f(y) implies x<Pyx<_{P}y; and

  • preserves essential event order: xPyx\dashrightarrow_{P}y implies f(x)Qf(y)f(x)\dashrightarrow_{Q}f(y) whenever xx and yy are concurrent (that is, xPyx\not<_{P}y and yPxy\not<_{P}x).

(Event order is essential for concurrent events, but by transitivity, it also appears between non-concurrent events; subsumptions may ignore such non-essential event order.)

Example 2.3

In Figure 2, there is a sequence of refinements from right to left, each time shortening some activity intervals. Conversely, there is a sequence of subsumptions from left to right:

 a cb a cb a cb a cb\vbox{\hbox{ \leavevmode\hbox to27.88pt{\vbox to27.31pt{\pgfpicture\makeatletter\hbox{\thinspace\lower-13.65736pt\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}{5.5165pt}{10.01262pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.14713pt}{10.71747pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{5.96442pt}{-13.88759pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{33.86859pt}{-3.125pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.9498pt}{9.38654pt}\pgfsys@lineto{29.41647pt}{2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{-0.39397}{0.39397}{0.91913}{29.41647pt}{2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.50188pt}{-9.57845pt}\pgfsys@lineto{29.41647pt}{-2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{0.39397}{-0.39397}{0.91913}{29.41647pt}{-2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{7.96664pt}{6.47961pt}\pgfsys@lineto{7.96664pt}{-5.47963pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{7.96664pt}{-5.47963pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}}}}\;\sqsubseteq\;\vbox{\hbox{ \leavevmode\hbox to27.88pt{\vbox to27.31pt{\pgfpicture\makeatletter\hbox{\thinspace\lower-13.65736pt\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}{5.5165pt}{10.01262pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.14713pt}{10.71747pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{5.96442pt}{-13.88759pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{33.86859pt}{-3.125pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.9498pt}{9.38654pt}\pgfsys@lineto{29.41647pt}{2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{-0.39397}{0.39397}{0.91913}{29.41647pt}{2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.50188pt}{-9.57845pt}\pgfsys@lineto{29.41647pt}{-2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{0.39397}{-0.39397}{0.91913}{29.41647pt}{-2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{7.96664pt}{6.47961pt}\pgfsys@lineto{7.96664pt}{-5.47963pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{7.96664pt}{-5.47963pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}}}}\;\sqsubseteq\;\vbox{\hbox{ \leavevmode\hbox to27.88pt{\vbox to27.31pt{\pgfpicture\makeatletter\hbox{\thinspace\lower-13.65736pt\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}{5.5165pt}{10.01262pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.14713pt}{10.71747pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{5.96442pt}{-13.88759pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{33.86859pt}{-3.125pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.9498pt}{9.38654pt}\pgfsys@lineto{29.41647pt}{2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{-0.39397}{0.39397}{0.91913}{29.41647pt}{2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{30.33559pt}{-2.36322pt}\pgfsys@lineto{14.42099pt}{-9.18434pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{-0.91913}{-0.39395}{0.39395}{-0.91913}{14.42099pt}{-9.18433pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{7.96664pt}{6.47961pt}\pgfsys@lineto{7.96664pt}{-5.47963pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{7.96664pt}{-5.47963pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}}}}\;\sqsubseteq\;\vbox{\hbox{ \leavevmode\hbox to27.88pt{\vbox to27.31pt{\pgfpicture\makeatletter\hbox{\thinspace\lower-13.65736pt\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}{5.5165pt}{10.01262pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.14713pt}{10.71747pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{5.96442pt}{-13.88759pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{33.86859pt}{-3.125pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{13.9498pt}{9.38654pt}\pgfsys@lineto{29.41647pt}{2.75708pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.91913}{-0.39397}{0.39397}{0.91913}{29.41647pt}{2.75708pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{30.33559pt}{-2.36322pt}\pgfsys@lineto{14.42099pt}{-9.18434pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{-0.91913}{-0.39395}{0.39395}{-0.91913}{14.42099pt}{-9.18433pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{7.96664pt}{6.47961pt}\pgfsys@lineto{7.96664pt}{-5.47963pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{7.96664pt}{-5.47963pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}}}}

Interfaces need to be preserved across subsumptions, so in our example, the left endpoint of the aa-interval must stay at the boundary.

Iposets and subsumptions form a category. The isomorphisms in that category are invertible subsumptions, and isomorphism classes of iposets are called ipomsets. Concretely, an isomorphism f:PQf:P\to Q of iposets is a bijection which

  • respects interfaces and labels: f(SP)=SQf(S_{P})=S_{Q}, f(TP)=TQf(T_{P})=T_{Q}, and λQf=λP\lambda_{Q}\circ f=\lambda_{P};

  • respects precedence: x<Pyf(x)<Qf(y)x<_{P}y\iff f(x)<_{Q}f(y); and

  • respects essential event order: xPyf(x)Qf(y)x\dashrightarrow_{P}y\iff f(x)\dashrightarrow_{Q}f(y) whenever xPyx\not<_{P}y and yPxy\not<_{P}x.

Isomorphisms between iposets are unique (because of the requirement that all elements be ordered by << or \dashrightarrow), hence we may switch freely between ipomsets and concrete representations, see [15] for details. We write PQP\cong Q if iposets PP and QQ are isomorphic and let iiPoms denote the set of (interval) ipomsets.

Ipomsets may be glued, using a generalisation of the standard serial composition of pomsets [19]. For ipomsets PP and QQ, their gluing PQP*Q is defined if the targets of PP match the sources of QQ: TPSQT_{P}\cong S_{Q}. In that case, its carrier set is the quotient (PQ)/xf(x)(P\sqcup Q)_{/x\equiv f(x)}, where f:TPSQf:T_{P}\to S_{Q} is the unique isomorphism, the interfaces are SPQ=SPS_{P*Q}=S_{P} and TPQ=TQT_{P*Q}=T_{Q}, PQ\dashrightarrow_{P*Q} is the transitive closure of PQ{\dashrightarrow_{P}}\cup{\dashrightarrow_{Q}}, and x<PQyx<_{P*Q}y if and only if x<Pyx<_{P}y, or x<Qyx<_{Q}y, or xPTPx\in P-T_{P} and yQSQy\in Q-S_{Q}. We will often omit the “*” in gluing compositions. For ipomsets with empty interfaces, * is serial pomset composition; in the general case, matching interface points are glued, see [14, 20] or below for examples.

A language is, a priori, a set of ipomsets LiiPomsL\subseteq\text{{{iiPoms}}}. However, we will assume that languages are closed under refinement (inverse subsumption), so that refinements of any ipomset in LL are also in LL:

Definition 2.4

A language is a subset LiiPomsL\subseteq\text{{{iiPoms}}} such that PQP\sqsubseteq Q and QLQ\in L imply PLP\in L.

Using interval representations, this means that languages are closed under shortening activity intervals of events. The set of all languages is denoted 2iiPoms\mathscr{L}\subseteq 2^{\text{{{iiPoms}}}}.

For XiiPomsX\subseteq\text{{{iiPoms}}} an arbitrary set of ipomsets, we denote by

X={PiiPomsQX:PQ}X\mathord{\downarrow}=\{P\in\text{{{iiPoms}}}\mid\exists Q\in X:P\sqsubseteq Q\}

its downward subsumption closure, that is, the smallest language which contains XX. Then

={XiiPomsX=X}.\mathscr{L}=\{X\subseteq\text{{{iiPoms}}}\mid X\mathord{\downarrow}=X\}.

3 Step decompositions

An ipomset PP is discrete if <P<_{P} is empty and P\dashrightarrow_{P} total. Conclists are discrete ipomsets with empty interfaces. Discrete ipomsets UUU{\vphantom{U}}_{U}U_{U} are identities for gluing composition and written idU\textup{{id}}_{U}. A starter is an ipomset UAUU{\vphantom{U}}_{U-A}U_{U}, a terminator is UUUA{\vphantom{U}}_{U}U_{U-A}; these will be written AU{}_{A\!}{\uparrow}{U} and UA{U}{\downarrow}_{A}, respectively.

[​ ac b d ​​]\left[\vbox{\hbox{\! \leavevmode\hbox to58.03pt{\vbox to36.67pt{\pgfpicture\makeatletter\hbox{\qquad\lower-31.7322pt\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.45015pt}{-1.93748pt}\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{{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{32.14108pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{35.44237pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-28.73248pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.9435pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{31.74698pt}{-28.73248pt}\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{{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.64986pt}{0.0pt}\pgfsys@lineto{27.94139pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{27.94139pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.18164pt}{-25.60748pt}\pgfsys@lineto{27.54729pt}{-25.60748pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{27.54729pt}{-25.60748pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.64986pt}{-4.23627pt}\pgfsys@lineto{27.74733pt}{-20.81145pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.79996}{-0.60005}{0.60005}{0.79996}{27.74733pt}{-20.81145pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{28.94138pt}{-3.9001pt}\pgfsys@lineto{5.98158pt}{-21.12218pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{-0.79996}{-0.60005}{0.60005}{-0.79996}{5.98158pt}{-21.12218pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{34.14331pt}{-5.13719pt}\pgfsys@lineto{34.14331pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{34.14331pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} \!\!}}\right][​ ac b d ​​]\left[\vbox{\hbox{\! \leavevmode\hbox to51.77pt{\vbox to26pt{\pgfpicture\makeatletter\hbox{\qquad\lower-21.06241pt\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.45015pt}{-1.93748pt}\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{{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.45053pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{29.46745pt}{-16.17033pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-18.0627pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-16.17033pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.05643pt}{-18.0627pt}\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{{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.64986pt}{0.0pt}\pgfsys@lineto{22.25084pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{22.25084pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.18164pt}{-14.9377pt}\pgfsys@lineto{21.85674pt}{-14.9377pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{21.85674pt}{-14.9377pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.64986pt}{-2.96596pt}\pgfsys@lineto{21.97136pt}{-11.5354pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.88538}{-0.46486}{0.46486}{0.88538}{21.97136pt}{-11.53539pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} \!\!}}\right]aabbccdd[ab ]\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.45015pt}{-1.93748pt}\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{{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-28.73248pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{2.99663pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.0147pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right]a[ab]{}_{a\!}{\uparrow}{\left[\begin{matrix}a\\ b\end{matrix}\right]}aabb[

ab

]
\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.45015pt}{-1.93748pt}\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{{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-28.73248pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-6.6772pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.0147pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right]
[ab]a{\left[\begin{matrix}a\\ b\end{matrix}\right]}{\downarrow}_{a}aabb[cb ]\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.00223pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-28.73248pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{2.99663pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.0147pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right]c[cb]{}_{c\!}{\uparrow}{\left[\begin{matrix}c\\ b\end{matrix}\right]}ccbb[cb ]\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.00223pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-28.73248pt}\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{{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-6.6772pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{2.99663pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right][cb]b{\left[\begin{matrix}c\\ b\end{matrix}\right]}{\downarrow}_{b}ccbb[cd ]\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.00223pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.39633pt}{-28.73248pt}\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{{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-6.6772pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{2.99663pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.0147pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right]d[cd]{}_{d\!}{\uparrow}{\left[\begin{matrix}c\\ d\end{matrix}\right]}ccdd[cd ]\left[\vbox{\hbox{ \leavevmode\hbox to14.23pt{\vbox to34.14pt{\pgfpicture\makeatletter\hbox{\quad\lower-30.72876pt\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.00223pt}{-1.93748pt}\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{{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.39633pt}{-28.73248pt}\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{{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-6.6772pt}{-1.23264pt}\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{{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-8.65913pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{1.0147pt}{-26.84012pt}\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{{$\vphantom{b}\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,2.0pt}{0.0pt}\pgfsys@invoke{ }\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{.5,.5,.5}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{0.0pt}{-5.13719pt}\pgfsys@lineto{0.0pt}{-18.28279pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0.0pt}{-18.28279pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right][cd]c{\left[\begin{matrix}c\\ d\end{matrix}\right]}{\downarrow}_{c}ccdd==*****==*****==*****
Figure 3: Sparse decomposition of ipomset into starters and terminators.

Any ipomset can be presented as a gluing of starters and terminators [20, Proposition 21]. (This is related to the fact that a partial order is interval if and only if its antichain order is total, see [21, 18, 22]). Such a presentation we call a step decomposition; if starters and terminators are alternating, the decomposition is sparse.

Example 3.1

Figure 3 shows a sparse decomposition of an ipomset into starters and terminators. The top line shows the graphical representation, in the middle the representation using the notation we have introduced for starters and terminators, and the bottom line shows activity intervals.

We show that sparse step decompositions of ipomsets are unique. For an ipomset PP, we denote by PmPP^{m}\subseteq P the subset of <<-minimal elements and

Ps={pPpPPm:p<p}.P^{s}=\{p\in P\mid\forall\;p^{\prime}\in P-P^{m}:\;p<p^{\prime}\}.

That is, PsP^{s} contains precisely those minimal elements which have arrows to all non-minimal elements. Clearly, both PmP^{m} and PsP^{s} are conclists, and PsPmSPP^{s}\subseteq P^{m}\supseteq S_{P}. We need a few technical lemmas.

Lemma 3.2

Let PP be an ipomset, UU a conclist, and AUA\subseteq U.

  1. 1.

    Assume that USPU\cong S_{P} and P=AUPP^{\prime}={}_{A\!}{\uparrow}{U}*P. Then PP^{\prime} and PP are isomorphic as pomsets, TPTPT_{P}\cong T_{P^{\prime}} and SPSPAS_{P^{\prime}}\cong S_{P}-A.

  2. 2.

    Assume that UASPU-A\cong S_{P} and P=UAPP^{\prime}={U}{\downarrow}_{A}*P. Then PPAP^{\prime}\cong P\cup A as sets, and PPAP\cong P^{\prime}-A as pomsets, TPTPT_{P}\cong T_{P^{\prime}} and SPUS_{P^{\prime}}\cong U. ∎

Proof 3.3

Simple calculations.

Consider a presentation PQRP\cong QR. From the definition follows that PmQmP^{m}\cong Q^{m} and SPSQS_{P}\cong S_{Q} This implies:

Lemma 3.4

Assume that PQRP\cong QR and QQ is either a (non-identity) starter or a terminator. Then QQ is a starter iff SPPmS_{P}\subsetneq P^{m}, and QQ is a terminator iff SP=PmS_{P}=P^{m}.

Proof 3.5

We have PmQ=QmP^{m}\cong Q=Q^{m} and SPSQS_{P}\cong S_{Q}. But QQ is a terminator if and only if SQ=QS_{Q}=Q, and a (non-identity) starter if and only if SQQS_{Q}\subsetneq Q. ∎

Lemma 3.6

Assume that PQQRP\cong QQ^{\prime}R.

  1. 1.

    If QQ is a non-identity starter and QQ^{\prime} is a non-identity terminator, then QPmSPPmQ\cong{}_{P^{m}-S_{P}\!}{\uparrow}{P^{m}}.

  2. 2.

    If QQ is a non-identity terminator and QQ^{\prime} is a non-identity starter, then QPmPsQ\cong{P^{m}}{\downarrow}_{P^{s}}.

Proof 3.7

Consider the first case. Then PP and QRQ^{\prime}R are isomorphic as pomsets, and

Q=TQSQR=Lemma 3.4(QR)mLemma 3.2Pm.Q=T_{Q}\cong S_{Q^{\prime}R}\overset{\text{Lemma \ref{l:StartCrit}}}{=}(Q^{\prime}R)^{m}\overset{\text{Lemma \ref{l:STGluing}}}{\cong}P^{m}.

Equality SQ=SPS_{Q}=S_{P} follows immediately from the definition.

In the second case, we have Q=SQSP=Lemma 3.4PmQ=S_{Q}\cong S_{P}\overset{\text{Lemma \ref{l:StartCrit}}}{=}P^{m}, and QRP(QTQ)Q^{\prime}R\cong P-(Q-T_{Q}) as pomsets (Lemma 3.2). By Lemma 3.4 we have

Pm(QR)=Q(QR)=TQSQRLemma 3.4(QR)m.P^{m}\cap(Q^{\prime}R)=Q\cap(Q^{\prime}R)=T_{Q}\cong S_{Q^{\prime}R}\overset{\text{Lemma \ref{l:StartCrit}}}{\subsetneq}(Q^{\prime}R)^{m}.

Hence there exists an element pQRp\in Q^{\prime}R that is minimal in QRQ^{\prime}R but not in PP. For every pPsp^{\prime}\in P^{s} we have p<pp^{\prime}<p and, therefore, pQRp^{\prime}\not\in Q^{\prime}R. As a consequence, PsP(QR)=QTQP^{s}\subseteq P-(Q^{\prime}R)=Q-T_{Q} (Lemma 3.2).

On the other hand, if pPmPsp^{\prime}\in P^{m}-P^{s}, then there exists pPPm=PQp\in P-P^{m}=P-Q such that ppp^{\prime}\not<p. Thus, pp^{\prime} must belong to TQT_{Q}. ∎

Proposition 3.8

Every ipomset PP has a unique sparse step decomposition.

Proof 3.9

Let P=P1Pn=Q1QmP=P_{1}*\dotsm*P_{n}=Q_{1}*\dotsm*Q_{m} be two sparse presentations. If n=1n=1, then m=1m=1 and equality follows trivially, so assume n,m2n,m\geq 2 and write P2Pn=PP_{2}*\dotsm*P_{n}=P^{\prime} and Q2Qm=QQ_{2}*\dotsm*Q_{m}=Q^{\prime}.

Assume first that P1P_{1} is a starter. By Lemma 3.6, P1PmSPPmP_{1}\cong{}_{P^{m}-S_{P}\!}{\uparrow}{P^{m}}. By Lemma 3.2, SPSP(PmSP)S_{P}\cong S_{P^{\prime}}-(P^{m}-S_{P}). Hence SPPmS_{P^{\prime}}\cong P^{m}, implying SPPmS_{P}\subsetneq P^{m}. By Lemma 3.4, Q1Q_{1} is a starter. By Lemma 3.6, Q1PmSPPmQ_{1}\cong{}_{P^{m}-S_{P}\!}{\uparrow}{P^{m}}. Thus P1Q1P_{1}\cong Q_{1}, and we may proceed inductively with P=QP^{\prime}=Q^{\prime}.

Now assume instead that P1P_{1} is a terminator. By Lemma 3.6, P1PmPsP_{1}\cong{P^{m}}{\downarrow}_{P^{s}}. By Lemma 3.2, SPPmS_{P}\cong P^{m}. By Lemma 3.4, Q1Q_{1} is a terminator. By Lemma 3.6, Q1PmPsQ_{1}\cong{P^{m}}{\downarrow}_{P^{s}}. Thus P1Q1P_{1}\cong Q_{1}, and we may proceed inductively with P=QP^{\prime}=Q^{\prime}. ∎

4 Higher-dimensional automata and their languages

An HDA is a collection of cells which are connected according to specified face maps. Each cell has an associated list of labelled events which are interpreted as being executed in that cell, and the face maps may terminate some events or, inversely, indicate cells in which some of the current events were not yet started. Additionally, some cells are designated start cells and some others accept cells; computations of an HDA begin in a start cell and proceed by starting and terminating events until they reach an accept cell.

4.1 Precubical sets and HDAs

To make the above precise, let \square denote the set of conclists. A precubical set consists of a set of cells XX together with a mapping ev:X\textup{{ev}}:X\to\square which to every cell assigns its list of active events. For a conclist UU we write X[U]={xXev(x)=U}X[U]=\{x\in X\mid\textup{{ev}}(x)=U\} for the cells of type UU. Further, for every UU\in\square and subset AUA\subseteq U there are face maps δA0,δA1:X[U]X[UA]\delta_{A}^{0},\delta_{A}^{1}:X[U]\to X[U-A]. The upper face maps δA1\delta_{A}^{1} terminate the events in AA, whereas the lower face maps δA0\delta_{A}^{0} “unstart” these events: they map cells xX[U]x\in X[U] to cells δA0(x)X[UA]\delta_{A}^{0}(x)\in X[U-A] where the events in AA are not yet active.

If A,BUA,B\subseteq U are disjoint, then the order in which events in AA and BB are terminated or unstarted should not matter, so we require that δAνδBμ=δBμδAν\delta_{A}^{\nu}\delta_{B}^{\mu}=\delta_{B}^{\mu}\delta_{A}^{\nu} for ν,μ{0,1}\nu,\mu\in\{0,1\}: the precubical identities. A higher-dimensional automaton (HDA) is a precubical set XX together with subsets X,XX\bot_{X},\top_{X}\subseteq X of start and accept cells. For a precubical set XX and subsets Y,ZXY,Z\subseteq X we denote by XYZX_{Y}^{Z} the HDA with precubical set XX, start cells YY and accept cells ZZ. We do not generally assume that precubical sets or HDAs are finite. The dimension of an HDA XX is dim(X)=sup{|ev(x)|xX}{}\dim(X)=\sup\{|\textup{{ev}}(x)|\mid x\in X\}\in\mathbbm{N}\cup\{\infty\}.

Example 4.1

One-dimensional HDAs XX are standard automata. Cells in X[]X[\emptyset] are states, cells in X[a]X[a] for aΣa\in\Sigma are aa-labelled transitions. Face maps δa0\delta_{a}^{0} and δa1\delta_{a}^{1} attach source and target states to transitions. In contrast to ordinary automata we allow start and accept transitions instead of merely states, so languages of such automata may contain not only words but also “words with interfaces”. In any case, at most one event is active at any point in time, so the event order is unnecessary.

v\vphantom{hy}vx\vphantom{hy}xw\vphantom{hy}wy\vphantom{hy}ye\vphantom{hy}ef\vphantom{hy}fg\vphantom{hy}gh\vphantom{hy}hq\vphantom{hy}qX[]={v,w,x,y}X[\emptyset]=\{v,w,x,y\}X[a]={e,f}X[a]=\{e,f\}X[b]={g,h}X[b]=\{g,h\}X[ab]={q}X[ab]=\{q\}δa0\delta^{0}_{a}δa1\delta^{1}_{a}δa0\delta^{0}_{a}δa1\delta^{1}_{a}δa0\delta^{0}_{a}δa1\delta^{1}_{a}δb0\delta^{0}_{b}δb1\delta^{1}_{b}δb0\delta^{0}_{b}δb1\delta^{1}_{b}δb0\delta^{0}_{b}δb1\delta^{1}_{b}δab1\delta^{1}_{ab}\!\!δab0\delta^{0}_{ab}\!\!\bot\;\;\top\;\topX={v}\bot_{X}=\{v\}X={h,y}\top_{X}=\{h,y\}aabb\bot\top\top
Figure 4: A two-dimensional HDA XX on Σ={a,b}\Sigma=\{{\color[rgb]{0.7,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0.7,0,0}{a}},{\color[rgb]{0,0.7,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0.7,0}{b}}\}, see Example 4.2.
Example 4.2

Figure 4 shows a two-dimensional HDA XX both as a combinatorial object (left) and in a more geometric realisation (right). We write isomorphism classes of conclists as lists of labels and omit the set braces in δ{a}0\delta_{\{a\}}^{0} etc. XX has four zero-dimensional cells, or states, displayed in grey on the left; four one-dimensional transitions, two labelled aa and displayed in red and two labelled bb and shown in green; and one two-dimensional cell displayed in yellow.

An HDA-map between HDAs XX and YY is a function f:XYf:X\to Y that preserves structure: types of cells (evYf=evX\textup{{ev}}_{Y}\circ f=\textup{{ev}}_{X}), face maps (f(δAν(x))=δAν(f(x))f(\delta^{\nu}_{A}(x))=\delta^{\nu}_{A}(f(x))) and start/accept cells (f(X)Yf(\bot_{X})\subseteq\bot_{Y}, f(X)Yf(\top_{X})\subseteq\top_{Y}). Similarly, a precubical map is a function that preserves the first two of these three. HDAs and HDA-maps form a category, as do precubical sets and precubical maps.

4.2 Paths and their labels

Computations of HDAs are paths: sequences of cells connected by face maps. A path in XX is, thus, a sequence

α=(x0,φ1,x1,,xn1,φn,xn),\alpha=(x_{0},\varphi_{1},x_{1},\dotsc,x_{n-1},\varphi_{n},x_{n}), (1)

where the xix_{i} are cells of XX and the φi\varphi_{i} indicate types of face maps: for every ii, (xi1,φi,xi)(x_{i-1},\varphi_{i},x_{i}) is either

  • (δA0(xi),A,xi)(\delta^{0}_{A}(x_{i}),\mathrel{\nearrow^{A}},x_{i}) for Aev(xi)A\subseteq\textup{{ev}}(x_{i}) (an upstep)

  • or (xi1,B,δB1(xi1))(x_{i-1},\mathrel{\searrow_{B}},\delta^{1}_{B}(x_{i-1})) for Bev(xi1)B\subseteq\textup{{ev}}(x_{i-1}) (a downstep).

Upsteps start events in AA while downsteps terminate events in BB. The source and target of α\alpha as in (1) are 𝗌𝗋𝖼(α)=x0\mathsf{src}(\alpha)=x_{0} and 𝗍𝗀𝗍(α)=xn\mathsf{tgt}(\alpha)=x_{n}.

The set of all paths in XX starting at YXY\subseteq X and terminating in ZXZ\subseteq X is denoted by 𝖯𝖺𝗍𝗁(X)YZ\mathsf{Path}(X)_{Y}^{Z}; we write 𝖯𝖺𝗍𝗁(X)Y=𝖯𝖺𝗍𝗁(X)YX\mathsf{Path}(X)_{Y}=\mathsf{Path}(X)_{Y}^{X}, 𝖯𝖺𝗍𝗁(X)Z=𝖯𝖺𝗍𝗁(X)XZ\mathsf{Path}(X)^{Z}=\mathsf{Path}(X)_{X}^{Z}, and 𝖯𝖺𝗍𝗁(X)=𝖯𝖺𝗍𝗁(X)XX\mathsf{Path}(X)=\mathsf{Path}(X)_{X}^{X}. A path α\alpha is accepting if 𝗌𝗋𝖼(α)X\mathsf{src}(\alpha)\in\bot_{X} and 𝗍𝗀𝗍(α)X\mathsf{tgt}(\alpha)\in\top_{X}. Paths α\alpha and β\beta may be concatenated if 𝗍𝗀𝗍(α)=𝗌𝗋𝖼(β)\mathsf{tgt}(\alpha)=\mathsf{src}(\beta); their concatenation is written αβ\alpha*\beta, and we omit the “*” in concatenations if convenient.

Path equivalence is the congruence \simeq generated by (zAyBx)(zABx)(z\mathrel{\nearrow^{A}}y\mathrel{\nearrow^{B}}x)\simeq(z\mathrel{\nearrow^{A\cup B}}x), (xAyBz)(xABz)(x\mathrel{\searrow_{A}}y\mathrel{\searrow_{B}}z)\simeq(x\mathrel{\searrow_{A\cup B}}z), and γαδγβδ\gamma\alpha\delta\simeq\gamma\beta\delta whenever αβ\alpha\simeq\beta. Intuitively, this relation allows to assemble subsequent upsteps or downsteps into one “bigger” step. A path is sparse if its upsteps and downsteps are alternating, so that no more such assembling may take place. Every equivalence class of paths contains a unique sparse path.

Example 4.3

In one-dimensional HDAs, paths are sequences of transitions connected at states. Path equivalence is a trivial relation, and all paths are sparse.

Example 4.4

The HDA XX of Figure 4 admits five sparse accepting paths:

vaeawbh,vaeawbhby,\displaystyle v\mathrel{\nearrow^{a}}e\mathrel{\searrow_{a}}w\mathrel{\nearrow^{b}}h,\qquad\quad v\mathrel{\nearrow^{a}}e\mathrel{\searrow_{a}}w\mathrel{\nearrow^{b}}h\mathrel{\searrow_{b}}y,
vabqah,vabqaby,vbgbxafay.\displaystyle v\mathrel{\nearrow^{ab}}q\mathrel{\searrow_{a}}h,\qquad v\mathrel{\nearrow^{ab}}q\mathrel{\searrow_{ab}}y,\qquad v\mathrel{\nearrow^{b}}g\mathrel{\searrow_{b}}x\mathrel{\nearrow^{a}}f\mathrel{\searrow_{a}}y.

The observable content or event ipomset ev(α)\textup{{ev}}(\alpha) of a path α\alpha is defined recursively as follows:

  • If α=(x)\alpha=(x), then ev(α)=idev(x)\textup{{ev}}(\alpha)=\textup{{id}}_{\textup{{ev}}(x)}.

  • If α=(yAx)\alpha=(y\mathrel{\nearrow^{A}}x), then ev(α)=Aev(x)\textup{{ev}}(\alpha)={}_{A\!}{\uparrow}{\textup{{ev}}(x)}.

  • If α=(xBy)\alpha=(x\mathrel{\searrow_{B}}y), then ev(α)=ev(x)B\textup{{ev}}(\alpha)={\textup{{ev}}(x)}{\downarrow}_{B}.

  • If α=α1αn\alpha=\alpha_{1}*\dotsm*\alpha_{n} is a concatenation, then ev(α)=ev(α1)ev(αn)\textup{{ev}}(\alpha)=\textup{{ev}}(\alpha_{1})*\dotsm*\textup{{ev}}(\alpha_{n}).

[15, Lemma 8] shows that αβ\alpha\simeq\beta implies ev(α)=ev(β)\textup{{ev}}(\alpha)=\textup{{ev}}(\beta). Further, if α=α1αn\alpha=\alpha_{1}*\dotsm*\alpha_{n} is a sparse path, then ev(α)=ev(α1)ev(αn)\textup{{ev}}(\alpha)=\textup{{ev}}(\alpha_{1})*\dotsm*\textup{{ev}}(\alpha_{n}) is a sparse step decomposition.

aaccd\vphantom{y}db\vphantom{y}b\bot\topx\vphantom{by}xy\vphantom{b}yz\vphantom{by}z
Figure 5: HDA YY consisting of three squares glued along common faces.
Example 4.5

Event ipomsets of paths in one-dimensional HDAs are words, possibly with interfaces. Sparse step decompositions of words are obtained by splitting symbols into starts and terminations, for example, ab=abb\vbox{\hbox{\tiny$\bullet$}}ab=\vbox{\hbox{\tiny$\bullet$}}a*{b\vbox{\hbox{\tiny$\bullet$}}}*{\vbox{\hbox{\tiny$\bullet$}}b}.

Example 4.6

The event ipomsets of the five sparse accepting paths in the HDA XX of Figure 4 are abab\vbox{\hbox{\tiny$\bullet$}}, abab, [ab]\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right], [ab]\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right], and baba. Figure 5 shows another HDA, which admits an accepting path

(δa0xaxaδa1xcybδb1ydzcδc1z).(\delta_{a}^{0}x\mathrel{\nearrow^{a}}x\mathrel{\searrow_{a}}\delta_{a}^{1}x\mathrel{\nearrow^{c}}y\mathrel{\searrow_{b}}\delta_{b}^{1}y\mathrel{\nearrow^{d}}z\mathrel{\searrow_{c}}\delta_{c}^{1}z).

Its event ipomset is precisely the ipomset of Figure 3, with the indicated sparse step decomposition arising from the sparse presentation above.

4.3 Languages of HDAs

The language of an HDA XX is

𝖫𝖺𝗇𝗀(X)={ev(α)α accepting path in X}.\mathsf{Lang}(X)=\{\textup{{ev}}(\alpha)\mid\alpha\text{ accepting path in }X\}.

[15, Proposition 10] shows that languages of HDAs are sets of ipomsets which are closed under subsumption, i.e., languages in the sense of Definition 2.4.

A language is regular if it is the language of a finite HDA.

Example 4.7

The languages of our example HDAs are

𝖫𝖺𝗇𝗀(X)={[ab],[ab]}={[ab],ab,[ab],ab,ba}\mathsf{Lang}(X)=\big{\{}\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]\big{\}}\mathord{\downarrow}=\big{\{}\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],ab\vbox{\hbox{\tiny$\bullet$}},\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],ab,ba\big{\}}

and

𝖫𝖺𝗇𝗀(Y)={[​ ac b d ​​]}.\mathsf{Lang}(Y)=\left\{\left[\vbox{\hbox{\! \leavevmode\hbox to50.18pt{\vbox to26.67pt{\pgfpicture\makeatletter\hbox{\qquad\lower-21.3957pt\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.45015pt}{-1.93748pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.45053pt}{-1.93748pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{32.30293pt}{-16.96687pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-18.0627pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-7.53075pt}{-16.96687pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.05643pt}{-18.0627pt}\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{\small{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.98315pt}{0.0pt}\pgfsys@lineto{21.91754pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{21.91754pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.51494pt}{-14.9377pt}\pgfsys@lineto{21.52344pt}{-14.9377pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{21.52344pt}{-14.9377pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.98315pt}{-3.14047pt}\pgfsys@lineto{21.63806pt}{-11.36043pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.88538}{-0.46487}{0.46487}{0.88538}{21.63806pt}{-11.36043pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} \!\!}}\right]\right\}\mathord{\downarrow}.

We say that a cell xXx\in X in an HDA XX is

  • accessible if 𝖯𝖺𝗍𝗁(X)x\mathsf{Path}(X)_{\bot}^{x}\neq\emptyset, i.e., xx can be reached by a path from a start cell;

  • coaccessible if 𝖯𝖺𝗍𝗁(X)x\mathsf{Path}(X)_{x}^{\top}\neq\emptyset, i.e., there is a path from xx to an accept cell;

  • essential if it is both accessible and coaccessible.

A path is essential if its source and target cells are essential. This implies that all its cells are essential. Segments of accepting paths are always essential.

The set of essential cells of XX is denoted by 𝖾𝗌𝗌(X)\mathsf{ess}(X); this is not necessarily a sub-HDA of XX given that faces of essential cells may be non-essential. For example, all bottom cells of the HDA YY in Figure 5 are inaccessible and hence non-essential.

Lemma 4.8

Let XX be an HDA. There exists a smallest sub-HDA X𝖾𝗌𝗌XX^{\mathsf{ess}}\subseteq X that contains all essential cells, and 𝖫𝖺𝗇𝗀(X𝖾𝗌𝗌)=𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(X^{\mathsf{ess}})=\mathsf{Lang}(X). If 𝖾𝗌𝗌(X)\mathsf{ess}(X) is finite, then X𝖾𝗌𝗌X^{\mathsf{ess}} is also finite.

Proof 4.9

The set of all faces of essential cells

X𝖾𝗌𝗌={δA0δB1(x)x𝖾𝗌𝗌(X),A,Bev(x),AB=}X^{\mathsf{ess}}=\{\delta^{0}_{A}\delta^{1}_{B}(x)\mid x\in\mathsf{ess}(X),\;A,B\subseteq\textup{{ev}}(x),\;A\cap B=\emptyset\}

is a sub-HDA of XX. Clearly every sub-HDA of XX that contains 𝖾𝗌𝗌(X)\mathsf{ess}(X) must also contain X𝖾𝗌𝗌X^{\mathsf{ess}}. Since all accepting paths are essential, 𝖫𝖺𝗇𝗀(X𝖾𝗌𝗌)=𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(X^{\mathsf{ess}})=\mathsf{Lang}(X). If |𝖾𝗌𝗌(X)|=n|\mathsf{ess}(X)|=n and |ev(x)|d|\textup{{ev}}(x)|\leq d for all x𝖾𝗌𝗌(X)x\in\mathsf{ess}(X), then |X𝖾𝗌𝗌|n3d|X^{\mathsf{ess}}|\leq n\cdot 3^{d}, since a cell of dimension d\leq d has at most 3d3^{d} faces. ∎

4.4 Track objects

Track objects, introduced in [14], provide a mapping from ipomsets to HDAs and are a powerful tool for reasoning about languages. Below we adapt the definition from [14, Section 5.3].

Definition 4.10

The track object of an ipomset PP is the HDA P\square^{P} defined as follows:

  • P\square^{P} is the set of all functions x:P{0,,1}x:P\to\{0,*,1\} such that

    p<q(x(p),x(q)){(0,0),(,0),(1,0),(1,),(1,1)}.p<q\implies(x(p),x(q))\in\{(0,0),(*,0),(1,0),(1,*),(1,1)\}.
  • For xPx\in\square^{P}, ev(x)=x1()\textup{{ev}}(x)=x^{-1}(*) (the condition above ensures that x1()x^{-1}(*) is discrete);

  • For xPx\in\square^{P}, ν{0,1}\nu\in\{0,1\} and Aev(x)A\subseteq\textup{{ev}}(x),

    δAν(x)(p)={νfor pA,x(p)for pA;\delta_{A}^{\nu}(x)(p)=\begin{cases}\nu&\text{for }p\in A,\\ x(p)&\text{for }p\not\in A;\end{cases}
  • P={cP}\bot_{\square^{P}}=\{c_{\bot}^{P}\} and P={cP}\top_{\square^{P}}=\{c^{\top}_{P}\}, where

    cP(p)={if pSP,0if pSP,cP(p)={if pTP,1if pTP;c_{\bot}^{P}(p)=\begin{cases}*&\text{if }p\in S_{P},\\ 0&\text{if }p\not\in S_{P},\end{cases}\qquad c^{\top}_{P}(p)=\begin{cases}*&\text{if }p\in T_{P},\\ 1&\text{if }p\not\in T_{P};\end{cases}

We list some properties of track objects needed later.

Lemma 4.11

Let XX be an HDA, x,yXx,y\in X and PiiPomsP\in\text{{{iiPoms}}}. The following conditions are equivalent:

  1. 1.

    There exists a path α𝖯𝖺𝗍𝗁(X)xy\alpha\in\mathsf{Path}(X)_{x}^{y} such that ev(α)=P\textup{{ev}}(\alpha)=P.

  2. 2.

    There is an HDA-map f:PXxyf:\square^{P}\to X_{x}^{y} (i.e., f(cP)=xf(c_{\bot}^{P})=x and f(cP)=yf(c^{\top}_{P})=y).

Proof 4.12

This is an immediate consequence of [14, Proposition 89]. ∎

Lemma 4.13

If P,QiiPomsP,Q\in\text{{{iiPoms}}} are such that PQP\sqsubseteq Q, then there exists an HDA-map PQ\square^{P}\to\square^{Q}.

Proof 4.14

This is [14, Lemma 63]. ∎

Lemma 4.15

Let XX be an HDA, x,yXx,y\in X, β𝖯𝖺𝗍𝗁(X)xy\beta\in\mathsf{Path}(X)_{x}^{y} and PQ=ev(β)P\sqsubseteq Q=\textup{{ev}}(\beta). Then there exists α𝖯𝖺𝗍𝗁(X)xy\alpha\in\mathsf{Path}(X)_{x}^{y} such that ev(α)=P\textup{{ev}}(\alpha)=P.

Proof 4.16

This follows immediately from Lemmas 4.11 and 4.13.

Lemma 4.17

Let XX be an HDA, x,yXx,y\in X and γ𝖯𝖺𝗍𝗁(X)xy\gamma\in\mathsf{Path}(X)_{x}^{y}. Assume that ev(γ)=PQ\textup{{ev}}(\gamma)=P*Q for ipomsets PP and QQ. Then there exist paths α𝖯𝖺𝗍𝗁(X)x\alpha\in\mathsf{Path}(X)_{x} and β𝖯𝖺𝗍𝗁(X)y\beta\in\mathsf{Path}(X)^{y} such that ev(α)=P\textup{{ev}}(\alpha)=P, ev(β)=Q\textup{{ev}}(\beta)=Q and 𝗍𝗀𝗍(α)=𝗌𝗋𝖼(β)\mathsf{tgt}(\alpha)=\mathsf{src}(\beta).

Proof 4.18

By Lemma 4.11, there is an HDA-map f:PQXxyf:\square^{PQ}\to X_{x}^{y}. By [14, Lemma 65], there exist precubical maps jP:PPQj_{P}:\square^{P}\to\square^{PQ}, jQ:QPQj_{Q}:\square^{Q}\to\square^{PQ} such that jP(cP)=cPQj_{P}(c_{\bot}^{P})=c_{\bot}^{PQ}, jP(cP)=jQ(cQ)j_{P}(c^{\top}_{P})=j_{Q}(c_{\bot}^{Q}) and jQ(cQ)=cPQj_{Q}(c^{\top}_{Q})=c^{\top}_{PQ}. Let z=f(jP(cP))z=f(j_{P}(c_{\bot}^{P})), then fjP:PXxzf\circ j_{P}:\square^{P}\to X_{x}^{z} and fjQ:QXzyf\circ j_{Q}:\square^{Q}\to X_{z}^{y} are HDA-maps, and by applying Lemma 4.11 again to jPj_{P} and jQj_{Q} we obtain α\alpha and β\beta. ∎

5 Myhill-Nerode theorem

The prefix quotient of a language LL\in\mathscr{L} by an ipomset PP is the language

P\L={QiiPomsPQL}.P\mathop{\backslash^{\!}}L=\{Q\in\text{{{iiPoms}}}\mid PQ\in L\}.

Similarly, the suffix quotient of LL by PP is L/P={QiiPomsQPL}L/P=\{Q\in\text{{{iiPoms}}}\mid QP\in L\}. Denote

𝗌𝗎𝖿𝖿(L)={P\LPiiPoms},𝗉𝗋𝖾𝖿(L)={L/PPiiPoms}.\mathsf{suff}(L)=\{P\mathop{\backslash^{\!}}L\mid P\in\text{{{iiPoms}}}\},\qquad\mathsf{pref}(L)=\{L/P\mid P\in\text{{{iiPoms}}}\}.

We record the following property of quotient languages.

Lemma 5.1

If LL is a language and PQP\sqsubseteq Q, then Q\LP\LQ\mathop{\backslash^{\!}}L\subseteq P\mathop{\backslash^{\!}}L.

Proof 5.2

If PQP\sqsubseteq Q, then PRQRPR\sqsubseteq QR. Thus,

RQ\LQRLPRLRP\L.R\in Q\mathop{\backslash^{\!}}L\iff QR\in L\implies PR\in L\iff R\in P\mathop{\backslash^{\!}}L.\vskip-19.91692pt

The main goal of this section is to show the following.

Theorem 5.3

For a language LL\in\mathscr{L} the following conditions are equivalent.

  • (a)

    LL is regular.

  • (b)

    The set 𝗌𝗎𝖿𝖿(L)\mathsf{suff}(L)\subseteq\mathscr{L} is finite.

  • (c)

    The set 𝗉𝗋𝖾𝖿(L)\mathsf{pref}(L)\subseteq\mathscr{L} is finite.

We prove only the equivalence between (a) and (b); equivalence between (a) and (c) is symmetric. First we prove the implication (a)\implies(b). Let XX be an HDA with 𝖫𝖺𝗇𝗀(X)=L\mathsf{Lang}(X)=L. For xXx\in X define languages 𝖯𝗋𝖾(x)=𝖫𝖺𝗇𝗀(Xx)\mathsf{Pre}(x)=\mathsf{Lang}(X_{\bot}^{x}) and 𝖯𝗈𝗌𝗍(x)=𝖫𝖺𝗇𝗀(Xx)\mathsf{Post}(x)=\mathsf{Lang}(X_{x}^{\top}).

Lemma 5.4

For every PiiPomsP\in\text{{{iiPoms}}}, P\L={𝖯𝗈𝗌𝗍(x)xX,P𝖯𝗋𝖾(x)}P\mathop{\backslash^{\!}}L=\bigcup\{\mathsf{Post}(x)\mid x\in X,\;P\in\mathsf{Pre}(x)\}.

Proof 5.5

We have

QP\LPQLLem. 4.11\displaystyle Q\in P\mathop{\backslash^{\!}}L\iff PQ\in L\;\;\overset{\text{Lem.\@ \ref{l:PathTrack}}}{\iff}\;\; f:PQX=X\displaystyle\exists\;f:\square^{PQ}\to X=X_{\bot}^{\top}
Lem. 4.17\displaystyle\;\;\overset{\text{Lem.\@ \ref{l:PathDivision}}}{\iff}\;\; xX,g:PXx,h:QXx\displaystyle\exists\;x\in X,g:\square^{P}\to X_{\bot}^{x},\;h:\square^{Q}\to X_{x}^{\top}
Lem. 4.11\displaystyle\;\;\overset{\text{Lem.\@ \ref{l:PathTrack}}}{\iff}\;\; xX:P𝖫𝖺𝗇𝗀(Xx),Q𝖫𝖺𝗇𝗀(Xx)\displaystyle\exists\;x\in X:P\in\mathsf{Lang}(X_{\bot}^{x}),\;Q\in\mathsf{Lang}(X_{x}^{\top})
\displaystyle\;\;\overset{\phantom{\text{Lem.\@ \ref{l:PathTrack}}}}{\iff}\;\; xX:P𝖯𝗋𝖾(x),Q𝖯𝗈𝗌𝗍(x).\displaystyle\exists\;x\in X:P\in\mathsf{Pre}(x),\;Q\in\mathsf{Post}(x).

The last condition says that QQ belongs to the right-hand side of the equation. ∎

  • \PRstyle
  • Proof of Theorem 5.3, (a)\implies(b):
    The family of languages {P\LPiiPoms}\{P\mathop{\backslash^{\!}}L\mid P\in\text{{{iiPoms}}}\} is a subfamily of {xY𝖯𝗈𝗌𝗍(x)|YX}\{\bigcup_{x\in Y}\mathsf{Post}(x)\mathrel{\big{|}}Y\subseteq X\} which is finite. ∎\QED

5.1 HDA construction

Now we show that (b) implies (a). Fix a language LL\in\mathscr{L}, with 𝗌𝗎𝖿𝖿(L)\mathsf{suff}(L) finite or infinite. We will construct an HDA 𝖬𝖭(L)\mathsf{MN}(L) that recognises LL and show that if 𝗌𝗎𝖿𝖿(L)\mathsf{suff}(L) is finite, then the essential part 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is finite. The cells of 𝖬𝖭(L)\mathsf{MN}(L) are equivalence classes of ipomsets under a relation L\approx_{L} induced by LL which we will introduce below. The relation L\approx_{L} is defined using prefix quotients, but needs to be stronger than prefix quotient equivalence. This is because events may be concurrent and because ipomsets have interfaces. We give examples just after the construction.

For an ipomset SPT{\vphantom{P}}_{S}P_{T} define its (target) signature to be the starter 𝖿𝗂𝗇(P)=TST\mathsf{fin}(P)={}_{T-S\!}{\uparrow}{T}. Thus 𝖿𝗂𝗇(P)\mathsf{fin}(P) collects all target events of PP, and its source interface contains those events that are also in the source interface of PP. We also write 𝗋𝖿𝗂𝗇(P)=TS𝖿𝗂𝗇(P)\mathsf{rfin}(P)=T-S\subseteq\mathsf{fin}(P): the set of all target events of PP that are not source events. An important property is that removing elements of 𝗋𝖿𝗂𝗇(P)\mathsf{rfin}(P) does not change the source interface of PP. For example,

𝖿𝗂𝗇([aac])=[ac],𝖿𝗂𝗇([acb])=[cb],𝖿𝗂𝗇([acb])=[cb];\mathsf{fin}\left(\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\right)=\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\quad\mathsf{fin}\left(\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&ac&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\right)=\left[\begin{smallmatrix}&c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\quad\mathsf{fin}\left(\left[\begin{smallmatrix}ac&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\right)=\left[\begin{smallmatrix}c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right];

𝗋𝖿𝗂𝗇\mathsf{rfin} is {c}\{c\} in the first two examples and equal to [cb]\left[\begin{smallmatrix}c\\ b\end{smallmatrix}\right] in the last.

We define two equivalence relations on iiPoms induced by LL:

  • Ipomsets PP and QQ are weakly equivalent (PLQP\sim_{L}Q) if 𝖿𝗂𝗇(P)𝖿𝗂𝗇(Q)\mathsf{fin}(P)\cong\mathsf{fin}(Q) and P\L=Q\LP\mathop{\backslash^{\!}}L=Q\mathop{\backslash^{\!}}L. Obviously, PLQP\sim_{L}Q implies TPTQT_{P}\cong T_{Q} and 𝗋𝖿𝗂𝗇(P)𝗋𝖿𝗂𝗇(Q)\mathsf{rfin}(P)\cong\mathsf{rfin}(Q).

  • Ipomsets PP and QQ are strongly equivalent (PLQP\approx_{L}Q) if PLQP\sim_{L}Q and for all A𝗋𝖿𝗂𝗇(P)𝗋𝖿𝗂𝗇(Q)A\subseteq\mathsf{rfin}(P)\cong\mathsf{rfin}(Q) we have (PA)\L=(QA)\L(P-A)\mathop{\backslash^{\!}}L=(Q-A)\mathop{\backslash^{\!}}L.

Evidently PLQP\approx_{L}Q implies PLQP\sim_{L}Q, but the inverse does not always hold. We explain in Example 5.9 below why L\approx_{L}, and not L\sim_{L}, is the proper relation to use for constructing 𝖬𝖭(L)\mathsf{MN}(L).

Lemma 5.6

If PLQP\approx_{L}Q, then PALQAP-A\approx_{L}Q-A for all A𝗋𝖿𝗂𝗇(P)𝗋𝖿𝗂𝗇(Q)A\subseteq\mathsf{rfin}(P)\cong\mathsf{rfin}(Q).

Proof 5.7

For every AA we have (PA)\L=(QA)\L(P-A)\mathop{\backslash^{\!}}L=(Q-A)\mathop{\backslash^{\!}}L, and

𝖿𝗂𝗇(PA)=𝖿𝗂𝗇(P)A𝖿𝗂𝗇(Q)A=𝖿𝗂𝗇(QA),\mathsf{fin}(P-A)=\mathsf{fin}(P)-A\cong\mathsf{fin}(Q)-A=\mathsf{fin}(Q-A),

Thus, PALQAP-A\sim_{L}Q-A. Further, for every B𝗋𝖿𝗂𝗇(PA)𝗋𝖿𝗂𝗇(QA)B\subseteq\mathsf{rfin}(P-A)\cong\mathsf{rfin}(Q-A),

((PA)B)\L=(P(AB))\L=(Q(AB))\L=((QA)B)\L,((P-A)-B)\mathop{\backslash^{\!}}L=(P-(A\cup B))\mathop{\backslash^{\!}}L=(Q-(A\cup B))\mathop{\backslash^{\!}}L=((Q-A)-B)\mathop{\backslash^{\!}}L,

which shows that PALQAP-A\approx_{L}Q-A. ∎

Now define an HDA 𝖬𝖭(L)\mathsf{MN}(L) as follows. For UU\in\square, write iiPomsU={PiiPomsTPU}\text{{{iiPoms}}}_{U}=\{P\in\text{{{iiPoms}}}\mid T_{P}\cong U\} and let

𝖬𝖭(L)[U]=iiPomsU/L{wU},\mathsf{MN}(L)[U]=\text{{{iiPoms}}}_{U}/{\approx_{L}}\cup\{w_{U}\},

where the wUw_{U} are new subsidiary cells which are introduced solely to define some lower faces. (They will not affect the language of 𝖬𝖭(L)\mathsf{MN}(L)).

The L\approx_{L}-equivalence class of PP will be denoted by P\langle{P}\rangle (but often just PP in examples). Face maps are defined as follows, for AUA\subseteq U\in\square and PiiPomsUP\in\text{{{iiPoms}}}_{U}:

δA0(P)={PAif A𝗋𝖿𝗂𝗇(P),wUAotherwise,δA1(P)=PUA,\delta^{0}_{A}(\langle{P}\rangle)=\begin{cases}\langle{P-A}\rangle&\text{if $A\subseteq\mathsf{rfin}(P)$},\\ w_{U-A}&\text{otherwise},\end{cases}\qquad\delta^{1}_{A}(\langle{P}\rangle)=\langle{P*{U}{\downarrow}_{A}}\rangle, (2)
δA0(wU)=δA1(wU)=wUA.\delta^{0}_{A}(w_{U})=\delta^{1}_{A}(w_{U})=w_{U-A}.

In other words, if AA has no source events of PP, then δA0\delta^{0}_{A} removes AA from PP (the source interface of PP is unchanged). If AA contains any source event, then δA0(P)\delta^{0}_{A}(P) is a subsidiary cell.

Finally, start and accept cells are given by

𝖬𝖭(L)={idU}U,𝖬𝖭(L)={PPL}.\bot_{\mathsf{MN}(L)}=\{\langle{\textup{{id}}_{U}}\rangle\}_{U\in\square},\qquad\top_{\mathsf{MN}(L)}=\{\langle{P}\rangle\mid P\in L\}.

The cells P\langle{P}\rangle will be called regular. They are L\approx_{L}-equivalence classes of ipomsets, lower face maps unstart events, and upper face maps terminate events. All faces of subsidiary cells wUw_{U} are subsidiary, and upper faces of regular cells are regular. Below we present several examples, in which we show only the essential part 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} of 𝖬𝖭(L)\mathsf{MN}(L).

ε\varepsilon\botaabb[ab]\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]\topabab\topaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}[ab]\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]​​baba\vbox{\hbox{\tiny$\bullet$}}abab\vbox{\hbox{\tiny$\bullet$}}abcabc\vbox{\hbox{\tiny$\bullet$}}[ab]\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]𝖬𝖭(L)[]\mathsf{MN}(L)[\emptyset]PP\LεLa{b,bc}b{a}ab{ε,c}[ab]{ε}\normalsize\begin{array}[t]{|l|l|}\hline\cr P&P\mathop{\backslash^{\!}}L\\ \hline\cr\varepsilon&L\\ a&\{b,bc\}\\ b&\{a\}\\ ab&\{\varepsilon,c\}\\ \left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]&\{\varepsilon\}\\ \hline\cr\end{array}𝖬𝖭(L)[a]\mathsf{MN}(L)[a]PP\La{[ab],ab,abc}ba{a}\normalsize\begin{array}[t]{|l|l|}\hline\cr P&P\mathop{\backslash^{\!}}L\\ \hline\cr a\vbox{\hbox{\tiny$\bullet$}}&\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right],\vbox{\hbox{\tiny$\bullet$}}ab,\vbox{\hbox{\tiny$\bullet$}}abc\}\\ ba\vbox{\hbox{\tiny$\bullet$}}&\{\vbox{\hbox{\tiny$\bullet$}}a\}\\ \hline\cr\end{array}𝖬𝖭(L)[b]\mathsf{MN}(L)[b]PP\Lb{[ab],ba}ab{b,bc}[ab]{b}\normalsize\begin{array}[t]{|l|l|}\hline\cr P&P\mathop{\backslash^{\!}}L\\ \hline\cr b\vbox{\hbox{\tiny$\bullet$}}&\{\left[\begin{smallmatrix}&a\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&b\end{smallmatrix}\right],\vbox{\hbox{\tiny$\bullet$}}ba\}\\ ab\vbox{\hbox{\tiny$\bullet$}}&\{\vbox{\hbox{\tiny$\bullet$}}b,\vbox{\hbox{\tiny$\bullet$}}bc\}\\ \left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]&\{\vbox{\hbox{\tiny$\bullet$}}b\}\\ \hline\cr\end{array}𝖬𝖭(L)[c]\mathsf{MN}(L)[c]PP\Labc{c}\normalsize\begin{array}[t]{|l|l|}\hline\cr P&P\mathop{\backslash^{\!}}L\\ \hline\cr abc\vbox{\hbox{\tiny$\bullet$}}&\{\vbox{\hbox{\tiny$\bullet$}}c\}\\ \hline\cr\end{array}𝖬𝖭(L)[[ab]]\mathsf{MN}(L)[\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]]PP\L[ab]{[ab]}\normalsize\begin{array}[t]{|l|l|}\hline\cr P&P\mathop{\backslash^{\!}}L\\ \hline\cr\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]&\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&b\end{smallmatrix}\right]\}\\ \hline\cr\end{array}
Figure 6: HDA 𝖬𝖭(L)\mathsf{MN}(L) of Example 5.8, showing names of cells instead of labels (labels are target interfaces of names). Tables show essential cells together with prefix quotients.
Example 5.8

Let L={[ab],abc}={[ab],ab,ba,abc}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],abc\}\mathord{\downarrow}=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],ab,ba,abc\}. Figure 6 shows the HDA 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} together with a list of essential cells of M(L)M(L) and their prefix quotients in LL. Note that the state a\langle{a}\rangle has two outgoing bb-labelled edges: ab\langle{ab\vbox{\hbox{\tiny$\bullet$}}}\rangle and [ab]\langle{\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle. The generating ipomsets have different prefix quotients because of {[ab],abc}L\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],abc\}\subseteq L, but the same lower face a\langle{a}\rangle. (Note that ba=[ab]\langle{ba\vbox{\hbox{\tiny$\bullet$}}}\rangle=\langle{\left[\begin{smallmatrix}a\vbox{\hbox{\tiny$\bullet$}}\\ b\phantom{\vbox{\hbox{\tiny$\bullet$}}}\end{smallmatrix}\right]}\rangle.)

Intuitively, 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is thus non-deterministic; this is interesting because the standard Myhill-Nerode theorem for finite automata constructs deterministic automata. We will give a precise definition of determinism for HDAs in the next section and show in Example 6.6 that no deterministic HDA XX exists with 𝖫𝖺𝗇𝗀(X)=L\mathsf{Lang}(X)=L.

Example 5.9

Here we explain why we need to use L\approx_{L}-equivalence classes and not L\sim_{L}-equivalence classes. The example is one-dimensional, which means that it applies to standard finite automata. The reason one does not see the problem in the standard Myhill-Nerode construction for finite automata is that this operates only on states and not on transitions.

Let L={aa,ab,ba}L=\{aa,ab,ba\}, then 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is as below.

ε\varepsilon\botaabbaaaa\topaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}aaaa\vbox{\hbox{\tiny$\bullet$}}abab\vbox{\hbox{\tiny$\bullet$}}baba\vbox{\hbox{\tiny$\bullet$}}

We have aa\L=ba\L={a}aa\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!}}L=ba\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!}}L=\{\vbox{\hbox{\tiny$\bullet$}}a\}, thus aaLbaaa\vbox{\hbox{\tiny$\bullet$}}\sim_{L}ba\vbox{\hbox{\tiny$\bullet$}}. Yet aaaa\vbox{\hbox{\tiny$\bullet$}} and baba\vbox{\hbox{\tiny$\bullet$}} are not strongly equivalent, because a\L={a,b}{a}=b\La\mathop{\backslash^{\!}}L=\{a,b\}\neq\{a\}=b\mathop{\backslash^{\!}}L. This provides an example of weakly equivalent ipomsets whose lower faces are not weakly equivalent and shows why we cannot use L\sim_{L} to construct 𝖬𝖭(L)\mathsf{MN}(L).

Remark 5.10

As the previous example indicates, if LL is one-dimensional and all words in LL have empty interfaces, then 𝖾𝗌𝗌(𝖬𝖭(L))\mathsf{ess}(\mathsf{MN}(L)) is the standard Myhill-Nerode finite automaton for LL.

Example 5.11

The language L={[aaa]}L=\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\} is recognised by the HDA 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} below:

wεw_{\varepsilon}wεw_{\varepsilon}wεw_{\varepsilon}yywεw_{\varepsilon}yywaw_{a}waw_{a}waw_{a}yay_{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}}yay_{a\vbox{\hbox{\tiny$\bullet$}}}yay_{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}}[aa]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[aaa]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\bot\top

Cells with the same names are identified. Here we see subsidiary cells wεw_{\varepsilon} and waw_{a}, and regular cells that are not coaccessible (denoted by yy indexed with their signature). The middle vertical edge is [aa]\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle, ya=[aa]=[aaa]y_{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}}=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right]}\rangle=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle, ya=[aaa]y_{a\vbox{\hbox{\tiny$\bullet$}}}=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right]}\rangle, and y=[aa]=[aaa]y=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right]}\rangle=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right]}\rangle.

5.2 𝖬𝖭(L)\mathsf{MN}(L) is well-defined

We need to show that 𝖬𝖭(L)\mathsf{MN}(L) is well-defined, i.e., that the formulas (2) do not depend on the choice of a representative in P\langle{P}\rangle and that the precubical identities are satisfied.

Lemma 5.12

Let PP, QQ and RR be ipomsets with TP=TQ=SRT_{P}=T_{Q}=S_{R}. Then

P\LQ\L(PR)\L(QR)\L.P\mathop{\backslash^{\!}}L\subseteq Q\mathop{\backslash^{\!}}L\implies(PR)\mathop{\backslash^{\!}}L\subseteq(QR)\mathop{\backslash^{\!}}L.

In particular, P\L=Q\LP\mathop{\backslash^{\!}}L=Q\mathop{\backslash^{\!}}L implies (PR)\L=(QR)\L(PR)\mathop{\backslash^{\!}}L=(QR)\mathop{\backslash^{\!}}L.

Proof 5.13

For NiiPomsN\in\text{{{iiPoms}}} we have

N(PR)\LPRNLRNP\LRNQ\LQRNLN(QR)\L.N\in(PR)\mathop{\backslash^{\!}}L\iff PRN\in L\iff RN\in P\mathop{\backslash^{\!}}L\\ \implies RN\in Q\mathop{\backslash^{\!}}L\iff QRN\in L\iff N\in(QR)\mathop{\backslash^{\!}}L.\quad\qed

The next lemma shows an operation to “add order” to an ipomset PP. This is done by first removing some points ATPA\subseteq T_{P} and then adding them back in, forcing arrows from all other points in PP. The result is obviously subsumed by PP.

Lemma 5.14

For PiiPomsP\in\text{{{iiPoms}}} and A𝗋𝖿𝗂𝗇(P)A\subseteq\mathsf{rfin}(P), (PA)ATPP(P-A)*{}_{A\!}{\uparrow}{T_{P}}\sqsubseteq P. ∎

The next two lemmas, whose proofs are again obvious, state that events may be unstarted or terminated in any order.

Lemma 5.15

Let UU be a conclist and A,BUA,B\subseteq U disjoint subsets. Then

UB(UB)A=UAB=UA(UA)B.{U}{\downarrow}_{B}*{(U-B)}{\downarrow}_{A}={U}{\downarrow}_{A\cup B}={U}{\downarrow}_{A}*{(U-A)}{\downarrow}_{B}.\quad\qed
Lemma 5.16

Let PiiPomsP\in\text{{{iiPoms}}} and A,BTPA,B\subseteq T_{P} disjoint subsets. Then

(PTPB)A=(PA)(TPA)B.(P*{T_{P}}{\downarrow}_{B})-A=(P-A)*{(T_{P}-A)}{\downarrow}_{B}.\quad\qed
Lemma 5.17

Assume that PLQP\approx_{L}Q for P,QiiPomsUP,Q\in\text{{{iiPoms}}}_{U}. Then PUBLQUBP*{U}{\downarrow}_{B}\approx_{L}Q*{U}{\downarrow}_{B} for every BUB\subseteq U.

Proof 5.18

Obviously 𝖿𝗂𝗇(PUB)=𝖿𝗂𝗇(P)B𝖿𝗂𝗇(Q)B=𝖿𝗂𝗇(QUB)\mathsf{fin}(P*{U}{\downarrow}_{B})=\mathsf{fin}(P)-B\cong\mathsf{fin}(Q)-B=\mathsf{fin}(Q*{U}{\downarrow}_{B}). For every A𝗋𝖿𝗂𝗇(P)B𝗋𝖿𝗂𝗇(Q)BA\subseteq\mathsf{rfin}(P)-B\simeq\mathsf{rfin}(Q)-B we have

((PA)(UA)B)\L=((QA)(UA)B)\L((P-A)*{(U-A)}{\downarrow}_{B})\mathop{\backslash^{\!}}L=((Q-A)*{(U-A)}{\downarrow}_{B})\mathop{\backslash^{\!}}L

by assumption and Lemma 5.12. But (PUB)A=(PA)(UA)B(P*{U}{\downarrow}_{B})-A=(P-A)*{(U-A)}{\downarrow}_{B} and (QUB)A=(QA)(UA)B(Q*{U}{\downarrow}_{B})-A=(Q-A)*{(U-A)}{\downarrow}_{B} by Lemma 5.16. ∎

Proposition 5.19

𝖬𝖭(L)\mathsf{MN}(L) is a well-defined HDA.

Proof 5.20

The face maps are well-defined: for δA0\delta^{0}_{A} this follows from Lemma 5.6, for δB1\delta^{1}_{B} from Lemma 5.17. The precubical identities δAνδBμ=δBμδAν\delta^{\nu}_{A}\delta^{\mu}_{B}=\delta^{\mu}_{B}\delta^{\nu}_{A} are clear for ν=μ=0\nu=\mu=0, follow from Lemma 5.15 for ν=μ=1\nu=\mu=1, and from Lemma 5.16 for {ν,μ}={0,1}\{\nu,\mu\}=\{0,1\}.​ ∎

5.3 Paths and essential cells of 𝖬𝖭(L)\mathsf{MN}(L)

The next lemma provides paths in 𝖬𝖭(L)\mathsf{MN}(L).

Lemma 5.21

For every N,PiiPomsN,P\in\text{{{iiPoms}}} such that TNSPT_{N}\cong S_{P} there exists a path α𝖯𝖺𝗍𝗁(𝖬𝖭(L))NNP\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{N}\rangle}^{\langle{NP}\rangle} such that ev(α)=P\textup{{ev}}(\alpha)=P.

Proof 5.22

Choose a decomposition P=Q1QnP=Q_{1}*\dotsm*Q_{n} into starters and terminators. Denote Uk=TQk=SQk+1U_{k}=T_{Q_{k}}=S_{Q_{k+1}} and define

xk=NQ1Qk,φk={Aif Qk=AUk,Bif Qk=Uk1Bx_{k}=\langle{N*Q_{1}*\dotsm*Q_{k}}\rangle,\qquad\varphi_{k}=\begin{cases}\mathrel{\nearrow^{A}}&\text{if $Q_{k}={}_{A\!}{\uparrow}{U_{k}}$},\\ \mathrel{\searrow_{B}}&\text{if $Q_{k}={U_{k-1}}{\downarrow}_{B}$}\end{cases}

for k=1,,nk=1,\dotsc,n. If φk=A\varphi_{k}=\mathrel{\nearrow^{A}} and Qk=AUkQ_{k}={}_{A\!}{\uparrow}{U_{k}}, then

δA0(xk)=NQ1Qk1AUkA=NQ1Qk1idUkA=xk1.\delta^{0}_{A}(x_{k})=\langle{N*Q_{1}*\dotsm*Q_{k-1}*{}_{A\!}{\uparrow}{U_{k}}-A}\rangle\\ =\langle{N*Q_{1}*\dotsm*Q_{k-1}*\textup{{id}}_{U_{k}-A}}\rangle=x_{k-1}.

If φk=B\varphi_{k}=\mathrel{\searrow_{B}} and Qk=Uk1BQ_{k}={U_{k-1}}{\downarrow}_{B}, then

δB1(xk1)=NQ1Qk1Uk1B=xk.\delta^{1}_{B}(x_{k-1})=\langle{N*Q_{1}*\dotsm*Q_{k-1}*{U_{k-1}}{\downarrow}_{B}}\rangle=x_{k}.

Thus, α=(x0,φ1,x1,,φn,xn)\alpha=(x_{0},\varphi_{1},x_{1},\dotsc,\varphi_{n},x_{n}) is a path with ev(α)=P\textup{{ev}}(\alpha)=P, 𝗌𝗋𝖼(α)=N\mathsf{src}(\alpha)=\langle{N}\rangle and 𝗍𝗀𝗍(α)=NP\mathsf{tgt}(\alpha)=\langle{N*P}\rangle. ∎

Our goal is now to describe essential cells of 𝖬𝖭(L)\mathsf{MN}(L).

Lemma 5.23

All regular cells of 𝖬𝖭(L)\mathsf{MN}(L) are accessible. If P\LP\mathop{\backslash^{\!}}L\neq\emptyset, then P\langle{P}\rangle is coaccessible.

Proof 5.24

Both claims follow from Lemma 5.21. For every PP there exists a path from idSP\langle{\textup{{id}}_{S_{P}}}\rangle to idSPP=P\langle{\textup{{id}}_{S_{P}}*P}\rangle=\langle{P}\rangle. If QP\LQ\in P\mathop{\backslash^{\!}}L, then there exists a path α𝖯𝖺𝗍𝗁(𝖬𝖭(L))PPQ\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{P}\rangle}^{\langle{PQ}\rangle}, and PQLPQ\in L entails that PQ𝖬𝖭(L)\langle{PQ}\rangle\in\top_{\mathsf{MN}(L)}. ∎

Lemma 5.25

Subsidiary cells of 𝖬𝖭(L)\mathsf{MN}(L) are not accessible. If P\L=P\mathop{\backslash^{\!}}L=\emptyset, then the cell P\langle{P}\rangle is not coaccessible.

Proof 5.26

If α𝖯𝖺𝗍𝗁(𝖬𝖭(L))wU\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\bot}^{w_{U}}, then it contains a step β\beta from a regular cell to a subsidiary cell (since all start cells are regular). Yet β\beta can be neither an upstep (since lower faces of subsidiary cells are subsidiary) nor a downstep (since upper faces of regular cells are regular). This contradiction proves the first claim.

To prove the second part we use a similar argument. If P\L=P\mathop{\backslash^{\!}}L=\emptyset, then a path α𝖯𝖺𝗍𝗁(𝖬𝖭(L))P\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{P}\rangle}^{\top} contains only regular cells (as shown above). Given that R\LR\mathop{\backslash^{\!}}L\neq\emptyset for all R𝖬𝖭(L)\langle{R}\rangle\in\top_{\mathsf{MN}(L)}, α\alpha must contain a step β\beta from Q\langle{Q}\rangle to R\langle{R}\rangle such that Q\L=Q\mathop{\backslash^{\!}}L=\emptyset and R\LR\mathop{\backslash^{\!}}L\neq\emptyset. If β\beta is a downstep, i.e., β=(QAQUA)\beta=(\langle{Q}\rangle\mathrel{\searrow_{A}}\langle{Q*{U}{\downarrow}_{A}}\rangle), and NR\L=(QUA)\LN\in R\mathop{\backslash^{\!}}L=(Q*{U}{\downarrow}_{A})\mathop{\backslash^{\!}}L, then UANQ\L{U}{\downarrow}_{A}*N\in Q\mathop{\backslash^{\!}}L\neq\emptyset: a contradiction. If β=(RAAR)\beta=(\langle{R-A}\rangle\mathrel{\nearrow^{A}}\langle{R}\rangle) is an upstep and NR\LN\in R\mathop{\backslash^{\!}}L, then, by Lemma 5.14,

(RA)AUNRNL,(R-A)*{}_{A\!}{\uparrow}{U}*N\sqsubseteq R*N\in L,

implying that Q\L=(RA)\LQ\mathop{\backslash^{\!}}L=(R-A)\mathop{\backslash^{\!}}L\neq\emptyset by Lemma 5.1: another contradiction. ∎

Lemmas 5.23 and 5.25 together immediately imply the following.

Proposition 5.27

𝖾𝗌𝗌(𝖬𝖭(L))={PP\L}.\mathsf{ess}(\mathsf{MN}(L))=\{\langle{P}\rangle\mid P\mathop{\backslash^{\!}}L\neq\emptyset\}.

5.4 𝖬𝖭(L)\mathsf{MN}(L) recognises LL

We are finally ready to show that 𝖫𝖺𝗇𝗀(𝖬𝖭(L))=L\mathsf{Lang}(\mathsf{MN}(L))=L. One inclusion follows directly from Lemma 5.21:

Lemma 5.28

L𝖫𝖺𝗇𝗀(𝖬𝖭(L))L\subseteq\mathsf{Lang}(\mathsf{MN}(L)).

Proof 5.29

For every PiiPomsP\in\text{{{iiPoms}}} there exists a path α𝖯𝖺𝗍𝗁(𝖬𝖭(L))idSPP\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{\textup{{id}}_{S_{P}}}\rangle}^{\langle{P}\rangle} such that ev(α)=P\textup{{ev}}(\alpha)=P. If PLP\in L, then εP\L\varepsilon\in P\mathop{\backslash^{\!}}L, i.e., P\langle{P}\rangle is an accept cell. Thus α\alpha is accepting and P=ev(α)𝖫𝖺𝗇𝗀(𝖬𝖭(L))P=\textup{{ev}}(\alpha)\in\mathsf{Lang}(\mathsf{MN}(L)). ∎

The converse inclusion requires more work. For a regular cell P\langle{P}\rangle of 𝖬𝖭(L)\mathsf{MN}(L) denote P\L=P\L\langle{P}\rangle\mathop{\backslash^{\!}}L=P\mathop{\backslash^{\!}}L (this obviously does not depend on the choice of PP).

Lemma 5.30

If SS\in\square and α𝖯𝖺𝗍𝗁(𝖬𝖭(L))idS\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{\textup{{id}}_{S}}\rangle}, then 𝗍𝗀𝗍(α)\Lev(α)\L\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\alpha)\mathop{\backslash^{\!}}L.

Proof 5.31

By Lemma 5.25, all cells appearing along α\alpha are regular. We proceed by induction on the length of α\alpha. For α=(idS)\alpha=(\langle{\textup{{id}}_{S}}\rangle) the claim is obvious. If α\alpha is non-trivial, we have two cases.

  • α=β(δA0(P)AP)\alpha=\beta*(\delta^{0}_{A}(\langle{P}\rangle)\mathrel{\nearrow^{A}}\langle{P}\rangle), where P𝖬𝖭(L)[U]\langle{P}\rangle\in\mathsf{MN}(L)[U] and A𝗋𝖿𝗂𝗇(P)UTPA\subseteq\mathsf{rfin}(P)\subseteq U\cong T_{P}. By the induction hypothesis,

    (PA)\L=δA0(P)\L=𝗍𝗀𝗍(β)\Lev(β)\L.(P-A)\mathop{\backslash^{\!}}L=\delta^{0}_{A}(\langle{P}\rangle)\mathop{\backslash^{\!}}L=\mathsf{tgt}(\beta)\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\beta)\mathop{\backslash^{\!}}L.

    For QiiPomsQ\in\text{{{iiPoms}}} we have

    QP\LPQL\displaystyle Q\in P\mathop{\backslash^{\!}}L\iff PQ\in L (PA)AUQL\displaystyle\implies(P-A)*{}_{A\!}{\uparrow}{U}*Q\in L (Lemma 5.14)
    AUQ(PA)\L\displaystyle\iff{}_{A\!}{\uparrow}{U}*Q\in(P-A)\mathop{\backslash^{\!}}L
    AUQev(β)\L\displaystyle\implies{}_{A\!}{\uparrow}{U}*Q\in\textup{{ev}}(\beta)\mathop{\backslash^{\!}}L (induction hypothesis)
    ev(β)AUQL\displaystyle\iff\textup{{ev}}(\beta)*{}_{A\!}{\uparrow}{U}*Q\in L
    ev(α)QLQev(α)\L.\displaystyle\iff\textup{{ev}}(\alpha)*Q\in L\iff Q\in\textup{{ev}}(\alpha)\mathop{\backslash^{\!}}L.

    Thus, P\L=P\Lev(α)\L\langle{P}\rangle\mathop{\backslash^{\!}}L=P\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\alpha)\mathop{\backslash^{\!}}L.

  • α=β(PBδB1(P))\alpha=\beta*(\langle{P}\rangle\mathrel{\searrow_{B}}\delta^{1}_{B}(\langle{P}\rangle)), where P𝖬𝖭(L)[U]\langle{P}\rangle\in\mathsf{MN}(L)[U] and BUTPB\subseteq U\cong T_{P}. By inductive assumption, P\L=𝗍𝗀𝗍(β)\Lev(β)\LP\mathop{\backslash^{\!}}L=\mathsf{tgt}(\beta)\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\beta)\mathop{\backslash^{\!}}L. Thus,

    𝗍𝗀𝗍(α)\L=δB1(P)\L=PUB\L(ev(β)UB)\L=ev(α)\L.\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L=\delta^{1}_{B}(\langle{P}\rangle)\mathop{\backslash^{\!}}L=\langle{P*{U}{\downarrow}_{B}}\rangle\mathop{\backslash^{\!}}L\subseteq(\textup{{ev}}(\beta)*{U}{\downarrow}_{B})\mathop{\backslash^{\!}}L=\textup{{ev}}(\alpha)\mathop{\backslash^{\!}}L.

The inclusion above follows from Lemma 5.12. ∎

Proposition 5.32

𝖫𝖺𝗇𝗀(𝖬𝖭(L))=L\mathsf{Lang}(\mathsf{MN}(L))=L.

Proof 5.33

The inclusion L𝖫𝖺𝗇𝗀(𝖬𝖭(L))L\subseteq\mathsf{Lang}(\mathsf{MN}(L)) is shown in Lemma 5.28. For the converse, let SS\in\square and α𝖯𝖺𝗍𝗁(𝖬𝖭(L))idS\alpha\in\mathsf{Path}(\mathsf{MN}(L))_{\langle{\textup{{id}}_{S}}\rangle}, then Lemma 5.30 implies

𝗍𝗀𝗍(α)𝖬𝖭(L)ε𝗍𝗀𝗍(α)\Lεev(α)\Lev(α)L,\mathsf{tgt}(\alpha)\in\top_{\mathsf{MN}(L)}\iff\varepsilon\in\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L\implies\varepsilon\in\textup{{ev}}(\alpha)\mathop{\backslash^{\!}}L\iff\textup{{ev}}(\alpha)\in L,

that is, if α\alpha is accepting, then ev(α)L\textup{{ev}}(\alpha)\in L. ∎

5.5 Finiteness of 𝖬𝖭(L)\mathsf{MN}(L)

The HDA 𝖬𝖭(L)\mathsf{MN}(L) is not finite, since it contains infinitely many subsidiary cells wUw_{U}. Below we show that its essential part 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is finite if LL has finitely many prefix quotients.

Lemma 5.34

If 𝗌𝗎𝖿𝖿(L)\mathsf{suff}(L) is finite, then 𝖾𝗌𝗌(𝖬𝖭(L))\mathsf{ess}(\mathsf{MN}(L)) is finite.

Proof 5.35

For P,Q𝖾𝗌𝗌(L)\langle{P}\rangle,\langle{Q}\rangle\in\mathsf{ess}(L), we have P=Qf(P)=f(Q)\langle{P}\rangle=\langle{Q}\rangle\iff f(\langle{P}\rangle)=f(\langle{Q}\rangle), where

f(P)=(P\L,𝖿𝗂𝗇(P),((PA)\L)A𝗋𝖿𝗂𝗇(P)).f(\langle{P}\rangle)=(P\mathop{\backslash^{\!}}L,\mathsf{fin}(P),((P-A)\mathop{\backslash^{\!}}L)_{A\subseteq\mathsf{rfin}(P)}).

We will show that ff takes only finitely many values on 𝖾𝗌𝗌(L)\mathsf{ess}(L). Indeed, P\LP\mathop{\backslash^{\!}}L belongs to the finite set 𝗌𝗎𝖿𝖿(L)\mathsf{suff}(L). Further, all ipomsets in P\LP\mathop{\backslash^{\!}}L have source interfaces equal to TPT_{P}. Since P\LP\mathop{\backslash^{\!}}L is non-empty, 𝖿𝗂𝗇(P)\mathsf{fin}(P) is a starter with TPT_{P} as underlying conclist. Yet, there are only finitely many starters on any conclist. The last coordinate also may take only finitely many values, since 𝗋𝖿𝗂𝗇(P)\mathsf{rfin}(P) is finite and (PA)\L𝗌𝗎𝖿𝖿(L)(P-A)\mathop{\backslash^{\!}}L\in\mathsf{suff}(L). ∎

  • \PRstyle
  • Proof of Theorem 5.3, (b)\implies(a):
    By Lemma 5.34 and Lemma 4.8, 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is a finite HDA. With Proposition 5.32, 𝖫𝖺𝗇𝗀(𝖬𝖭(L)𝖾𝗌𝗌)=𝖫𝖺𝗇𝗀(𝖬𝖭(L))=L\mathsf{Lang}(\mathsf{MN}(L)^{\mathsf{ess}})=\mathsf{Lang}(\mathsf{MN}(L))=L. ∎\QED

Example 5.36

We finish this section with another example, which shows some subtleties related to higher-dimensional loops. Let LL be the language of the HDA shown to the left of Figure 7 (a looping version of the HDA of Figure 5), then

L={a}{[aab]nn1}.L=\{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}\}\cup\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]^{n}\mid n\geq 1\}\mathord{\downarrow}.

Our construction yields 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} as shown on the right of the figure. Here, e=[ab]e=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle, and the two ee-labelled edges and their corresponding faces are identified. These identifications follow from the fact that [aabb]L[ab]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa\\ &bb&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\approx_{L}\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right], [aabb]L[ab]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa\\ &bb\end{smallmatrix}\right]\approx_{L}\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right], and [aab]La\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa\\ &b\end{smallmatrix}\right]\approx_{L}\vbox{\hbox{\tiny$\bullet$}}a. Note that [ab]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right] and [aabb]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &bb&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right] are not strongly equivalent, since they have different signatures: [ab]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right] and [ab]\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right], respectively.

wεw_{\varepsilon}a{\vbox{\hbox{\tiny$\bullet$}}a}wεw_{\varepsilon}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]}aa{\vbox{\hbox{\tiny$\bullet$}}aa}a{\vbox{\hbox{\tiny$\bullet$}}a}[ab]b{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]b}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]}a{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}}\bot\topwaw_{a}aa{\vbox{\hbox{\tiny$\bullet$}}aa\vbox{\hbox{\tiny$\bullet$}}}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]}ee[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]}[aabb]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &bb\end{smallmatrix}\right]}\top[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}ee[ab]b{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]b\vbox{\hbox{\tiny$\bullet$}}}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[aabb]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &bb&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}aaaabbbb\bot\top\bot\top
Figure 7: Two HDAs recognising the language of Example 5.36. On the left side, start/accept edges are identified; on the right, ee-labelled edges are identified.

6 Determinism

We now make precise our notion of determinism and show that not all HDAs may be determinised. Recall that we do not assume finiteness.

Definition 6.1

An HDA XX is deterministic if

  1. 1.

    for every UU\in\square there is at most one initial cell in X[U]X[U], and

  2. 2.

    for all VV\in\square, AVA\subseteq V and any essential cell xX[VA]x\in X[V-A] there exists at most one essential cell yX[V]y\in X[V] such that x=δA0(y)x=\delta^{0}_{A}(y).

That is, in any essential cell xx in a deterministic HDA XX and for any set AA of events, there is at most one way to start AA in xx and remain in the essential part of XX (recall that termination of events is always deterministic). We allow multiple initial cells because ipomsets in 𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(X) may have different source interfaces; for each source interface in 𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(X), there can be at most one matching start cell in XX. Note that we must restrict our definition to essential cells as inessential cells may not always be removed (in contrast to the case of standard automata).

A language is deterministic if it is recognised by a deterministic HDA. We develop a language-internal criterion for being deterministic.

Definition 6.2

A language LL is swap-invariant if it holds for all P,Q,P,QiiPomsP,Q,P^{\prime},Q^{\prime}\in\text{{{iiPoms}}} that PPLPP^{\prime}\in L, QQLQQ^{\prime}\in L and PQP\sqsubseteq Q imply QPLQP^{\prime}\in L.

That is, if the PP prefix of PPLPP^{\prime}\in L is subsumed by QQ (which is, thus, “more concurrent” than PP), and if QQ itself may be extended to an ipomset in LL, then PP may be swapped for QQ in the ipomset PPPP^{\prime} to yield QPLQP^{\prime}\in L.

Lemma 6.3

LL is swap-invariant if and only if PQP\sqsubseteq Q implies P\L=Q\LP\mathop{\backslash^{\!}}L=Q\mathop{\backslash^{\!}}L for all P,QiiPomsP,Q\in\text{{{iiPoms}}}, unless Q\L=Q\mathop{\backslash^{\!}}L=\emptyset.

Proof 6.4

Assume that LL is swap-invariant and let PQP\sqsubseteq Q. The inclusion Q\LP\LQ\mathop{\backslash^{\!}}L\subseteq P\mathop{\backslash^{\!}}L follows from Lemma 5.1, and

RQ\L,RP\LQR,PRLQRLRQ\LR\in Q\mathop{\backslash^{\!}}L,\;R^{\prime}\in P\mathop{\backslash^{\!}}L\iff QR,PR^{\prime}\in L\implies QR^{\prime}\in L\iff R^{\prime}\in Q\mathop{\backslash^{\!}}L

implies that P\LQ\LP\mathop{\backslash^{\!}}L\subseteq Q\mathop{\backslash^{\!}}L. The calculation

PP,QQL,PQPP\L,QQ\L,PQPQ\LQPLPP^{\prime},QQ^{\prime}\in L,\;P\sqsubseteq Q\iff P^{\prime}\in P\mathop{\backslash^{\!}}L,\;Q^{\prime}\in Q\mathop{\backslash^{\!}}L,\;P\sqsubseteq Q\implies P^{\prime}\in Q\mathop{\backslash^{\!}}L\iff QP^{\prime}\in L

shows the converse.

Our main goal is to show the following criterion, which will be implied by Propositions 6.13 and 6.17 below.

Theorem 6.5

A language LL is deterministic if and only if it is swap-invariant.

Example 6.6

The regular language L={[ab],ab,ba,abc}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],ab,ba,abc\} from Example 5.8 is not swap-invariant: using Lemma 6.3, ab[ab]ab\vbox{\hbox{\tiny$\bullet$}}\sqsubseteq\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right], but {ab}\L={b,bc}{b}={[ab]}\L\{ab\vbox{\hbox{\tiny$\bullet$}}\}\mathop{\backslash^{\!}}L=\{\vbox{\hbox{\tiny$\bullet$}}b,\vbox{\hbox{\tiny$\bullet$}}bc\}\neq\{\vbox{\hbox{\tiny$\bullet$}}b\}=\{\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}\mathop{\backslash^{\!}}L. Hence LL is not deterministic.

The next examples explain why we need to restrict to essential cells in the definition of deterministic HDAs.

Example 6.7

The HDA in Example 5.11 is deterministic. There are two different aa-labelled edges starting at wεw_{\varepsilon} (waw_{a} and [aa]\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ \!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle), yet it does not disturb determinism since wεw_{\varepsilon} is not accessible.

Example 6.8

Let L={ab,[ab]}L=\{ab,\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}. Then 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is as follows:

ε\varepsilon\botaayyyyabab\topaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}abab\vbox{\hbox{\tiny$\bullet$}}yay_{a\vbox{\hbox{\tiny$\bullet$}}}yby_{b\vbox{\hbox{\tiny$\bullet$}}}[ab]{\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\top

It is deterministic: there are two bb-labelled edges leaving aa, namely yby_{b\vbox{\hbox{\tiny$\bullet$}}} and abab\vbox{\hbox{\tiny$\bullet$}}, but only the latter is coaccessible.

The next lemma shows that up to path equivalence, paths on deterministic HDAs are determined by their labels. That is, up to path equivalence, deterministic HDAs are unambiguous. Note that [23] shows that non-deterministic HDAs may exhibit unbounded ambiguity.

Lemma 6.9

Let XX be a deterministic HDA and α,β𝖯𝖺𝗍𝗁(X)\alpha,\beta\in\mathsf{Path}(X)_{\bot} with 𝗍𝗀𝗍(α),\mathsf{tgt}(\alpha), 𝗍𝗀𝗍(β)𝖾𝗌𝗌(X)\mathsf{tgt}(\beta)\in\mathsf{ess}(X). If ev(α)=ev(β)\textup{{ev}}(\alpha)=\textup{{ev}}(\beta), then αβ\alpha\simeq\beta.

Proof 6.10

We can assume that α=α1αn\alpha=\alpha_{1}*\dotsm*\alpha_{n} and β=β1βm\beta=\beta_{1}*\dotsm*\beta_{m} are sparse; note that all of these cells are essential. We show that αk=βk\alpha_{k}=\beta_{k} for all kk which implies the claim.

Denote P=ev(α)=ev(β)P=\textup{{ev}}(\alpha)=\textup{{ev}}(\beta), then

P=ev(α1)ev(αn)P=\textup{{ev}}(\alpha_{1})*\dotsm*\textup{{ev}}(\alpha_{n})

is a sparse step decomposition of PP. Similarly, P=ev(β1)ev(βm)P=\textup{{ev}}(\beta_{1})*\dotsm*\textup{{ev}}(\beta_{m}) is a sparse step decomposition. Yet sparse step decompositions are unique by Proposition 3.8; hence, m=nm=n and ev(αk)=ev(βk)\textup{{ev}}(\alpha_{k})=\textup{{ev}}(\beta_{k}) for every kk.

We show by induction that αk=βk\alpha_{k}=\beta_{k}. First, ev(α0)=ev(β0)\textup{{ev}}(\alpha_{0})=\textup{{ev}}(\beta_{0}) implies α0=β0\alpha_{0}=\beta_{0} by determinism. Now assume that αk1=βk1\alpha_{k-1}=\beta_{k-1}. Let x=𝗌𝗋𝖼(αk)=𝗍𝗀𝗍(αk1)=𝗍𝗀𝗍(βk1)=𝗌𝗋𝖼(βk)x=\mathsf{src}(\alpha_{k})=\mathsf{tgt}(\alpha_{k-1})=\mathsf{tgt}(\beta_{k-1})=\mathsf{src}(\beta_{k}). If Pk=ev(αk)=ev(βk)P_{k}=\textup{{ev}}(\alpha_{k})=\textup{{ev}}(\beta_{k}) is a terminator UB{U}{\downarrow}_{B}, then αk=δB1(x)=βk\alpha_{k}=\delta_{B}^{1}(x)=\beta_{k}. If PkP_{k} is a starter AU{}_{A\!}{\uparrow}{U}, then there are y,zXy,z\in X such that δA0(y)=δA0(z)=x\delta^{0}_{A}(y)=\delta^{0}_{A}(z)=x. As yy and zz are essential and XX is deterministic, this implies y=zy=z and αk=βk\alpha_{k}=\beta_{k}. ∎

Lemma 6.11

Let α\alpha and β\beta be essential paths on a deterministic HDA XX. Assume that 𝗌𝗋𝖼(α)=𝗌𝗋𝖼(β)\mathsf{src}(\alpha)=\mathsf{src}(\beta) and ev(α)ev(β)\textup{{ev}}(\alpha)\sqsubseteq\textup{{ev}}(\beta). Then 𝗍𝗀𝗍(α)=𝗍𝗀𝗍(β)\mathsf{tgt}(\alpha)=\mathsf{tgt}(\beta).

Proof 6.12

By Lemma 4.15, there exists a path γ𝖯𝖺𝗍𝗁(X)𝗌𝗋𝖼(β)𝗍𝗀𝗍(β)\gamma\in\mathsf{Path}(X)_{\mathsf{src}(\beta)}^{\mathsf{tgt}(\beta)} such that ev(γ)=ev(α)\textup{{ev}}(\gamma)=\textup{{ev}}(\alpha). Lemma 6.9 implies that γα\gamma\simeq\alpha and then 𝗍𝗀𝗍(α)=𝗍𝗀𝗍(γ)=𝗍𝗀𝗍(β)\mathsf{tgt}(\alpha)=\mathsf{tgt}(\gamma)=\mathsf{tgt}(\beta).

Proposition 6.13

If LL is deterministic, then LL is swap-invariant.

Proof 6.14

Let XX be a deterministic HDA that recognises LL and fix ipomsets PQP\sqsubseteq Q. From Lemma 5.1 follows that Q\LP\LQ\mathop{\backslash^{\!}}L\subseteq P\mathop{\backslash^{\!}}L. It remains to prove that if Q\LQ\mathop{\backslash^{\!}}L\neq\emptyset, then P\LQ\LP\mathop{\backslash^{\!}}L\subseteq Q\mathop{\backslash^{\!}}L. Denote USPSQU\cong S_{P}\cong S_{Q}.

Let RQ\LR\in Q\mathop{\backslash^{\!}}L and let ω𝖯𝖺𝗍𝗁(X)idU\omega\in\mathsf{Path}(X)_{\langle{\textup{{id}}_{U}}\rangle}^{\top} be an accepting path that recognises QRQR. By Lemma 4.17, there exists a path β𝖯𝖺𝗍𝗁(X)idU\beta\in\mathsf{Path}(X)_{\langle{\textup{{id}}_{U}}\rangle} such that ev(β)=Q\textup{{ev}}(\beta)=Q.

Now assume that RP\LR^{\prime}\in P\mathop{\backslash^{\!}}L, and let ω𝖯𝖺𝗍𝗁(X)idU\omega^{\prime}\in\mathsf{Path}(X)_{\langle{\textup{{id}}_{U}}\rangle}^{\top} be a path such that ev(ω)=PR\textup{{ev}}(\omega^{\prime})=PR^{\prime}. By Lemma 4.17, there exist paths α𝖯𝖺𝗍𝗁(X)idU\alpha\in\mathsf{Path}(X)_{\langle{\textup{{id}}_{U}}\rangle} and γ𝖯𝖺𝗍𝗁(X)𝗍𝗀𝗍(ω)\gamma\in\mathsf{Path}(X)^{\mathsf{tgt}(\omega^{\prime})} such that 𝗍𝗀𝗍(α)=𝗌𝗋𝖼(γ)\mathsf{tgt}(\alpha)=\mathsf{src}(\gamma), ev(α)=P\textup{{ev}}(\alpha)=P and ev(γ)=R\textup{{ev}}(\gamma)=R^{\prime}. From Lemma 6.11 and PQP\sqsubseteq Q follows that 𝗍𝗀𝗍(α)=𝗍𝗀𝗍(β)\mathsf{tgt}(\alpha)=\mathsf{tgt}(\beta). Thus, β\beta and γ\gamma may be concatenated to an accepting path βγ\beta*\gamma. By ev(βγ)=QR\textup{{ev}}(\beta*\gamma)=QR^{\prime} we have QRLQR^{\prime}\in L, i.e., RQ\LR^{\prime}\in Q\mathop{\backslash^{\!}}L. ∎

Lemma 6.15

If P𝖾𝗌𝗌(𝖬𝖭(L))\langle{P}\rangle\in\mathsf{ess}(\mathsf{MN}(L)) and A𝗋𝖿𝗂𝗇(P)A\subseteq\mathsf{rfin}(P), then PA𝖾𝗌𝗌(𝖬𝖭(L))\langle{P-A}\rangle\in\mathsf{ess}(\mathsf{MN}(L)).

Proof 6.16

By Lemma 5.23, PA\langle{P-A}\rangle is accessible. By assumption, P\langle{P}\rangle is coaccessible and (PAAP)(\langle{P-A}\rangle\mathrel{\nearrow^{A}}\langle{P}\rangle) is a path, so PA\langle{P-A}\rangle is also coaccessible. ∎

Proposition 6.17

If LL is swap-invariant, then 𝖬𝖭(L)\mathsf{MN}(L) and 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} are deterministic.

Proof 6.18

Since 𝖬𝖭(L)𝖾𝗌𝗌\mathsf{MN}(L)^{\mathsf{ess}} is a sub-HDA of 𝖬𝖭(L)\mathsf{MN}(L), it suffices to prove that 𝖬𝖭(L)\mathsf{MN}(L) is deterministic. 𝖬𝖭(L)\mathsf{MN}(L) contains only one start cell idU\langle{\textup{{id}}_{U}}\rangle for every UU\in\square.

Fix UU\in\square, P,QiiPomsUP,Q\in\text{{{iiPoms}}}_{U} and AUA\subseteq U. Assume that δA0(P)=δA0(Q)\delta_{A}^{0}(\langle{P}\rangle)=\delta_{A}^{0}(\langle{Q}\rangle), i.e., PA=QA\langle{P-A}\rangle=\langle{Q-A}\rangle, and P,Q,PA𝖾𝗌𝗌(𝖬𝖭(L))\langle{P}\rangle,\langle{Q}\rangle,\langle{P-A}\rangle\in\mathsf{ess}(\mathsf{MN}(L)). We will prove that P=Q\langle{P}\rangle=\langle{Q}\rangle, or equivalently, PLQP\approx_{L}Q.

We have 𝖿𝗂𝗇(PA)=𝖿𝗂𝗇(QA)=:S(UA)\mathsf{fin}(P-A)=\mathsf{fin}(Q-A)=:{}_{S\!}{\uparrow}{(U-A)}. First, notice that AA, regarded as a subset of PP (or QQ), contains no start events: else, we would have δA0(P)=wUA\delta^{0}_{A}(\langle{P}\rangle)=w_{U-A} (or δA0(Q)=wUA\delta^{0}_{A}(\langle{Q}\rangle)=w_{U-A}). As a consequence, 𝖿𝗂𝗇(P)=𝖿𝗂𝗇(Q)=SU\mathsf{fin}(P)=\mathsf{fin}(Q)={}_{S\!}{\uparrow}{U}.

For every B𝗋𝖿𝗂𝗇(P)=𝗋𝖿𝗂𝗇(Q)B\subseteq\mathsf{rfin}(P)=\mathsf{rfin}(Q) we have

PALQA\displaystyle P-A\approx_{L}Q-A (P(AB))\L=(Q(AB))\L\displaystyle\implies(P-(A\cup B))\mathop{\backslash^{\!}}L=(Q-(A\cup B))\mathop{\backslash^{\!}}L
((P(AB))(AB)U)\L=((Q(AB))(AB)U)\L.\displaystyle\implies((P-(A\cup B))*{}_{(A-B)\!}{\uparrow}{U})\mathop{\backslash^{\!}}L=((Q-(A\cup B))*{}_{(A-B)\!}{\uparrow}{U})\mathop{\backslash^{\!}}L.

The first implication follows from the definition, and the second from Lemma 5.12. From Lemma 5.14 follows that

(P(AB))(AB)UPB,(Q(AB))(AB)UQB.(P-(A\cup B))*{}_{(A-B)\!}{\uparrow}{U}\sqsubseteq P-B,\quad(Q-(A\cup B))*{}_{(A-B)\!}{\uparrow}{U}\sqsubseteq Q-B.

Thus, by swap-invariance we have (PB)\L=(QB)\L;(P-B)\mathop{\backslash^{\!}}L=(Q-B)\mathop{\backslash^{\!}}L; note that Lemma 6.15 guarantees that neither of these languages is empty. ∎

7 Higher-dimensional automata with interfaces

Higher-dimensional automata with interfaces (iHDAs) were introduced in [15] as a tool that allowed to prove a Kleene theorem for HDAs. Both HDAs and iHDAs recognise the same class of languages, yet, compared to iHDAs, HDAs have a flaw: they enforce introducing non-essential cells that serve solely as faces of other cells. We will show below that essential parts of iHDAs are again iHDAs, a fact which allows us to give a Myhill-Nerode construction using iHDAs which proceeds along different lines and, we believe, is more simple and principled.

We will also provide a notion of deterministic iHDAs which, again, is simpler in that it does not have to restrict to essential cells, and show that the notions of deterministic languages of HDAs and iHDAs agree.

7.1 Iprecubical sets and iHDAs

The main difference between HDAs and iHDAs is that events in iHDAs may be marked as source events or target events. Accepting runs may never terminate target events and, similarly, source events must have been present from the very beginning of an accepting run.

A concurrency list with interfaces (iconclist) (U,,S,T,λ)(U,{\dashrightarrow},S,T,\lambda) is a conclist (U,,λ)(U,{\dashrightarrow},\lambda) together with subsets S,TUS,T\subseteq U. Equivalently, iconclists are iposets with empty precedence relation; conclists are iconclists with empty interfaces. We write SUT{\vphantom{U}}_{S}U_{T} for an iconclist as above.

Let I{\mathrm{I}}\mkern-1.0mu\square denote the set of iconclists. An iprecubical set consists of a set of cells XX together with a mapping 𝗂𝖾𝗏:XI\mathsf{iev}:X\to{\mathrm{I}}\mkern-1.0mu\square. For an iconclist SUT{\vphantom{U}}_{S}U_{T} we write X[SUT]={xX𝗂𝖾𝗏(x)=SUT}X[{\vphantom{U}}_{S}U_{T}]=\{x\in X\mid\mathsf{iev}(x)={\vphantom{U}}_{S}U_{T}\}. Face maps in iprecubical sets cannot unstart events in source interfaces neither terminate events in target interfaces. That is, for every iconclist SUT{\vphantom{U}}_{S}U_{T} and subsets A,BUA,B\subseteq U such that AS=BT=A\cap S=B\cap T=\emptyset there are face maps

δA0:X[SUT]X[S(UA)(TA)],δB1:X[SUT]X[(SB)(UB)T].\delta_{A}^{0}:X[{\vphantom{U}}_{S}U_{T}]\to X[{\vphantom{(U-A)}}_{S}(U-A)_{(T-A)}],\qquad\delta_{B}^{1}:X[{\vphantom{U}}_{S}U_{T}]\to X[{\vphantom{(U-B)}}_{(S-B)}(U-B)_{T}].

Further, for A,BUA,B\subseteq U with AB=A\cap B=\emptyset and ν,μ{0,1}\nu,\mu\in\{0,1\}, δAνδBμ=δBμδAν\delta_{A}^{\nu}\delta_{B}^{\mu}=\delta_{B}^{\mu}\delta_{A}^{\nu} whenever these are defined.

A higher-dimensional automaton with interfaces (iHDA) is an iprecubical set XX together with subsets X,XX\bot_{X},\top_{X}\subseteq X of start and accept cells such that for all xXx\in\bot_{X} with 𝗂𝖾𝗏(x)=SUT\mathsf{iev}(x)={\vphantom{U}}_{S}U_{T}, S=US=U and for all xXx\in\top_{X} with 𝗂𝖾𝗏(x)=SUT\mathsf{iev}(x)={\vphantom{U}}_{S}U_{T}, T=UT=U. That is, events in start cells are source events and cannot be unstarted, and events in accept cells are target events and cannot be terminated.

Remark 7.1

Every precubical set XX may be regarded as an iprecubical set XX^{\prime} such that X[U]=X[U]X^{\prime}[{\vphantom{U}}_{\emptyset}U_{\emptyset}]=X[U] and X[SUT]=X^{\prime}[{\vphantom{U}}_{S}U_{T}]=\emptyset whenever SS\neq\emptyset or TT\neq\emptyset. If XX is an HDA and all its start and accept cells are vertices (elements of X[]X[\emptyset]), then XX^{\prime} may be regarded as an iHDA as well. This fails in presence of higher-dimensional start or accept cells due to the condition on event iconclists of such cells.

Example 7.2

Let XX be the iHDA defined by X={x,e1,e2,e3,e4}X=\{x,e_{1},e_{2},e_{3},e_{4}\}, ev(x)=\textup{{ev}}(x)=\emptyset,

ev(e1)=aaa,ev(e2)=aa,ev(e3)=a,ev(e4)=aa,\textup{{ev}}(e_{1})={\vphantom{a}}_{a}a_{a},\quad\textup{{ev}}(e_{2})={\vphantom{a}}_{a}a_{\emptyset},\quad\textup{{ev}}(e_{3})={\vphantom{a}}_{\emptyset}a_{\emptyset},\quad\textup{{ev}}(e_{4})={\vphantom{a}}_{\emptyset}a_{a},

δa1(e2)=δa0(e3)=δa1(e3)=δa0(e4)=x\delta^{1}_{a}(e_{2})=\delta^{0}_{a}(e_{3})=\delta^{1}_{a}(e_{3})=\delta^{0}_{a}(e_{4})=x, and X={e1,e2}\bot_{X}=\{e_{1},e_{2}\}, X={e1,e4}\top_{X}=\{e_{1},e_{4}\}. Note that e1e_{1} has neither an upper nor a lower face since its only event aa is in both interfaces. For the opposite reason, the edge e3e_{3} can be neither start nor accept cell.

xxe3e_{3}\bote2e_{2}\tope4e_{4}\bote1\top\hbox to0.0pt{$e_{1}$\hss}
Example 7.3

Figure 8 shows an example of a two-dimensional iHDA. The initial cell has event iconclist aa{\vphantom{a}}_{a}a_{\emptyset} and hence no lower face. This lack of lower face propagates to the left two-dimensional cell, with event iconclist [ab]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]. Hence iHDAs are partial HDAs in the sense of [24, 25], but the notion of partiality is more restricted here, given that it is on the level of events.

\emptyset\emptyset[a]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right]\bot\top[c]\left[\begin{smallmatrix}c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right][a]\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\end{smallmatrix}\right][b]\left[\begin{smallmatrix}b\end{smallmatrix}\right][c]\left[\begin{smallmatrix}c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right][d]\left[\begin{smallmatrix}d&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right][ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]}[cb]{\left[\begin{smallmatrix}c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\end{smallmatrix}\right]}[cd]{\left[\begin{smallmatrix}c&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ d&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}
Figure 8: An example of an iHDA. Cells are marked with their event iconclists.

7.2 Paths and languages

Paths on iHDAs are defined as for HDAs. Namely, a path is a sequence α=(x0,φ1,x1,,xn)\alpha=(x_{0},\varphi_{1},x_{1},\dotsc,x_{n}) such that each (xi1,φi,xi)(x_{i-1},\varphi_{i},x_{i}) is either

  • an upstep (δA0(xi),A,xi)(\delta^{0}_{A}(x_{i}),\mathrel{\nearrow^{A}},x_{i}) for xiX[SUT]x_{i}\in X[{\vphantom{U}}_{S}U_{T}], AUSA\subseteq U-S, or

  • a downstep (xi1,B,δB1(xi1))(x_{i-1},\mathrel{\searrow_{B}},\delta^{1}_{B}(x_{i-1})) for xi1X[SUT]x_{i-1}\in X[{\vphantom{U}}_{S}U_{T}], BUTB\subseteq U-T.

A path α\alpha is accepting if 𝗌𝗋𝖼(α)=x0\mathsf{src}(\alpha)=x_{0} is a start cell and 𝗍𝗀𝗍(α)=xn\mathsf{tgt}(\alpha)=x_{n} is an accept cell.

For a cell xXx\in X of an iHDA XX we denote by ev(x)\textup{{ev}}(x) the underlying conclist of 𝗂𝖾𝗏(x)\mathsf{iev}(x); note that

𝗂𝖾𝗏(x)=(S𝗂𝖾𝗏(x),ev(x),T𝗂𝖾𝗏(x)).\mathsf{iev}(x)=(S_{\mathsf{iev}(x)},\textup{{ev}}(x),T_{\mathsf{iev}(x)}).

The event ipomset of a path α\alpha is defined inductively as before: ev((x))=idev(x)\textup{{ev}}((x))=\textup{{id}}_{\textup{{ev}}(x)}, ev(yAx)=Aev(x)\textup{{ev}}(y\mathrel{\nearrow^{A}}x)={}_{A\!}{\uparrow}{\textup{{ev}}(x)}, ev(xBy)=ev(x)B\textup{{ev}}(x\mathrel{\searrow_{B}}y)={\textup{{ev}}(x)}{\downarrow}_{B}, and ev(αβ)=ev(α)ev(β)\textup{{ev}}(\alpha*\beta)=\textup{{ev}}(\alpha)*\textup{{ev}}(\beta). The language of an iHDA XX is

𝖫𝖺𝗇𝗀(X)={ev(α)α accepting path in X}.\mathsf{Lang}(X)=\{\textup{{ev}}(\alpha)\mid\alpha\text{ accepting path in }X\}.
Example 7.4

The language of the iHDA from Example 7.2 is {a}{aanan0}\{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}\}\cup\{\vbox{\hbox{\tiny$\bullet$}}aa^{n}a\vbox{\hbox{\tiny$\bullet$}}\mid n\geq 0\}. The language of the iHDA from Example 7.3 is

{[​ ac b d  ​​]}.\left\{\left[\vbox{\hbox{\! \leavevmode\hbox to50.18pt{\vbox to26.67pt{\pgfpicture\makeatletter\hbox{\qquad\lower-21.3957pt\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.45015pt}{-1.93748pt}\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{\small{$a$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.45053pt}{-1.93748pt}\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{\small{$c$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{32.30293pt}{-1.23264pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-1.98193pt}{-18.0627pt}\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{\small{$b$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-7.53075pt}{-1.23264pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{26.05643pt}{-18.0627pt}\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{\small{$d$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{32.30293pt}{-16.96687pt}\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{\small{$\vbox{\hbox{\tiny$\bullet$}}$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.98315pt}{0.0pt}\pgfsys@lineto{21.91754pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{21.91754pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.51494pt}{-14.9377pt}\pgfsys@lineto{21.52344pt}{-14.9377pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{21.52344pt}{-14.9377pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} { {}{}{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{}{}{{}}\pgfsys@moveto{5.98315pt}{-3.14047pt}\pgfsys@lineto{21.63806pt}{-11.36043pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.88538}{-0.46487}{0.46487}{0.88538}{21.63806pt}{-11.36043pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} \!\!}}\right]\right\}\mathord{\downarrow}.

Because of the requirement that events in start cells may not be unstarted and those in accept cells may not be terminated, an event in an iHDA carries information whether it will be eventually terminated, and whether it has been present from the beginning. This is expressed by the following lemma which shows that iconclists of cells may be recovered from ipomsets of accepting paths:

Lemma 7.5

Let XX be an iHDA, α\alpha be a path in XX and P=ev(α)P=\textup{{ev}}(\alpha).

  1. 1.

    If 𝗌𝗋𝖼(α)X\mathsf{src}(\alpha)\in\bot_{X}, then 𝗂𝖾𝗏(𝗍𝗀𝗍(α))(SPTP,TP,Z)\mathsf{iev}(\mathsf{tgt}(\alpha))\cong(S_{P}\cap T_{P},T_{P},Z) for some ZTPZ\subseteq T_{P}.

  2. 2.

    If 𝗍𝗀𝗍(α)X\mathsf{tgt}(\alpha)\in\top_{X}, then 𝗂𝖾𝗏(𝗌𝗋𝖼(α))(Y,SP,SPTP)\mathsf{iev}(\mathsf{src}(\alpha))\cong(Y,S_{P},S_{P}\cap T_{P}) for some YSPY\subseteq S_{P}.

  3. 3.

    If α\alpha is accepting, then 𝗂𝖾𝗏(𝗌𝗋𝖼(α)(SP,SP,SPTP)\mathsf{iev}(\mathsf{src}(\alpha)\cong(S_{P},S_{P},S_{P}\cap T_{P}) and 𝗂𝖾𝗏(𝗍𝗀𝗍(α)(SPTP,TP,TP)\mathsf{iev}(\mathsf{tgt}(\alpha)\cong(S_{P}\cap T_{P},T_{P},T_{P}).

Proof 7.6

It is sufficient to prove 1., 2. is then obtained by reversal and 3. follows from 1. and 2. Induction with respect to the length of α\alpha. If α=(x)\alpha=(x), then P=idU=(U,U,U)P=\textup{{id}}_{U}=(U,U,U) and 𝗂𝖾𝗏(x)=(U,U,Z)\mathsf{iev}(x)=(U,U,Z).

If α=β(δA0(x)Ax)\alpha=\beta*(\delta^{0}_{A}(x)\mathrel{\nearrow^{A}}x), 𝗂𝖾𝗏(x)=(S,U,T)\mathsf{iev}(x)=(S,U,T), and AUSA\subseteq U-S, then ev(β)=PA\textup{{ev}}(\beta)=P-A and

𝗂𝖾𝗏(δA0(x))=(S,UA,TA)=(SPATPA,TPA,Z)=(SPTP,TPA,Z)\mathsf{iev}(\delta^{0}_{A}(x))=(S,U-A,T-A)=(S_{P-A}\cap T_{P-A},T_{P-A},Z)=(S_{P}\cap T_{P},T_{P}-A,Z)

by the inductive hypothesis for β\beta. Thus, (S,U,T)=(SPTP,TP,Z)(S,U,T)=(S_{P}\cap T_{P},T_{P},Z).

Finally, let α=β(yBδB1(y))\alpha=\beta*(y\mathrel{\searrow_{B}}\delta^{1}_{B}(y)), 𝗂𝖾𝗏(y)=(S,U,T)\mathsf{iev}(y)=(S,U,T), and BUTB\subseteq U-T. Denote ev(β)=Q\textup{{ev}}(\beta)=Q, then we have P=QTQBP=Q*{T_{Q}}{\downarrow}_{B}, SP=SQS_{P}=S_{Q} and TP=TQBT_{P}=T_{Q}-B. Therefore,

𝗂𝖾𝗏(𝗍𝗀𝗍(α))=(SB,UB,T)=(S,U,T)B=𝗂𝖾𝗏(𝗍𝗀𝗍(β))B=ind.(SQTQ,TQ,Z)B=(SQ(TQB),TQB,ZB)=(SPTP,TP,ZB).\mathsf{iev}(\mathsf{tgt}(\alpha))=(S-B,U-B,T)=(S,U,T)-B=\mathsf{iev}(\mathsf{tgt}(\beta))-B\overset{\text{ind.}}{=}\\ (S_{Q}\cap T_{Q},T_{Q},Z)-B=(S_{Q}\cap(T_{Q}-B),T_{Q}-B,Z-B)=(S_{P}\cap T_{P},T_{P},Z-B).

The proof is complete.

7.3 HDAs vs. iHDAs

HDAs and iHDAs are related via a pair of adjoint functors: resolution which maps an HDA XX to an iHDA 𝖱𝖾𝗌(X)\mathsf{Res}(X) by adjoining all possible assignments of interfaces, and its left adjoint closure, which maps an iHDA XX to an HDA 𝖢𝗅(X)\mathsf{Cl}(X) by filling in missing faces. These are introduced in [16] and have the important property that they preserve languages. We define them below and develop some lemmas.

The resolution of an HDA XX is the iHDA 𝖱𝖾𝗌(X)\mathsf{Res}(X) defined as follows. For SUTI{\vphantom{U}}_{S}U_{T}\in{\mathrm{I}}\mkern-1.0mu\square, AUSA\subseteq U-S and BUTB\subseteq U-T we put

𝖱𝖾𝗌(X)[SUT]={(x;S,T)xX[U]},\displaystyle\mathsf{Res}(X)[{\vphantom{U}}_{S}U_{T}]=\{(x;S,T)\mid x\in X[U]\},
δA0((x;S,T))=(δA0(x);S,TA),δB1((x;S,T))=(δB1(x);SB,T).\displaystyle\delta^{0}_{A}((x;S,T))=(\delta^{0}_{A}(x);S,T-A),\qquad\delta^{1}_{B}((x;S,T))=(\delta^{1}_{B}(x);S-B,T).

A cell (x;S,T)𝖱𝖾𝗌(X)[SUT](x;S,T)\in\mathsf{Res}(X)[{\vphantom{U}}_{S}U_{T}] is a start cell if xXx\in X_{\bot} and S=US=U, and an accept cell if xXx\in X^{\top} and T=UT=U. Every cell xX[U]x\in X[U] thus produces 4|U|4^{|U|} cells in 𝖱𝖾𝗌(X)\mathsf{Res}(X), hence if XX is finite, then so is 𝖱𝖾𝗌(X)\mathsf{Res}(X).

Example 7.7

For the precubical set XX with X[a]={x}X[a]=\{x\} and X[]={v,w}X[\emptyset]=\{v,w\} we have

𝖱𝖾𝗌( vwx )= (x;,)(x;a,)(x;,a)(x;a,a)(v;,)(w;,)\mathsf{Res}\left(\vbox{\hbox{ \leavevmode\hbox to96.73pt{\vbox to51.21pt{\pgfpicture\makeatletter\hbox{\quad\lower-5.2808pt\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{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{}\pgfsys@moveto{5.08081pt}{0.0pt}\pgfsys@curveto{5.08081pt}{2.80608pt}{2.80608pt}{5.08081pt}{0.0pt}{5.08081pt}\pgfsys@curveto{-2.80608pt}{5.08081pt}{-5.08081pt}{2.80608pt}{-5.08081pt}{0.0pt}\pgfsys@curveto{-5.08081pt}{-2.80608pt}{-2.80608pt}{-5.08081pt}{0.0pt}{-5.08081pt}\pgfsys@curveto{2.80608pt}{-5.08081pt}{5.08081pt}{-2.80608pt}{5.08081pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-2.40796pt}{-1.93748pt}\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{\small{$v$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{}\pgfsys@moveto{91.2528pt}{39.83386pt}\pgfsys@curveto{91.2528pt}{43.08936pt}{88.61377pt}{45.7284pt}{85.35828pt}{45.7284pt}\pgfsys@curveto{82.10278pt}{45.7284pt}{79.46375pt}{43.08936pt}{79.46375pt}{39.83386pt}\pgfsys@curveto{79.46375pt}{36.57837pt}{82.10278pt}{33.93933pt}{85.35828pt}{33.93933pt}\pgfsys@curveto{88.61377pt}{33.93933pt}{91.2528pt}{36.57837pt}{91.2528pt}{39.83386pt}\pgfsys@closepath\pgfsys@moveto{85.35828pt}{39.83386pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{81.92253pt}{37.89638pt}\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{\small{$w$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}{}{{}} {{{{{}}{}{}{}{}{{}}}}}{}{{{{{}}{}{}{}{}{{}}}}}{{}}{}{}{}{}{}{{{}{}}}{{}}{}{}{}{}{{}}\pgfsys@moveto{4.78532pt}{2.23315pt}\pgfsys@lineto{78.92943pt}{36.83365pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.90617}{0.42288}{-0.42288}{0.90617}{78.92943pt}{36.83365pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{39.68893pt}{22.9933pt}\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{\small{$x$}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}\right)\quad=\quad\vbox{\hbox{ \leavevmode\hbox to151.65pt{\vbox to97.6pt{\pgfpicture\makeatletter\hbox{\hskip 32.28464pt\lower-45.03386pt\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{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{}\pgfsys@moveto{5.0pt}{0.0pt}\pgfsys@curveto{5.0pt}{2.76146pt}{2.76146pt}{5.0pt}{0.0pt}{5.0pt}\pgfsys@curveto{-2.76146pt}{5.0pt}{-5.0pt}{2.76146pt}{-5.0pt}{0.0pt}\pgfsys@curveto{-5.0pt}{-2.76146pt}{-2.76146pt}{-5.0pt}{0.0pt}{-5.0pt}\pgfsys@curveto{2.76146pt}{-5.0pt}{5.0pt}{-2.76146pt}{5.0pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}\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{\small{}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }{}\pgfsys@moveto{90.35828pt}{39.83386pt}\pgfsys@curveto{90.35828pt}{42.59532pt}{88.11974pt}{44.83386pt}{85.35828pt}{44.83386pt}\pgfsys@curveto{82.59682pt}{44.83386pt}{80.35828pt}{42.59532pt}{80.35828pt}{39.83386pt}\pgfsys@curveto{80.35828pt}{37.0724pt}{82.59682pt}{34.83386pt}{85.35828pt}{34.83386pt}\pgfsys@curveto{88.11974pt}{34.83386pt}{90.35828pt}{37.0724pt}{90.35828pt}{39.83386pt}\pgfsys@closepath\pgfsys@moveto{85.35828pt}{39.83386pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{85.35828pt}{39.83386pt}\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{\small{}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{}\pgfsys@moveto{5.0pt}{39.83386pt}\pgfsys@curveto{5.0pt}{42.59532pt}{2.76146pt}{44.83386pt}{0.0pt}{44.83386pt}\pgfsys@curveto{-2.76146pt}{44.83386pt}{-5.0pt}{42.59532pt}{-5.0pt}{39.83386pt}\pgfsys@curveto{-5.0pt}{37.0724pt}{-2.76146pt}{34.83386pt}{0.0pt}{34.83386pt}\pgfsys@curveto{2.76146pt}{34.83386pt}{5.0pt}{37.0724pt}{5.0pt}{39.83386pt}\pgfsys@closepath\pgfsys@moveto{0.0pt}{39.83386pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{0.0pt}{39.83386pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\hbox{\small{\definecolor[named]{.}{rgb}{.5,.5,.5}\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@color@gray@fill{.5}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{}\pgfsys@moveto{90.35828pt}{0.0pt}\pgfsys@curveto{90.35828pt}{2.76146pt}{88.11974pt}{5.0pt}{85.35828pt}{5.0pt}\pgfsys@curveto{82.59682pt}{5.0pt}{80.35828pt}{2.76146pt}{80.35828pt}{0.0pt}\pgfsys@curveto{80.35828pt}{-2.76146pt}{82.59682pt}{-5.0pt}{85.35828pt}{-5.0pt}\pgfsys@curveto{88.11974pt}{-5.0pt}{90.35828pt}{-2.76146pt}{90.35828pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{85.35828pt}{0.0pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{85.35828pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\hbox{\small{\definecolor[named]{.}{rgb}{.5,.5,.5}\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@color@gray@fill{.5}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{}\pgfsys@moveto{5.0pt}{-39.83386pt}\pgfsys@curveto{5.0pt}{-37.0724pt}{2.76146pt}{-34.83386pt}{0.0pt}{-34.83386pt}\pgfsys@curveto{-2.76146pt}{-34.83386pt}{-5.0pt}{-37.0724pt}{-5.0pt}{-39.83386pt}\pgfsys@curveto{-5.0pt}{-42.59532pt}{-2.76146pt}{-44.83386pt}{0.0pt}{-44.83386pt}\pgfsys@curveto{2.76146pt}{-44.83386pt}{5.0pt}{-42.59532pt}{5.0pt}{-39.83386pt}\pgfsys@closepath\pgfsys@moveto{0.0pt}{-39.83386pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{0.0pt}{-39.83386pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\hbox{\small{\definecolor[named]{.}{rgb}{.5,.5,.5}\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@color@gray@fill{.5}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{{}{{{}}}{{}}{}{}{}{}{}{}{}{}{}{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\definecolor[named]{tikz@color}{rgb}{.5,.5,.5}\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{1,1,1}\pgfsys@color@gray@fill{1}\pgfsys@invoke{ }\pgfsys@setdash{3.0pt,3.0pt}{0.0pt}\pgfsys@invoke{ }{}\pgfsys@moveto{90.35828pt}{-39.83386pt}\pgfsys@curveto{90.35828pt}{-37.0724pt}{88.11974pt}{-34.83386pt}{85.35828pt}{-34.83386pt}\pgfsys@curveto{82.59682pt}{-34.83386pt}{80.35828pt}{-37.0724pt}{80.35828pt}{-39.83386pt}\pgfsys@curveto{80.35828pt}{-42.59532pt}{82.59682pt}{-44.83386pt}{85.35828pt}{-44.83386pt}\pgfsys@curveto{88.11974pt}{-44.83386pt}{90.35828pt}{-42.59532pt}{90.35828pt}{-39.83386pt}\pgfsys@closepath\pgfsys@moveto{85.35828pt}{-39.83386pt}\pgfsys@fillstroke\pgfsys@invoke{ } \pgfsys@invoke{ }\pgfsys@endscope}{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{85.35828pt}{-39.83386pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@invoke{ }\pgfsys@color@gray@fill{.5}\pgfsys@invoke{ }\hbox{\small{\definecolor[named]{.}{rgb}{.5,.5,.5}\color[rgb]{.5,.5,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,.5,.5}\pgfsys@color@gray@stroke{.5}\pgfsys@color@gray@fill{.5}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}{}{{}} {{{{{}}{}{}{}{}{{}}}}}{}{{{{{}}{}{}{}{}{{}}}}}{{}}{}{}{}{}{}{{{}{}}}{{}}{{}}{}{}{}{}{{}}\pgfsys@moveto{4.7121pt}{2.19897pt}\pgfsys@lineto{79.74002pt}{37.21194pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.90617}{0.42288}{-0.42288}{0.90617}{79.74002pt}{37.21194pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ }}{ } {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{16.8583pt}{20.64745pt}\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{\small{\scriptsize{$(x;\emptyset,\emptyset)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}{}{{}} {{{{{}}{}{}{}{}{{}}}}}{}{{{{{}}{}{}{}{}{{}}}}}{{}}{}{}{}{}{}{{{}{}}}{{}}{}{}{}{}{{}}\pgfsys@moveto{5.2pt}{39.83386pt}\pgfsys@lineto{79.1583pt}{39.83386pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{79.1583pt}{39.83386pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{29.1388pt}{43.97876pt}\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{\small{\scriptsize{$(x;a,\emptyset)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}{}{{}} {{{{{}}{}{}{}{}{{}}}}}{}{{{{{}}{}{}{}{}{{}}}}}{{}}{}{}{}{}{}{{{}{}}}{{}}{}{}{}{}{{}}\pgfsys@moveto{5.2pt}{0.0pt}\pgfsys@lineto{79.1583pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{79.1583pt}{0.0pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{29.1388pt}{4.1449pt}\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{\small{\scriptsize{$(x;\emptyset,a)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}{}{{}} {{{{{}}{}{}{}{}{{}}}}}{}{{{{{}}{}{}{}{}{{}}}}}{{}}{}{}{}{}{}{{{}{}}}{{}}{}{}{}{}{{}}\pgfsys@moveto{5.2pt}{-39.83386pt}\pgfsys@lineto{79.1583pt}{-39.83386pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{79.1583pt}{-39.83386pt}\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@invoke{ }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{29.01859pt}{-35.68896pt}\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{\small{\scriptsize{$(x;a,a)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{{}}{{}}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{}}{} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{-28.95163pt}{-7.6449pt}\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{\small{\scriptsize{$(v;\emptyset,\emptyset)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} {{}}{{}}{{}}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{}}{} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{87.75317pt}{43.97876pt}\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{\small{\scriptsize{$(w;\emptyset,\emptyset)$}}} }}\pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope}}} \pgfsys@invoke{ }\pgfsys@endscope{}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{ }\pgfsys@endscope\hss}}\endpgfpicture}} }}

If ((x0;S0,T0),φ1,(x1;S1,T1),φ2,,φn,(xn;Sn,Tn))((x_{0};S_{0},T_{0}),\varphi_{1},(x_{1};S_{1},T_{1}),\varphi_{2},\dotsc,\varphi_{n},(x_{n};S_{n},T_{n})) is an accepting path in 𝖱𝖾𝗌(X)\mathsf{Res}(X), then (x0,φ1,x1,φ2,φn,xn)(x_{0},\varphi_{1},x_{1},\varphi_{2}\dots,\varphi_{n},x_{n}) is an accepting path in XX with the same event ipomset. Conversely, for every accepting path α=(x0,φ1,,xn)\alpha=(x_{0},\varphi_{1},\dots,x_{n}) in XX there exists unique subsets Sk,Tkev(xk)S_{k},T_{k}\subseteq\textup{{ev}}(x_{k}) such that ((x0;S0,T0),φ1,,(xn;Sn,Tn))((x_{0};S_{0},T_{0}),\varphi_{1},\dotsc,(x_{n};S_{n},T_{n})) is an accepting path in 𝖱𝖾𝗌(X)\mathsf{Res}(X). (Indeed, S0=ev(x0)S_{0}=\textup{{ev}}(x_{0}), Tn=ev(xn)T_{n}=\textup{{ev}}(x_{n}), SkS_{k} and φk\varphi_{k} determine Sk+1S_{k+1}, Tk+1T_{k+1} and φk\varphi_{k} determine TkT_{k}). As a consequence we obtain:

Lemma 7.8

Let XX be an HDA. If (x;S,T)𝖱𝖾𝗌(X)(x;S,T)\in\mathsf{Res}(X) is essential, then xXx\in X is essential.

Lemma 7.9 ([16, Prop. 11.2])

For any HDA XX, 𝖫𝖺𝗇𝗀(𝖱𝖾𝗌(X))=𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(\mathsf{Res}(X))=\mathsf{Lang}(X).

The closure of an iHDA XX is the HDA 𝖢𝗅(X)\mathsf{Cl}(X) defined, for all UU\in\square, by

  • 𝖢𝗅(X)={[x;A,B]xX,AS𝗂𝖾𝗏(x),BT𝗂𝖾𝗏(x),AB=}\mathsf{Cl}(X)=\{[x;A,B]\mid x\in X,\;A\subseteq S_{\mathsf{iev}(x)},\;B\subseteq T_{\mathsf{iev}(x)},\;A\cap B=\emptyset\};

  • ev([x;A,B])=ev(x)(AB)\textup{{ev}}([x;A,B])=\textup{{ev}}(x)-(A\cup B) for [x;A,B]𝖢𝗅(X)[x;A,B]\in\mathsf{Cl}(X);

  • δC0([x;A,B])=[δCS𝗂𝖾𝗏(x)0(x);A(CS𝗂𝖾𝗏(x)),B]\delta^{0}_{C}([x;A,B])=[\delta^{0}_{C-S_{\mathsf{iev}(x)}}(x);A\cup(C\cap S_{\mathsf{iev}(x)}),B] for Cev([x;A,B])C\subseteq\textup{{ev}}([x;A,B]);

  • δD1([x;A,B])=[δDT𝗂𝖾𝗏(x)1(x);A,B(DT𝗂𝖾𝗏(x))]\delta^{1}_{D}([x;A,B])=[\delta^{1}_{D-T_{\mathsf{iev}(x)}}(x);A,B\cup(D\cap T_{\mathsf{iev}(x)})] for Dev([x;A,B])D\subseteq\textup{{ev}}([x;A,B]);

  • 𝖢𝗅(X)={[x;,]xX}\top_{\mathsf{Cl}(X)}=\{[x;\emptyset,\emptyset]\mid x\in\bot_{X}\}, 𝖢𝗅(X)={[x;,]xX}\top_{\mathsf{Cl}(X)}=\{[x;\emptyset,\emptyset]\mid x\in\top_{X}\}.

Intuitively, closure fills in the missing cells of the iHDA XX. Lower face maps δC0\delta^{0}_{C} of 𝖢𝗅(X)\mathsf{Cl}(X) take as much of the face map of XX as possible, while the remaining events are added to the set AA; similarly for upper faces.

Lemma 7.10

Let XX be an iHDA and x,yXx,y\in X. The function Φ:𝖯𝖺𝗍𝗁(X)xy𝖯𝖺𝗍𝗁(𝖢𝗅(X))[x;,][y;,]\Phi:\mathsf{Path}(X)_{x}^{y}\to\mathsf{Path}(\mathsf{Cl}(X))_{[x;\emptyset,\emptyset]}^{[y;\emptyset,\emptyset]},

Φ(x0,φ1,x1,,xn)=([x0;,],φ1,[x1;,],,[xn;,])\Phi(x_{0},\varphi_{1},x_{1},\dotsc,x_{n})=([x_{0};\emptyset,\emptyset],\varphi_{1},[x_{1};\emptyset,\emptyset],\dotsc,[x_{n};\emptyset,\emptyset])

is a bijection. Moreover, ev(α)=ev(Φ(α))\textup{{ev}}(\alpha)=\textup{{ev}}(\Phi(\alpha)) for all α\alpha.

Proof 7.11

Injectivity of Φ\Phi is clear. Let α=([x0,A0,B0],φ1,,φn,[xn,An,Bn])𝖯𝖺𝗍𝗁(𝖢𝗅(X))[x;,][y;,]\alpha=([x_{0},A_{0},B_{0}],\varphi_{1},\dotsc,\varphi_{n},[x_{n},A_{n},B_{n}])\in\mathsf{Path}(\mathsf{Cl}(X))_{[x;\emptyset,\emptyset]}^{[y;\emptyset,\emptyset]}. For every step ([xk;Ak,Bk],φk,[xk+1;Ak+1,Bk+1])([x_{k};A_{k},B_{k}],\varphi_{k},[x_{k+1};A_{k+1},B_{k+1}]) it follows from the definition of face maps that |Ak||Ak+1||A_{k}|\geq|A_{k+1}| and |Bk||Bk+1||B_{k}|\leq|B_{k+1}|. Thus, AkA0=A_{k}\subseteq A_{0}=\emptyset and BkBn=B_{k}\subseteq B_{n}=\emptyset for all kk and then α=Φ(x0,φ1,x1,,xn)\alpha=\Phi(x_{0},\varphi_{1},x_{1},\dotsc,x_{n}). The second claim is obvious.

Lemma 7.12 ([16, Prop. 11.4])

For any iHDA XX, 𝖫𝖺𝗇𝗀(𝖢𝗅(X))=𝖫𝖺𝗇𝗀(X)\mathsf{Lang}(\mathsf{Cl}(X))=\mathsf{Lang}(X).

The following two lemmas are analogues to Lemmas 4.15 and 4.17 for iHDAs.

Lemma 7.13

Let XX be an iHDA, x,yXx,y\in X, α𝖯𝖺𝗍𝗁(X)xy\alpha\in\mathsf{Path}(X)_{x}^{y} and PQ=ev(α)P\sqsubseteq Q=\textup{{ev}}(\alpha). Then there exists β𝖯𝖺𝗍𝗁(X)xy\beta\in\mathsf{Path}(X)_{x}^{y} such that ev(β)=P\textup{{ev}}(\beta)=P.

Proof 7.14

This follows from Lemma 4.15 applied to 𝖢𝗅(X)\mathsf{Cl}(X) and Lemma 7.10.

Lemma 7.15

Let XX be an iHDA, x,yXx,y\in X and γ𝖯𝖺𝗍𝗁(X)xy\gamma\in\mathsf{Path}(X)_{x}^{y}. Assume that ev(γ)=PQ\textup{{ev}}(\gamma)=P*Q for ipomsets PP and QQ. Then there exist paths α𝖯𝖺𝗍𝗁(X)x\alpha\in\mathsf{Path}(X)_{x} and β𝖯𝖺𝗍𝗁(X)y\beta\in\mathsf{Path}(X)^{y} such that ev(α)=P\textup{{ev}}(\alpha)=P, ev(β)=Q\textup{{ev}}(\beta)=Q and 𝗍𝗀𝗍(α)=𝗌𝗋𝖼(β)\mathsf{tgt}(\alpha)=\mathsf{src}(\beta).

Proof 7.16

We apply Lemma 4.17 to the path Φ(γ)\Phi(\gamma) and obtain that there are paths α\alpha^{\prime} and β\beta^{\prime} in 𝖢𝗅(X)\mathsf{Cl}(X) such that ev(α)=P\textup{{ev}}(\alpha^{\prime})=P, ev(β)=Q\textup{{ev}}(\beta^{\prime})=Q and 𝗍𝗀𝗍(α)=𝗌𝗋𝖼(β)\mathsf{tgt}(\alpha^{\prime})=\mathsf{src}(\beta^{\prime}). By Lemma 7.10, α=Φ1(α)\alpha=\Phi^{-1}(\alpha^{\prime}) and β=Φ1(β)\beta=\Phi^{-1}(\beta^{\prime}) satisfy the required conditions.

7.4 Essential iHDAs

As for HDAs, we say that a cell xXx\in X of an iHDA XX is essential if it accessible and coaccessible. Let 𝖾𝗌𝗌(X)X\mathsf{ess}(X)\subseteq X be the set of essential cells. We show below that, contrary to the situation for HDAs, 𝖾𝗌𝗌(X)\mathsf{ess}(X) is itself an iHDA.

Let 𝖽𝗂𝗌𝗍(x,y)\mathsf{dist}(x,y) be the minimal length of a path from xx to yy. A cell yy is accessible if 𝖽𝗂𝗌𝗍(x,y)<\mathsf{dist}(x,y)<\infty for some xXx\in\bot_{X} and is coaccessible if 𝖽𝗂𝗌𝗍(y,z)<\mathsf{dist}(y,z)<\infty for some zXz\in\top_{X}. The following follows directly.

Lemma 7.17

Let yX[SUT]y\in X[{\vphantom{U}}_{S}U_{T}], AUSA\subseteq U-S and BUTB\subseteq U-T.

  • For any xXx\in X, 𝖽𝗂𝗌𝗍(x,y)𝖽𝗂𝗌𝗍(x,δA0(y))+1\mathsf{dist}(x,y)\leq\mathsf{dist}(x,\delta^{0}_{A}(y))+1 and 𝖽𝗂𝗌𝗍(x,δB1(y))𝖽𝗂𝗌𝗍(x,y)+1\mathsf{dist}(x,\delta^{1}_{B}(y))\leq\mathsf{dist}(x,y)+1.

  • For any zXz\in X, 𝖽𝗂𝗌𝗍(y,z)𝖽𝗂𝗌𝗍(δB1(y),z)+1\mathsf{dist}(y,z)\leq\mathsf{dist}(\delta^{1}_{B}(y),z)+1 and 𝖽𝗂𝗌𝗍(δA0(y),z)𝖽𝗂𝗌𝗍(y,z)+1\mathsf{dist}(\delta^{0}_{A}(y),z)\leq\mathsf{dist}(y,z)+1.

The next lemma only holds because of the special properties of start and accept cells in iHDAs.

Lemma 7.18

Let yX[SUT]y\in X[{\vphantom{U}}_{S}U_{T}], AUSA\subseteq U-S and BUTB\subseteq U-T.

  • For every xXx\in\bot_{X}, 𝖽𝗂𝗌𝗍(x,δA0(y))𝖽𝗂𝗌𝗍(x,y)\mathsf{dist}(x,\delta^{0}_{A}(y))\leq\mathsf{dist}(x,y).

  • For every zXz\in\top_{X}, 𝖽𝗂𝗌𝗍(y,z)𝖽𝗂𝗌𝗍(δB1(y),z)\mathsf{dist}(y,z)\geq\mathsf{dist}(\delta^{1}_{B}(y),z).

Proof 7.19

We only show the first inequality; the second is symmetric. We fix xx and proceed by induction on cells yy with respect to 𝖽𝗂𝗌𝗍(x,y)\mathsf{dist}(x,y). If 𝖽𝗂𝗌𝗍(x,y)=0\mathsf{dist}(x,y)=0, then y=xy=x is a start cell. Thus, S=US=U, A=A=\emptyset and δA0(y)=y\delta^{0}_{A}(y)=y.

Now let n=𝖽𝗂𝗌𝗍(x,y)>0n=\mathsf{dist}(x,y)>0. Without loss of generality we may assume that A={a}A=\{a\}. Let α\alpha be a path from xx to yy of length nn, and let α=βγ\alpha=\beta*\gamma be a decomposition with γ\gamma having length 11. Clearly, 𝖽𝗂𝗌𝗍(x,𝗌𝗋𝖼(γ))=n1\mathsf{dist}(x,\mathsf{src}(\gamma))=n-1. Consider three cases:

  • γ=(δB0(y)By)\gamma=(\delta^{0}_{B}(y)\mathrel{\nearrow^{B}}y) and aBa\in B. Then β(δB0(y)Baδa0(y))\beta*(\delta^{0}_{B}(y)\mathrel{\nearrow^{B-a}}\delta^{0}_{a}(y)) has length nn.

  • γ=(δB0(y)By)\gamma=(\delta^{0}_{B}(y)\mathrel{\nearrow^{B}}y) and aBa\not\in B. Then 𝖽𝗂𝗌𝗍(x,δa0(δB0(y)))=𝖽𝗂𝗌𝗍(x,δB0(δa0(y)))n1\mathsf{dist}(x,\delta^{0}_{a}(\delta^{0}_{B}(y)))=\mathsf{dist}(x,\delta_{B}^{0}(\delta^{0}_{a}(y)))\leq n-1 by induction, and then by Lemma 7.17, 𝖽𝗂𝗌𝗍(x,δa0(y))𝖽𝗂𝗌𝗍(x,δB0(δa0(y)))+1n\mathsf{dist}(x,\delta^{0}_{a}(y))\leq\mathsf{dist}(x,\delta_{B}^{0}(\delta^{0}_{a}(y)))+1\leq n.

  • γ=(zBy)\gamma=(z\mathrel{\searrow_{B}}y). Then y=δB1(z)y=\delta^{1}_{B}(z), and 𝖽𝗂𝗌𝗍(x,δa0(z))𝖽𝗂𝗌𝗍(x,z)=n1\mathsf{dist}(x,\delta^{0}_{a}(z))\leq\mathsf{dist}(x,z)=n-1 by induction. By Lemma 7.17, 𝖽𝗂𝗌𝗍(x,δa0(y))=𝖽𝗂𝗌𝗍(x,δB1(δa0(z)))𝖽𝗂𝗌𝗍(x,δa0(z))+1n\mathsf{dist}(x,\delta^{0}_{a}(y))=\mathsf{dist}(x,\delta^{1}_{B}(\delta^{0}_{a}(z)))\leq\mathsf{dist}(x,\delta^{0}_{a}(z))+1\leq n.

Proposition 7.20

For every iHDA XX, 𝖾𝗌𝗌(X)X\mathsf{ess}(X)\subseteq X is an iHDA.

Proof 7.21

Let yX[SUT]y\in X[{\vphantom{U}}_{S}U_{T}] be essential. We show that all faces of yy are also essential. There exist xXx\in\bot_{X} and zXz\in\top_{X} such that 𝖽𝗂𝗌𝗍(x,y),𝖽𝗂𝗌𝗍(y,z)<\mathsf{dist}(x,y),\mathsf{dist}(y,z)<\infty. By Lemmas 7.17 and 7.18, 𝖽𝗂𝗌𝗍(x,δA0(y)),𝖽𝗂𝗌𝗍(x,δB1(y))<\mathsf{dist}(x,\delta^{0}_{A}(y)),\linebreak\mathsf{dist}(x,\delta^{1}_{B}(y))<\infty and 𝖽𝗂𝗌𝗍(δA0(y),z),𝖽𝗂𝗌𝗍(δB1(y),z)<\mathsf{dist}(\delta^{0}_{A}(y),z),\mathsf{dist}(\delta^{1}_{B}(y),z)<\infty for all AUSA\subseteq U-S, BUTB\subseteq U-T as well. Thus, all faces of yy are essential, which concludes the proof.

8 Myhill-Nerode construction for iHDAs

We now develop a Myhill-Nerode construction which for a given regular language LL constructs an iHDA 𝗂𝖬𝖭(L)\mathsf{iMN}(L). Our construction proceeds in several steps. First we construct a universal iHDA 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} which recognises all ipomsets, then we restrict 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} depending on the given language, and finally we quotient this 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) by an equivalence relation which preserves its language and ensures that the quotient is finite if LL is regular.

8.1 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree}

The universal iHDA 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} is defined as follows:

𝗂𝖥𝗋𝖾𝖾={(P,Z)PiiPoms,ZTP},𝗂𝖾𝗏(P,Z)=(SPTP,TP,Z),\displaystyle\mathsf{iFree}=\{(P,Z)\mid P\in\text{{{iiPoms}}},\;Z\subseteq T_{P}\},\qquad\mathsf{iev}(P,Z)=(S_{P}\cap T_{P},T_{P},Z),
δA0(P,Z)=(PA,ZA) for (P,Z)𝗂𝖥𝗋𝖾𝖾[SUT],AUSTPSP,\displaystyle\delta^{0}_{A}(P,Z)=(P-A,Z-A)\text{ for }(P,Z)\in\mathsf{iFree}[{\vphantom{U}}_{S}U_{T}],A\subseteq U-S\cong T_{P}-S_{P},
δB1(P,Z)=(PTPB,Z) for (P,Z)𝗂𝖥𝗋𝖾𝖾[SUT],BUTTPZ,\displaystyle\delta^{1}_{B}(P,Z)=(P*{T_{P}}{\downarrow}_{B},Z)\text{ for }(P,Z)\in\mathsf{iFree}[{\vphantom{U}}_{S}U_{T}],B\subseteq U-T\cong T_{P}-Z,
𝗂𝖥𝗋𝖾𝖾={(idU,T)TU},𝗂𝖥𝗋𝖾𝖾={(P,TP)PiiPoms}.\displaystyle\bot_{\mathsf{iFree}}=\{(\textup{{id}}_{U},T)\mid T\subseteq U\in\square\},\qquad\top_{\mathsf{iFree}}=\{(P,T_{P})\mid P\in\text{{{iiPoms}}}\}.

It is clear that 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} is well-defined; the precubical identities follow easily from Lemmas 5.15 and 5.16. We need some lemmas about existence and uniqueness (up to subsumption) of paths in 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree}.

Lemma 8.1

Let PP and QQ be ipomsets such that TQSPT_{Q}\cong S_{P}, let ZTPZ\subseteq T_{P}, and Y=SPZTQZTQY=S_{P}\cap Z\cong T_{Q}\cap Z\subseteq T_{Q}. There exists a path α𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(Q,Y)(QP,Z)\alpha\in\mathsf{Path}(\mathsf{iFree})_{(Q,Y)}^{(QP,Z)} with ev(α)=P\textup{{ev}}(\alpha)=P.

Proof 8.2

We use induction on a step decomposition of PP. If P=idTQP=\textup{{id}}_{T_{Q}}, then Y=ZY=Z, and α=((Q,Y))\alpha=((Q,Y)) satisfies the required conditions. If P=PAUP=P^{\prime}*{}_{A\!}{\uparrow}{U}, then P=PAP^{\prime}=P-A and by induction there exists β𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(PQ,Y)(QP,ZA)\beta\in\mathsf{Path}(\mathsf{iFree})_{(PQ,Y)}^{(QP^{\prime},Z-A)} such that ev(β)=P\textup{{ev}}(\beta)=P^{\prime}. Thus, ev(β((QP,ZA)A(QP,Z))=P\textup{{ev}}(\beta*((QP^{\prime},Z-A)\mathrel{\nearrow^{A}}(QP,Z))=P. Finally, if P=PTPBP=P^{\prime}*{T_{P^{\prime}}}{\downarrow}_{B}, TPTPBT_{P}\cong T_{P^{\prime}}-B, then ev(β((QP,Z)B(QP,Z))=P\textup{{ev}}(\beta*((QP^{\prime},Z)\mathrel{\searrow_{B}}(QP,Z))=P.

Lemma 8.3

For every (P,Z)𝗂𝖥𝗋𝖾𝖾(P,Z)\in\mathsf{iFree} and YSPY\subseteq S_{P} we have

{ev(α)|α𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(idSP,Y)(P,Z)}={{P}if Y=SPZ,otherwise.\big{\{}\textup{{ev}}(\alpha)\mathrel{\big{|}}\alpha\in\mathsf{Path}(\mathsf{iFree})_{(\textup{{id}}_{S_{P}},Y)}^{(P,Z)}\big{\}}=\begin{cases}\{P\}\mathord{\downarrow}&\text{if $Y=S_{P}\cap Z$,}\\ \emptyset&\text{otherwise.}\end{cases}
Proof 8.4

(\subseteq). It is enough to show that for every path α𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(idV,Y)(P,Z)\alpha\in\mathsf{Path}(\mathsf{iFree})_{(\textup{{id}}_{V},Y)}^{(P,Z)} we have VSPV\cong S_{P}, ev(α)P\textup{{ev}}(\alpha)\sqsubseteq P and Y=SPZY=S_{P}\cap Z. The first statement is clear; the rest we prove by induction on the length of α\alpha. If α\alpha is constant, then P=idSPP=\textup{{id}}_{S_{P}}, Y=ZY=Z, and thus ev(α)=idSP=P\textup{{ev}}(\alpha)=\textup{{id}}_{S_{P}}=P. If α=β((PA,ZA)A(P,Z))\alpha=\beta*((P-A,Z-A)\mathrel{\nearrow^{A}}(P,Z)) is a concatenation with an upstep, then

ev(α)=ev(β)ATPind.(PA)ATPL. 5.14P\textup{{ev}}(\alpha)=\textup{{ev}}(\beta)*{}_{A\!}{\uparrow}{T_{P}}\overset{\text{ind.}}{\sqsubseteq}(P-A)*{}_{A\!}{\uparrow}{T_{P}}\overset{\text{L.\@ \ref{l:MinExt}}}{\sqsubseteq}P

and Y=ind.S(PA)(ZA)=SPZY\overset{\text{ind.}}{=}S_{(P-A)}\cap(Z-A)=S_{P}\cap Z, since ASP=A\cap S_{P}=\emptyset. If α=β((Q,Z)B(P,Z))\alpha=\beta*((Q,Z)\mathrel{\searrow_{B}}(P,Z)) and PQTQBP\cong Q*{T_{Q}}{\downarrow}_{B}, then

ev(α)=ev(β)TQBind.QTQB=P\textup{{ev}}(\alpha)=\textup{{ev}}(\beta)*{T_{Q}}{\downarrow}_{B}\overset{\text{ind.}}{\sqsubseteq}Q*{T_{Q}}{\downarrow}_{B}=P

and Y=SQZ=SPZY=S_{Q}\cap Z=S_{P}\cap Z.

(\supseteq). This follows from Lemma 8.1 for Q=idSPQ=\textup{{id}}_{S_{P}} and Lemma 7.13.

Corollary 8.5

𝖫𝖺𝗇𝗀(𝗂𝖥𝗋𝖾𝖾)=iiPoms\mathsf{Lang}(\mathsf{iFree})=\text{{{iiPoms}}}.

Proof 8.6

For every ipomset PP there is a path α𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(idSP,SPTP)(P,TP)\alpha\in\mathsf{Path}(\mathsf{iFree})_{(\textup{{id}}_{S_{P}},S_{P}\cap T_{P})}^{(P,T_{P})} such that ev(α)=P\textup{{ev}}(\alpha)=P.

8.2 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L)

Fix a language LL; we will restrict 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} to an iHDA that recognises LL. Let L={(P,TP)PL}\top_{L}=\{(P,T_{P})\mid P\in L\} and define

𝗂𝖥𝗋𝖾𝖾(L)=𝖾𝗌𝗌((𝗂𝖥𝗋𝖾𝖾,𝗂𝖥𝗋𝖾𝖾,L)).\mathsf{iFree}(L)=\mathsf{ess}((\mathsf{iFree},\bot_{\mathsf{iFree}},\top_{L})).

That is, we restrict accept cells of 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} to the ones that accept ipomsets in LL and then reduce to the essential part.

Lemma 8.7

𝖫𝖺𝗇𝗀(𝗂𝖥𝗋𝖾𝖾(L))=L\mathsf{Lang}(\mathsf{iFree}(L))=L.

Proof 8.8

This follows from Lemma 8.3:

𝖫𝖺𝗇𝗀(𝗂𝖥𝗋𝖾𝖾(L))=PL{ev(α)|α𝖯𝖺𝗍𝗁(𝗂𝖥𝗋𝖾𝖾)(idSP,SPTP)(P,TP)}=PL{P}=L.\mathsf{Lang}(\mathsf{iFree}(L))=\bigcup_{P\in L}\big{\{}\textup{{ev}}(\alpha)\mathrel{\big{|}}\alpha\in\mathsf{Path}(\mathsf{iFree})_{(\textup{{id}}_{S_{P}},S_{P}\cap T_{P})}^{(P,T_{P})}\big{\}}=\bigcup_{P\in L}\{P\}\mathord{\downarrow}=L.

We provide a description of 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) in terms of quotient languages. For an ipomset PP and ZTPZ\subseteq T_{P} define the partial quotient language by

P\ZL\displaystyle P\mathop{\backslash^{\!Z}}L ={QiiPomsPQL,SQTQ=Z}={QP\LSQTQ=Z}.\displaystyle=\{Q\in\text{{{iiPoms}}}\mid PQ\in L,S_{Q}\cap T_{Q}=Z\}=\{Q\in P\mathop{\backslash^{\!}}L\mid S_{Q}\cap T_{Q}=Z\}.

In other words, P\ZLP\mathop{\backslash^{\!Z}}L consists of all “continuations” of PP that do not terminate events of ZZ (and terminate all other target events of PP). Obviously, P\L=ZTPP\ZLP\mathop{\backslash^{\!}}L=\bigsqcup_{Z\subseteq T_{P}}P\mathop{\backslash^{\!Z}}L.

Example 8.9

Let L={[ab]}{ab}={[ab],ab,ab}L=\{\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}{\downarrow}\cup\{ab\}=\{\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],ab\vbox{\hbox{\tiny$\bullet$}},ab\}. Then P\L=P\LP\mathop{\backslash^{\!\emptyset}}L=P\mathop{\backslash^{\!}}L whenever TP=T_{P}=\emptyset, and

a\L\displaystyle a\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!\emptyset}}L ={[ab]}{ab},\displaystyle=\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}{\downarrow}\cup\{\vbox{\hbox{\tiny$\bullet$}}ab\}, a\aL\displaystyle\qquad a\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!a}}L =,\displaystyle=\emptyset,
b\L\displaystyle b\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!\emptyset}}L =,\displaystyle=\emptyset, b\bL\displaystyle\qquad b\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!b}}L ={[ab]},\displaystyle=\{\left[\begin{smallmatrix}&a&\\ \vbox{\hbox{\tiny$\bullet$}}\!\!&b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\},
ab\L\displaystyle ab\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!\emptyset}}L ={b},\displaystyle=\{\vbox{\hbox{\tiny$\bullet$}}b\}, ab\bL\displaystyle\qquad ab\vbox{\hbox{\tiny$\bullet$}}\mathop{\backslash^{\!b}}L ={b},\displaystyle=\{\vbox{\hbox{\tiny$\bullet$}}b\vbox{\hbox{\tiny$\bullet$}}\},

[ab]\bL={[ab]}\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\mathop{\backslash^{\!b}}L=\{\left[\begin{smallmatrix}\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\\ \vbox{\hbox{\tiny$\bullet$}}\!\!&b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\}, and [ab]\L=[ab]\aL=[ab]\a,bL=\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\mathop{\backslash^{\!\emptyset}}L=\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\mathop{\backslash^{\!a}}L=\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\end{smallmatrix}\right]\mathop{\backslash^{\!a,b}}L=\emptyset.

Lemma 8.10

A cell (P,Z)𝗂𝖥𝗋𝖾𝖾(P,Z)\in\mathsf{iFree} belongs to 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) if and only if P\ZLP\mathop{\backslash^{\!Z}}L\neq\emptyset.

Proof 8.11

By construction, (P,Z)𝗂𝖥𝗋𝖾𝖾(P,Z)\in\mathsf{iFree} is accessible. We show that (P,Z)(P,Z) is coaccessible if and only if P\ZLP\mathop{\backslash^{\!Z}}L\neq\emptyset. If P\ZLP\mathop{\backslash^{\!Z}}L\neq\emptyset, then there is QQ such that PQLPQ\in L and SQTQ=ZS_{Q}\cap T_{Q}=Z. By Lemma 8.1, there exists a path from (P,Z)(P,Z) to (PQ,TQ)(PQ,T_{Q}), showing that (P,Z)(P,Z) is coaccessible.

If (P,Z)(P,Z) is coaccessible, then there is a path β\beta in 𝗂𝖥𝗋𝖾𝖾\mathsf{iFree} with 𝗌𝗋𝖼(β)=(P,Z)\mathsf{src}(\beta)=(P,Z) and 𝗍𝗀𝗍(β)L\mathsf{tgt}(\beta)\in\top_{L}. Let Q=ev(β)Q=\textup{{ev}}(\beta). We also have a path α\alpha from 𝗂𝖥𝗋𝖾𝖾\bot_{\mathsf{iFree}} to (P,Z)(P,Z). The concatenation αβ\alpha*\beta is a path in 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) with ev(αβ)=PQ\textup{{ev}}(\alpha*\beta)=PQ. Hence PQLPQ\in L. Further, TQ=ev(𝗍𝗀𝗍(αβ))=ZT_{Q}=\textup{{ev}}(\mathsf{tgt}(\alpha*\beta))=Z, since 𝗍𝗀𝗍(αβ)\mathsf{tgt}(\alpha*\beta) is an accept cell. That is, QP\ZLQ\in P\mathop{\backslash^{\!Z}}L.

Example 8.12

Let L={[ab],abc}={[ab],ab,ba,abc}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],abc\}\mathord{\downarrow}=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],ab,ba,abc\} be the language of Example 5.8. We construct 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L). First, note that 𝗂𝖥𝗋𝖾𝖾(L)[SUT]=\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}]=\emptyset if SS\neq\emptyset, given that P\L=P\mathop{\backslash^{\!}}L=\emptyset if SPS_{P}\neq\emptyset. Similarly, 𝗂𝖥𝗋𝖾𝖾(L)[SUT]=\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}]=\emptyset if TT\neq\emptyset, as all ipomsets in LL have empty terminating interface.

That is, 𝗂𝖥𝗋𝖾𝖾(L)[U]\mathsf{iFree}(L)[U] is only non-empty for conclists UU (without interfaces). For these,

𝗂𝖥𝗋𝖾𝖾(L)[]\displaystyle\mathsf{iFree}(L)[\emptyset] ={(ε,),(a,),(b,),(ab,),(ba,),([ab],),(abc,)},\displaystyle=\{(\varepsilon,\emptyset),(a,\emptyset),(b,\emptyset),(ab,\emptyset),(ba,\emptyset),(\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],\emptyset),(abc,\emptyset)\},
𝗂𝖥𝗋𝖾𝖾(L)[a]\displaystyle\mathsf{iFree}(L)[a] ={(a,),(ba,),([ab],)},\displaystyle=\{(a\vbox{\hbox{\tiny$\bullet$}},\emptyset),(ba\vbox{\hbox{\tiny$\bullet$}},\emptyset),(\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b\end{smallmatrix}\right],\emptyset)\},
𝗂𝖥𝗋𝖾𝖾(L)[b]\displaystyle\mathsf{iFree}(L)[b] ={(b,),(ab,),([ab],)},\displaystyle=\{(b\vbox{\hbox{\tiny$\bullet$}},\emptyset),(ab\vbox{\hbox{\tiny$\bullet$}},\emptyset),(\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\emptyset)\},
𝗂𝖥𝗋𝖾𝖾(L)[c]\displaystyle\mathsf{iFree}(L)[c] ={(abc,)},\displaystyle=\{(abc\vbox{\hbox{\tiny$\bullet$}},\emptyset)\},
𝗂𝖥𝗋𝖾𝖾(L)[[ab]]\displaystyle\mathsf{iFree}(L)[\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]] ={([ab],)}.\displaystyle=\{(\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\emptyset)\}.

(Compare these with the cells of 𝖬𝖭(L)\mathsf{MN}(L) in Figure 6.) Geometrically, 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) looks as in Figure 9; note that it is an HDA in the sense of Remark 7.1.

ε\varepsilon\botaabbbaba\top[ab]\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]\topabab\topabcabc\topaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}[ab]\left[\begin{smallmatrix}a\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]​​​​baba\vbox{\hbox{\tiny$\bullet$}}[ab]\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b\end{smallmatrix}\right]​​​abab\vbox{\hbox{\tiny$\bullet$}}abcabc\vbox{\hbox{\tiny$\bullet$}}[ab]\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]

Figure 9: 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) for L={[ab],abc}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],abc\}\mathord{\downarrow}, see Example 8.12.

8.3 𝗂𝖬𝖭(L)\mathsf{iMN}(L)

The iHDA 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) is infinite as soon as LL is. (It contains at least one accept cell for every element of LL.) Analogously to the construction in Section 5.1, we introduce an equivalence relation depending on LL. Now however, the relation is not defined on ipomsets but directly on 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L). In order for the quotient iHDA to be well-defined, we will need our equivalence to be a congruence in the sense that faces of equivalent cells are again equivalent.

We say that (P,Z),(Q,Y)𝗂𝖥𝗋𝖾𝖾(L)[SUT](P,Z),(Q,Y)\in\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}] are weakly equivalent, and write (P,Z)L(Q,Y)(P,Z)\sim_{L}(Q,Y), if P\ZL=Q\YLP\mathop{\backslash^{\!Z}}L=Q\mathop{\backslash^{\!Y}}L. (This is the analogue of the relation L\sim_{L} of Section 5.1.) This relation is not necessarily a congruence, for example, if L={[ab],aa}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right],aa\}\mathord{\downarrow} (cf. Example 5.9), then (aa,)L(ba,)(aa\vbox{\hbox{\tiny$\bullet$}},\emptyset)\sim_{L}(ba\vbox{\hbox{\tiny$\bullet$}},\emptyset) but

δa0(aa,)=(a,)≁L(b,)=δa0(ba,).\delta^{0}_{a}(aa\vbox{\hbox{\tiny$\bullet$}},\emptyset)=(a,\emptyset)\not\sim_{L}(b,\emptyset)=\delta^{0}_{a}(ba\vbox{\hbox{\tiny$\bullet$}},\emptyset).

Thus we introduce the maximal congruence contained in L\sim_{L}. Say that (P,Z),(Q,Y)𝗂𝖥𝗋𝖾𝖾(L)[SUT](P,Z),(Q,Y)\in\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}] are strongly equivalent, denoted (P,Z)L(Q,Y)(P,Z)\approx_{L}(Q,Y), if

  • δA0(P,Z)LδA0(Q,Y)\delta^{0}_{A}(P,Z)\sim_{L}\delta^{0}_{A}(Q,Y) for all AUSA\subseteq U-S, and

  • δB1(P,Z)LδB1(Q,Y)\delta^{1}_{B}(P,Z)\sim_{L}\delta^{1}_{B}(Q,Y) for all BUTB\subseteq U-T.

The first is equivalent to the condition (PA)\ZAL=(QA)\YAL(P-A)\mathop{\backslash^{\!Z-A}}L=(Q-A)\mathop{\backslash^{\!Y-A}}L for every AUSA\subseteq U-S (cf. the conditions for L\approx_{L} in Section 5.1); and the latter is always satisfied. It is obvious that every congruence contained in L\sim_{L} must be contained in L\approx_{L} as well. Below we show that L\approx_{L} is indeed a congruence, hence the biggest congruence contained in L\sim_{L}, and describe its quotient iHDA.

Lemma 8.13

Let (P,Z),(Q,Y)𝗂𝖥𝗋𝖾𝖾(L)[SUT](P,Z),(Q,Y)\in\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}]. If (P,Z)L(Q,Y)(P,Z)\approx_{L}(Q,Y), then

  1. 1.

    δA0(P,Z)LδA0(Q,Y)\delta^{0}_{A}(P,Z)\approx_{L}\delta^{0}_{A}(Q,Y) for AUSA\subseteq U-S;

  2. 2.

    δB1(P,Z)LδB1(Q,Y)\delta^{1}_{B}(P,Z)\approx_{L}\delta^{1}_{B}(Q,Y) for BUTB\subseteq U-T;

  3. 3.

    (P,Z)𝗂𝖥𝗋𝖾𝖾(L)(P,Z)=(Q,Y)(P,Z)\in\bot_{\mathsf{iFree}(L)}\implies(P,Z)=(Q,Y),

  4. 4.

    (P,Z)𝗂𝖥𝗋𝖾𝖾(L)(Q,Y)𝗂𝖥𝗋𝖾𝖾(L)(P,Z)\in\top_{\mathsf{iFree}(L)}\iff(Q,Y)\in\top_{\mathsf{iFree}(L)}.

Proof 8.14

1. We have δA0(P,Z)=(PA,ZA),δA0(Q,Y)=(QA,YA)𝗂𝖥𝗋𝖾𝖾[(S,UA,TA)]\delta^{0}_{A}(P,Z)=(P-A,Z-A),\delta^{0}_{A}(Q,Y)=(Q-A,Y-A)\in\mathsf{iFree}[(S,U-A,T-A)]. For every CU(SA)C\subseteq U-(S\cup A),

(PA)C\(ZA)CL\displaystyle(P-A)-C\mathop{\backslash^{\!(Z-A)-C}}L =P(AC)\Z(AC)L\displaystyle=P-(A\cup C)\mathop{\backslash^{\!Z-(A\cup C)}}L
LQ(AC)\Y(AC)L=(QA)C\(YA)CL.\displaystyle\approx_{L}Q-(A\cup C)\mathop{\backslash^{\!Y-(A\cup C)}}L=(Q-A)-C\mathop{\backslash^{\!(Y-A)-C}}L.

2. We have δB1(P,Z)=(PUB,Z),δB1(Q,Y)=(QUB,Y)𝗂𝖥𝗋𝖾𝖾[(SB,UB,T)]\delta^{1}_{B}(P,Z)=(P*{U}{\downarrow}_{B},Z),\delta^{1}_{B}(Q,Y)=(Q*{U}{\downarrow}_{B},Y)\in\mathsf{iFree}[(S-B,U-B,T)]. For every CU(SB)C\subseteq U-(S\cup B),

(P,Z)L(Q,Z)\displaystyle(P,Z)\approx_{L}(Q,Z) (PC)\ZCL=(QC)\YCL\displaystyle\implies(P-C)\mathop{\backslash^{\!Z-C}}L=(Q-C)\mathop{\backslash^{\!Y-C}}L
L. 5.12(PC)(UC)B\ZCL=(QC)(UC)B\YCL\displaystyle\overset{\text{L.\@ \ref{l:ExtQ}}}{\implies}(P-C)*{(U-C)}{\downarrow}_{B}\mathop{\backslash^{\!Z-C}}L=(Q-C)*{(U-C)}{\downarrow}_{B}\mathop{\backslash^{\!Y-C}}L
L. 5.15(PUBC)\ZCL=(QUBC)\YCL.\displaystyle\overset{\text{L.\@ \ref{l:TerminatorComp}}}{\iff}(P*{U}{\downarrow}_{B}-C)\mathop{\backslash^{\!Z-C}}L=(Q*{U}{\downarrow}_{B}-C)\mathop{\backslash^{\!Y-C}}L.

3. If (P,Z)𝗂𝖥𝗋𝖾𝖾(L)(P,Z)\in\bot_{\mathsf{iFree}(L)}, then P=idUP=\textup{{id}}_{U} and Z=U=TZ=U=T: the only start cell in 𝗂𝖥𝗋𝖾𝖾(L)[SUT]\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}].

4. If (P,Z)𝗂𝖥𝗋𝖾𝖾(L)(P,Z)\in\top_{\mathsf{iFree}(L)}, then Z=TP=TZ=T_{P}=T and idTP\ZL\textup{{id}}_{T}\in P\mathop{\backslash^{\!Z}}L. Since (P,Z)L(Q,Y)(P,Z)\approx_{L}(Q,Y), we have idTQidTQ\ZL\textup{{id}}_{T_{Q}}\cong\textup{{id}}_{T}\in Q\mathop{\backslash^{\!Z}}L, and Z=Y=TQZ=Y=T_{Q}. Thus, (Y,Z)𝗂𝖥𝗋𝖾𝖾(L)(Y,Z)\in\top_{\mathsf{iFree}(L)}.

We may thus define the iHDA 𝗂𝖬𝖭(L)\mathsf{iMN}(L) as the quotient of 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) by L\approx_{L}:

𝗂𝖬𝖭(L)[SUT]=𝗂𝖥𝗋𝖾𝖾(L)[SUT]/L,\displaystyle\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}]=\mathsf{iFree}(L)[{\vphantom{U}}_{S}U_{T}]/{\approx_{L}},
𝗂𝖬𝖭(L)={(P,Z)(P,Z)𝗂𝖥𝗋𝖾𝖾(L)},𝗂𝖬𝖭(L)={(P,Z)(P,Z)𝗂𝖥𝗋𝖾𝖾(L)}.\displaystyle\bot_{\mathsf{iMN}(L)}=\{\langle{(P,Z)}\rangle\mid(P,Z)\in\bot_{\mathsf{iFree}(L)}\},\qquad\top_{\mathsf{iMN}(L)}=\{\langle{(P,Z)}\rangle\mid(P,Z)\in\top_{\mathsf{iFree}(L)}\}.
Remark 8.15

If all ipomsets in LL have empty interfaces, then 𝗂𝖬𝖭(L)[SUT]=\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}]=\emptyset unless S=T=S=T=\emptyset (cf. Example 8.12). Further, 𝗂𝖬𝖭(L)[U]=𝖾𝗌𝗌(𝖬𝖭(L))[U]\mathsf{iMN}(L)[{\vphantom{U}}_{\emptyset}U_{\emptyset}]=\mathsf{ess}(\mathsf{MN}(L))[U], so both constructions effectively coincide. We will see below that this is not the case if LL contains ipomsets with non-empty interfaces.

8.4 Examples

Cells of iHDAs 𝗂𝖬𝖭(L)\mathsf{iMN}(L) correspond to equivalence classes of pairs (P,Z)(P,Z) for ZPZ\subseteq P. For greater clarity, in the examples below we label a cell (P,Z)\langle{(P,Z)}\rangle only by the ipomset PP but mark target events belonging to ZZ by asterisks instead of bullets: for example (a,{a})(a\vbox{\hbox{\tiny$\bullet$}},\{a\}) is written as aa\ast and (a,)(a\vbox{\hbox{\tiny$\bullet$}},\emptyset) as aa\vbox{\hbox{\tiny$\bullet$}}.

Example 8.16

Let L={a}{aanan0}L=\{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}\}\cup\{\vbox{\hbox{\tiny$\bullet$}}aa^{n}a\vbox{\hbox{\tiny$\bullet$}}\mid n\geq 0\}. Then 𝗂𝖬𝖭(L)\mathsf{iMN}(L) is the iHDA from Example 7.2, and

e1=a=(a,a),e2=a=(a,),e3={(ana,)n0},\displaystyle e_{1}=\vbox{\hbox{\tiny$\bullet$}}a\ast=\langle{(\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}},a)}\rangle,\qquad e_{2}=\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}=\langle{(\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}},\emptyset)}\rangle,\qquad e_{3}=\{(a^{n}a\vbox{\hbox{\tiny$\bullet$}},\emptyset)\mid n\geq 0\},
e4={(ana,a)n0},x={(aan,)n0}.\displaystyle e_{4}=\{(a^{n}a\vbox{\hbox{\tiny$\bullet$}},a)\mid n\geq 0\},\qquad x=\{(\vbox{\hbox{\tiny$\bullet$}}aa^{n},\emptyset)\mid n\geq 0\}.
Example 8.17

For the language L={[ab]}{ab}={[ab],ab,ab}L=\{\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}{\downarrow}\cup\{ab\}=\{\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],ab\vbox{\hbox{\tiny$\bullet$}},ab\} of Example 8.9, 𝗂𝖬𝖭(L)\mathsf{iMN}(L) and 𝖬𝖭(L)\mathsf{MN}(L) are as follows:

ε\varepsilon\botaaababaa\vbox{\hbox{\tiny$\bullet$}}bb\astabab\vbox{\hbox{\tiny$\bullet$}}[ab]Lab{\left[\begin{smallmatrix}a&\\ b&\!\!\ast\!\end{smallmatrix}\right]}\approx_{L}ab\ast[ab]{\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\ast\!\end{smallmatrix}\right]}\top\top𝗂𝖬𝖭(L):\mathsf{iMN}(L):ε\varepsilon\botaayy_{\emptyset}yy_{\emptyset}ababaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}abab\vbox{\hbox{\tiny$\bullet$}}yay_{a\vbox{\hbox{\tiny$\bullet$}}}[ab]{\left[\begin{smallmatrix}a&\\ b&\!\!\bullet\!\end{smallmatrix}\right]}[ab]{\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\bullet\!\end{smallmatrix}\right]}\top\top\top𝖬𝖭(L):\mathsf{MN}(L):

Note that [ab]=([ab],{b})L(ab,{b})=ab\left[\begin{smallmatrix}a&\\ b&\!\!\ast\!\end{smallmatrix}\right]=(\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right],\{b\})\approx_{L}(ab\vbox{\hbox{\tiny$\bullet$}},\{b\})=ab\ast, but [ab]Lab\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\not\approx_{L}ab\vbox{\hbox{\tiny$\bullet$}}: the relation L\approx_{L} on cells of 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) is finer than the strong equivalence L\approx_{L} on ipomsets used in the construction of 𝖬𝖭(L)\mathsf{MN}(L) in Section 5.1.

Example 8.18

Let L={ab,[ab]}L=\{ab,\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]\}. Then 𝗂𝖬𝖭(L)\mathsf{iMN}(L) is the same as 𝗂𝖥𝗋𝖾𝖾(L)\mathsf{iFree}(L) and looks as follows:

ε\varepsilon\botaaabab\topaa\astbb\ast[ab]{\left[\begin{smallmatrix}a&\!\!\ast\\ b&\!\!\ast\end{smallmatrix}\right]}\topaa\vbox{\hbox{\tiny$\bullet$}}abab\vbox{\hbox{\tiny$\bullet$}}
a{\vbox{\hbox{\tiny$\bullet$}}a}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]}aa{\vbox{\hbox{\tiny$\bullet$}}aa}a{\vbox{\hbox{\tiny$\bullet$}}a}[ab]b{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]b}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]}a{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}}\botaa{\vbox{\hbox{\tiny$\bullet$}}aa\vbox{\hbox{\tiny$\bullet$}}}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]}ee[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]}[aabb]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &bb\end{smallmatrix}\right]}\top[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}ee[ab]b{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a\\ &b\end{smallmatrix}\right]b\vbox{\hbox{\tiny$\bullet$}}}aa\vbox{\hbox{\tiny$\bullet$}}aa\ast[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\ast\\ &b\end{smallmatrix}\right]}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[aab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[aabb]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &bb&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}[ab]{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\!\!\ast\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\bota\top\hbox to0.0pt{$\vbox{\hbox{\tiny$\bullet$}}a\ast$\hss}

Figure 10: 𝗂𝖬𝖭(L)\mathsf{iMN}(L) for L={a}{[aab]nn1}L=\{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}\}\cup\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]^{n}\mid n\geq 1\}\mathord{\downarrow}, see Example 8.19.

Example 8.19

Let L={a}{[aab]nn1}L=\{\vbox{\hbox{\tiny$\bullet$}}a\vbox{\hbox{\tiny$\bullet$}}\}\cup\{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&aa&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ &b\end{smallmatrix}\right]^{n}\mid n\geq 1\}\mathord{\downarrow} be the language of Example 5.36, then 𝗂𝖬𝖭(L)\mathsf{iMN}(L) is displayed in Figure 10. Blue arrows marked ee are identified, as well as their corresponding endpoints. We have e=[ab]=abe=\langle{\left[\begin{smallmatrix}\!\vbox{\hbox{\tiny$\bullet$}}\!\!&a&\\ &b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\rangle=\langle{ab\vbox{\hbox{\tiny$\bullet$}}}\rangle and ev(e)=b\textup{{ev}}(e)={\vphantom{b}}_{\emptyset}b_{\emptyset}.

8.5 𝗂𝖬𝖭(L)\mathsf{iMN}(L) recognises LL

For a cell x𝗂𝖬𝖭(L)x\in\mathsf{iMN}(L) denote x\L:=P\ZLx\mathop{\backslash^{\!}}L:=P\mathop{\backslash^{\!Z}}L for any (P,Z)x(P,Z)\in x. This clearly does not depend on the choice of a representative.

Lemma 8.20

Assume that x𝗂𝖬𝖭(L)[SUT]x\in\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}], AUSA\subseteq U-S, BUTB\subseteq U-T. Then

  1. 1.

    Qx\LAUQδA0(x)\LQ\in x\mathop{\backslash^{\!}}L\implies{}_{A\!}{\uparrow}{U}*Q\in\delta^{0}_{A}(x)\mathop{\backslash^{\!}}L,

  2. 2.

    UBQx\LQδB1(x)\L{U}{\downarrow}_{B}*Q\in x\mathop{\backslash^{\!}}L\iff Q\in\delta^{1}_{B}(x)\mathop{\backslash^{\!}}L.

Proof 8.21

Fix (P,Z)x(P,Z)\in x. Recall that (SQ,SQ,SQTQ)UUZ(S_{Q},S_{Q},S_{Q}\cap T_{Q})\cong{\vphantom{U}}_{U}U_{Z} for every Qx\LQ\in x\mathop{\backslash^{\!}}L. For the first part,

Qx\LQP\ZL\displaystyle Q\in x\mathop{\backslash^{\!}}L\iff Q\in P\mathop{\backslash^{\!Z}}L PQL\displaystyle\iff PQ\in L
(PA)AUQL(Lem. 5.1 & 5.14)\displaystyle\implies(P-A)*{}_{A\!}{\uparrow}{U}*Q\in L\qquad\text{(Lem.\@ \ref{l:QuotIncl} \& \ref{l:MinExt})}
AUQ(PA)\ZAL\displaystyle\iff{}_{A\!}{\uparrow}{U}*Q\in(P-A)\mathop{\backslash^{\!Z-A}}L
AUQδA0(x)\L.\displaystyle\iff{}_{A\!}{\uparrow}{U}*Q\in\delta^{0}_{A}(x)\mathop{\backslash^{\!}}L.

For the second part of the lemma,

QδB1(x)\LQ(PUB)\ZL\displaystyle Q\in\delta^{1}_{B}(x)\mathop{\backslash^{\!}}L\iff Q\in(P*{U}{\downarrow}_{B})\mathop{\backslash^{\!Z}}L PUBQL\displaystyle\iff P*{U}{\downarrow}_{B}*Q\in L
UBQP\ZLUBQx\L.\displaystyle\iff{U}{\downarrow}_{B}*Q\in P\mathop{\backslash^{\!Z}}L\iff{U}{\downarrow}_{B}*Q\in x\mathop{\backslash^{\!}}L.
Lemma 8.22

If α𝖯𝖺𝗍𝗁(𝗂𝖬𝖭(L))\alpha\in\mathsf{Path}(\mathsf{iMN}(L))_{\bot} and 𝗍𝗀𝗍(α)𝗂𝖬𝖭(L)[SUT]\mathsf{tgt}(\alpha)\in\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}], then 𝗍𝗀𝗍(α)\Lev(α)\TL\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\alpha)\mathop{\backslash^{\!T}}L.

Proof 8.23

Induction on the length of the path α\alpha. If α=(x)\alpha=(x) for x=(idU,T)x=\langle{(\textup{{id}}_{U},T)}\rangle, then

x\L=(idU)\TL=ev(α)\TL.x\mathop{\backslash^{\!}}L=(\textup{{id}}_{U})\mathop{\backslash^{\!T}}L=\textup{{ev}}(\alpha)\mathop{\backslash^{\!T}}L.

If α=β(δA0(x)Ax)\alpha=\beta*(\delta^{0}_{A}(x)\mathrel{\nearrow^{A}}x) for x𝗂𝖬𝖭(L)[SUT]x\in\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}] and AUSA\subseteq U-S, then ev(α)=ev(β)AU\textup{{ev}}(\alpha)=\textup{{ev}}(\beta)*{}_{A\!}{\uparrow}{U} and

Qx\LLem. 8.20AUQδA0(x)\Lind.AUQev(β)\TALQev(α)\TL.Q\in x\mathop{\backslash^{\!}}L\overset{\text{Lem.\@ \ref{l:LanguagesOfLowerFaces}}}{\implies}{}_{A\!}{\uparrow}{U}*Q\in\delta^{0}_{A}(x)\mathop{\backslash^{\!}}L\overset{\text{ind.}}{\implies}{}_{A\!}{\uparrow}{U}*Q\in\textup{{ev}}(\beta)\mathop{\backslash^{\!T-A}}L\iff Q\in\textup{{ev}}(\alpha)\mathop{\backslash^{\!T}}L.

If α=β(xBδB1(x))\alpha=\beta*(x\mathrel{\searrow_{B}}\delta^{1}_{B}(x)), then ev(α)=ev(β)UB\textup{{ev}}(\alpha)=\textup{{ev}}(\beta)*{U}{\downarrow}_{B} and

QδB1(x)\LLem. 8.20UBQx\Lind.UBQev(β)\TLQev(α)\TL.Q\in\delta^{1}_{B}(x)\mathop{\backslash^{\!}}L\overset{\text{Lem.\@ \ref{l:LanguagesOfLowerFaces}}}{\iff}{U}{\downarrow}_{B}*Q\in x\mathop{\backslash^{\!}}L\overset{\text{ind.}}{\implies}\!{\!}{\downarrow}_{U}B*Q\in\textup{{ev}}(\beta)\mathop{\backslash^{\!T}}L\iff Q\in\textup{{ev}}(\alpha)\mathop{\backslash^{\!T}}L.
Example 8.24

Let L={[ab]}{baa,cda,cdaa}L=\{\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]\}\mathord{\downarrow}\cup\{baa,cda,cdaa\}, then 𝗂𝖬𝖭(L)\mathsf{iMN}(L) is as follows:

ε{\varepsilon}aabb[ab]\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]ccbabaaa\vbox{\hbox{\tiny$\bullet$}}bb\vbox{\hbox{\tiny$\bullet$}}[ab]{\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b\end{smallmatrix}\right]}[ab]{\left[\begin{smallmatrix}a&\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}cc\vbox{\hbox{\tiny$\bullet$}}cdcd\vbox{\hbox{\tiny$\bullet$}}baba\vbox{\hbox{\tiny$\bullet$}}baabaa\vbox{\hbox{\tiny$\bullet$}}[ab]{\left[\begin{smallmatrix}a&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\\ b&\!\!\vbox{\hbox{\tiny$\bullet$}}\!\end{smallmatrix}\right]}\top\top\bot

Note that there are two paths recognising cdacda. One of them ends at [ab]\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right], yet there is no PP such that cdaPcda\sqsubseteq P and PL[ab]P\approx_{L}\left[\begin{smallmatrix}a\\ b\end{smallmatrix}\right]. This explains why Lemma 8.22 cannot be strengthened.

Lemma 8.25

Let x𝗂𝖬𝖭(L)[SUT]x\in\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{T}]. Then x𝗂𝖬𝖭(L)x\in\top_{\mathsf{iMN}(L)} if and only if idTx\L\textup{{id}}_{T}\in x\mathop{\backslash^{\!}}L.

Proof 8.26

We have x𝗂𝖬𝖭(L)x\in\top_{\mathsf{iMN}(L)} if and only if there exists an ipomset PLP\in L such that x=(P,TP)x=\langle{(P,T_{P})}\rangle and TPU=TT_{P}\cong U=T. But PLP\in L if and only if idTP\TL=x\L\textup{{id}}_{T}\in P\mathop{\backslash^{\!T}}L=x\mathop{\backslash^{\!}}L.

Proposition 8.27

𝖫𝖺𝗇𝗀(𝗂𝖬𝖭(L))=L\mathsf{Lang}(\mathsf{iMN}(L))=L.

Proof 8.28

The quotient map 𝗂𝖥𝗋𝖾𝖾(L)𝗂𝖬𝖭(L)\mathsf{iFree}(L)\to\mathsf{iMN}(L) is an iHDA-map, hence it induces an inclusion of languages. By Lemma 8.7, L=𝖫𝖺𝗇𝗀(𝗂𝖥𝗋𝖾𝖾(L))𝗂𝖬𝖭(L)L=\mathsf{Lang}(\mathsf{iFree}(L))\subseteq\mathsf{iMN}(L).

For the other direction, let α\alpha be an accepting path in 𝗂𝖬𝖭(L)\mathsf{iMN}(L). Since 𝗍𝗀𝗍(α)𝗂𝖬𝖭(L)[SUU]\mathsf{tgt}(\alpha)\in\mathsf{iMN}(L)[{\vphantom{U}}_{S}U_{U}] is an accept cell, there exists QLQ\in L such that 𝗍𝗀𝗍(α)=(Q,TQ)\mathsf{tgt}(\alpha)=\langle{(Q,T_{Q})}\rangle with TQUT_{Q}\cong U. Thus, by Lemma 8.25, idUQ\UL=𝗍𝗀𝗍(α)\L\textup{{id}}_{U}\in Q\mathop{\backslash^{\!U}}L=\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L. By Lemma 8.22, idU𝗍𝗀𝗍(α)\Lev(α)\UL\textup{{id}}_{U}\in\mathsf{tgt}(\alpha)\mathop{\backslash^{\!}}L\subseteq\textup{{ev}}(\alpha)\mathop{\backslash^{\!U}}L, which implies ev(α)L\textup{{ev}}(\alpha)\in L. This proves 𝖫𝖺𝗇𝗀(𝗂𝖬𝖭(L))L\mathsf{Lang}(\mathsf{iMN}(L))\subseteq L.

9 Determinism in iHDAs

The notion of determinism for iHDAs is different from the one for HDAs, given that we do not have to restrict to essential cells. Yet we will show that languages recognised by deterministic HDAs and deterministic iHDAs are the same.

Definition 9.1

An iHDA XX is deterministic if

  1. 1.

    for every UUTI{\vphantom{U}}_{U}U_{T}\in{\mathrm{I}}\mkern-1.0mu\square there is at most one start cell in X[UUT]X[{\vphantom{U}}_{U}U_{T}], and

  2. 2.

    for every SUTI{\vphantom{U}}_{S}U_{T}\in{\mathrm{I}}\mkern-1.0mu\square, AUSA\subseteq U-S and xX[(S,UA,TA)]x\in X[(S,U-A,T-A)], there is at most one cell yX[SUT]y\in X[{\vphantom{U}}_{S}U_{T}] such that x=δA0(y)x=\delta^{0}_{A}(y).

Compared to deterministic HDAs, we now allow one start cell for every pair UTU\supseteq T of source interface and target interface. That is because the information of which events may be terminated in an accepting path is already contained in the target interface of its source cell, cf. Lemma 7.5.

Lemma 9.2

If HDA XX is deterministic, then the iHDA 𝖾𝗌𝗌(𝖱𝖾𝗌(X))\mathsf{ess}(\mathsf{Res}(X)) is also deterministic.

Proof 9.3

The first condition is clear. To prove the second, fix SUTI{\vphantom{U}}_{S}U_{T}\in{\mathrm{I}}\mkern-1.0mu\square, AUSA\subseteq U-S and (x;S,TA)𝖾𝗌𝗌(𝖱𝖾𝗌(X))[(S,UA,TA)](x;S,T-A)\in\mathsf{ess}(\mathsf{Res}(X))[(S,U-A,T-A)]. There is at most one essential yX[U]y\in X[U] such that δA0(y)=x\delta^{0}_{A}(y)=x.

Let (z;S,T)𝖾𝗌𝗌(𝖱𝖾𝗌(X))[SUT](z;S,T)\in\mathsf{ess}(\mathsf{Res}(X))[{\vphantom{U}}_{S}U_{T}] such that δA0(z;S,T)=(x,S,TA)\delta^{0}_{A}(z;S,T)=(x,S,T-A). By definition, δA0(z)=x\delta^{0}_{A}(z)=x, and by Lemma 7.8 we obtain that zz is essential; as a consequence, y=zy=z.

From Lemmas 7.9 and 9.2 we conclude:

Corollary 9.4

If LL is recognised by a deterministic HDA, then it is recognised by a deterministic iHDA.

The following two lemmas provide analogues to the unambiguity Lemma 6.9 for deterministic HDAs.

Lemma 9.5

Let XX be a deterministic iHDA and α,β𝖯𝖺𝗍𝗁(X)\alpha,\beta\in\mathsf{Path}(X)_{\bot}^{\top}. If ev(α)=ev(β)\textup{{ev}}(\alpha)=\textup{{ev}}(\beta), then αβ\alpha\simeq\beta.

Proof 9.6

Denote P=ev(α)=ev(β)P=\textup{{ev}}(\alpha)=\textup{{ev}}(\beta). Without loss of generality we may assume that α=α1αn\alpha=\alpha_{1}*\dotsm*\alpha_{n} and β=β1βm\beta=\beta_{1}*\dotsm*\beta_{m} are sparse. We show that n=mn=m and αk=βk\alpha_{k}=\beta_{k} for all kk which implies the claim.

Both P=ev(α1)ev(αn)P=\textup{{ev}}(\alpha_{1})*\dotsm*\textup{{ev}}(\alpha_{n}) and P=ev(β1)ev(βm)P=\textup{{ev}}(\beta_{1})*\dotsm*\textup{{ev}}(\beta_{m}) are sparse step decomposition of PP. Proposition 3.8 implies that m=nm=n and ev(αk)=ev(βk)\textup{{ev}}(\alpha_{k})=\textup{{ev}}(\beta_{k}) for every kk.

Denote x0=𝗌𝗋𝖼(α)=𝗌𝗋𝖼(α1)x_{0}=\mathsf{src}(\alpha)=\mathsf{src}(\alpha_{1}), xk=𝗍𝗀𝗍(αk)=𝗌𝗋𝖼(αk+1)x_{k}=\mathsf{tgt}(\alpha_{k})=\mathsf{src}(\alpha_{k+1}), xn=𝗍𝗀𝗍(α)=𝗍𝗀𝗍(αn)x_{n}=\mathsf{tgt}(\alpha)=\mathsf{tgt}(\alpha_{n}) and y0=𝗌𝗋𝖼(β)=𝗌𝗋𝖼(β1)y_{0}=\mathsf{src}(\beta)=\mathsf{src}(\beta_{1}), yk=𝗍𝗀𝗍(βk)=𝗌𝗋𝖼(βk+1)y_{k}=\mathsf{tgt}(\beta_{k})=\mathsf{src}(\beta_{k+1}), yn=𝗍𝗀𝗍(β)=𝗍𝗀𝗍(βn)y_{n}=\mathsf{tgt}(\beta)=\mathsf{tgt}(\beta_{n}). Fix kk and denote 𝗂𝖾𝗏(xk)=(S,U,T)\mathsf{iev}(x_{k})=(S,U,T). By Lemma 7.5.1, (S,U)(S,U) is determined by Q=ev(α1αk)Q=\textup{{ev}}(\alpha_{1}*\dotsm*\alpha_{k}), and by Lemma 7.5.2, (U,T)(U,T) is determined by R=ev(αk+1αn)R=\textup{{ev}}(\alpha_{k+1}*\dotsm*\alpha_{n}). Similarly, 𝗂𝖾𝗏(yk)\mathsf{iev}(y_{k}) is determined by ev(β1βk)\textup{{ev}}(\beta_{1}*\dotsm*\beta_{k}) and ev(βk+1βn)\textup{{ev}}(\beta_{k+1}*\dotsm*\beta_{n}). As a consequence, 𝗂𝖾𝗏(xk)=𝗂𝖾𝗏(yk)\mathsf{iev}(x_{k})=\mathsf{iev}(y_{k}) for all kk.

We show by induction that xk=ykx_{k}=y_{k}. Since XX is deterministic, 𝗂𝖾𝗏(x0)=𝗂𝖾𝗏(y0)\mathsf{iev}(x_{0})=\mathsf{iev}(y_{0}) implies x0=y0x_{0}=y_{0}. For k>0k>0 assume that xk1=yk1x_{k-1}=y_{k-1}. If ev(αk)=ev(βk)=AU\textup{{ev}}(\alpha_{k})=\textup{{ev}}(\beta_{k})={}_{A\!}{\uparrow}{U} is a starter, then conditions 𝗂𝖾𝗏(xk)=𝗂𝖾𝗏(yk)\mathsf{iev}(x_{k})=\mathsf{iev}(y_{k}) and δA0(xk)=δA0(yk)\delta^{0}_{A}(x_{k})=\delta^{0}_{A}(y_{k}) imply xk=ykx_{k}=y_{k} by determinism of XX. If ev(αk)=ev(βk)=UB\textup{{ev}}(\alpha_{k})=\textup{{ev}}(\beta_{k})={U}{\downarrow}_{B} is a terminator, then xk=δB1(xk1)=δB1(yk1)=ykx_{k}=\delta^{1}_{B}(x_{k-1})=\delta^{1}_{B}(y_{k-1})=y_{k}.

Lemma 9.7

Let XX be a deterministic iHDA and α,β𝖯𝖺𝗍𝗁(X)\alpha,\beta\in\mathsf{Path}(X)_{\bot}. If ev(α)=ev(β)\textup{{ev}}(\alpha)=\textup{{ev}}(\beta) and 𝗂𝖾𝗏(𝗍𝗀𝗍(α))=𝗂𝖾𝗏(𝗍𝗀𝗍(β))\mathsf{iev}(\mathsf{tgt}(\alpha))=\mathsf{iev}(\mathsf{tgt}(\beta)), then αβ\alpha\simeq\beta.

Proof 9.8

Again, we assume that α\alpha and β\beta are sparse. Denote x=𝗍𝗀𝗍(α)x=\mathsf{tgt}(\alpha), y=𝗍𝗀𝗍(β)y=\mathsf{tgt}(\beta), SUT=𝗂𝖾𝗏(x)=𝗂𝖾𝗏(y){\vphantom{U}}_{S}U_{T}=\mathsf{iev}(x)=\mathsf{iev}(y). Modify XX by adding accept cells

x=δUT1(x),y=δUT1(y)X[SUU].x^{\prime}=\delta^{1}_{U-T}(x),y^{\prime}=\delta^{1}_{U-T}(y)\in X[{\vphantom{U}}_{S}U_{U}].

The paths α=α(xUTx)\alpha^{\prime}=\alpha*(x\mathrel{\searrow_{U-T}}x^{\prime}) and β=β(yUTy)\beta^{\prime}=\beta*(y\mathrel{\searrow_{U-T}}y^{\prime}) are accepting, and ev(α)=ev(β)=ev(α)UUT\textup{{ev}}(\alpha^{\prime})=\textup{{ev}}(\beta^{\prime})=\textup{{ev}}(\alpha)*{U}{\downarrow}_{U-T}. Let α′′\alpha^{\prime\prime} and β′′\beta^{\prime\prime} be sparse paths that are equivalent to α\alpha^{\prime} and β\beta^{\prime}, respectively. By Lemma 9.5, α′′=β′′\alpha^{\prime\prime}=\beta^{\prime\prime} and thus both α\alpha^{\prime} and β\beta^{\prime} are refinements of γ:=α′′=β′′\gamma:=\alpha^{\prime\prime}=\beta^{\prime\prime}. If UT=U-T=\emptyset, then α=β=γ\alpha=\beta=\gamma. Otherwise, decompose γ=γω\gamma=\gamma^{\prime}*\omega, where ω\omega is the last step of γ\gamma. Then ω\omega is a downstep (zBx)(z\mathrel{\searrow_{B}}x^{\prime}) such that UTBU-T\subseteq B and α=β=γ(zBTδBT1(z))\alpha=\beta=\gamma^{\prime}*(z\mathrel{\searrow_{B-T}}\delta^{1}_{B-T}(z)).

Lemma 9.9

Let XX be a deterministic iHDA and α,β𝖯𝖺𝗍𝗁(X)\alpha,\beta\in\mathsf{Path}(X)_{\bot}. If ev(α)ev(β)\textup{{ev}}(\alpha)\sqsubseteq\textup{{ev}}(\beta) and 𝗂𝖾𝗏(𝗍𝗀𝗍(α))=𝗂𝖾𝗏(𝗍𝗀𝗍(β))\mathsf{iev}(\mathsf{tgt}(\alpha))=\mathsf{iev}(\mathsf{tgt}(\beta)), then 𝗍𝗀𝗍(α)=𝗍𝗀𝗍(β)\mathsf{tgt}(\alpha)=\mathsf{tgt}(\beta).

Proof 9.10

By Lemma 7.13 there exists α𝖯𝖺𝗍𝗁(X)𝗌𝗋𝖼(β)𝗍𝗀𝗍(β)\alpha^{\prime}\in\mathsf{Path}(X)_{\mathsf{src}(\beta)}^{\mathsf{tgt}(\beta)} such that ev(α)=ev(α)\textup{{ev}}(\alpha^{\prime})=\textup{{ev}}(\alpha). From Lemma 9.7 follows that 𝗍𝗀𝗍(α)=𝗍𝗀𝗍(α)=𝗍𝗀𝗍(β)\mathsf{tgt}(\alpha)=\mathsf{tgt}(\alpha^{\prime})=\mathsf{tgt}(\beta).

Proposition 9.11

If LL is recognised by a deterministic iHDA, then LL is swap-invariant.

Proof 9.12

Like the proof of Proposition 6.13, swapping out the applications of Lemma 4.17 with Lemma 7.15 and the one of Lemma 6.11 with Lemma 9.9.

Together with Theorem 6.5, Corollary 9.4 and Proposition 9.11 now imply that a language is recognised by a deterministic iHDA if and only if it is swap-invariant.

10 Conclusion and further work

We have proven a Myhill-Nerode type theorem for higher-dimensional automata (HDAs), stating that a language is regular if and only if it has finite prefix quotient. We have also introduced deterministic HDAs and shown that not all finite HDAs are determinizable. Lastly, we have seen that both notions are somewhat simpler when using higher-dimensional automata with interfaces (iHDAs), given that no restrictions to essential parts are necessary.

HDAs are arguably simpler than iHDAs, and also somewhat more standard as a model for concurrent computations. On the other hand, we have seen in [15, 16] and now also here that because of the structural axioms of HDAs, certain concepts are easier to state and prove for iHDAs than for HDAs. This same observation has led to the introduction of partial HDAs in [24, 25], of which iHDAs are a more restricted event-based version. In particular, it appears that the trees of Dubut’s [25] are related to some of our iHDA constructions developed here.

Our Myhill-Nerode theorem provides a language-internal criterion for whether a language is regular, and we have developed a similar one to distinguish deterministic languages. Another important aspect is the decidability of these questions, together with other standard problems such as membership or language inclusion. Together with coauthors A. Amrane and H. Bazille, we show in [23] that these are decidable.

Given that we have shown that not all regular languages are deterministic, one might ask for the approximation of deterministic languages by other, less restrictive notions. It is shown in [23] that non-deterministic HDAs may exhibit unbounded ambiguity, but other approaches such as for example history-determinism [26] or residuality [27] remain to be explored. It appears that our Myhill-Nerode HDAs may be residual in some sense, which would open connections to for example automata learning [28, 29, 30].

Acknowledgement

We are indebted to members and associates of the (i)Po(m)set Project111https://ulifahrenberg.github.io/pomsetproject/ for numerous discussions regarding the subjects of this paper; any errors, however, are exclusively ours.

References