diff --git a/tex/FormalLanguageConstrainedReachabilityLectureNotes.tex b/tex/FormalLanguageConstrainedReachabilityLectureNotes.tex index c16085a..a7d3c3d 100644 --- a/tex/FormalLanguageConstrainedReachabilityLectureNotes.tex +++ b/tex/FormalLanguageConstrainedReachabilityLectureNotes.tex @@ -58,7 +58,7 @@ \input{FormalLanguageTheoryIntro} \input{RegularLanguages} \input{Context-Free_Languages} -% \input{Multiple_Context-Free_Languages} % FIXME: Переписать главу +\input{Multiple_Context-Free_Languages} % %\input{ConjunctiveAndBooleanLanguages} \input{FLPQ} \input{RPQ} diff --git a/tex/Multiple_Context-Free_Languages.tex b/tex/Multiple_Context-Free_Languages.tex index 95002a8..2290136 100644 --- a/tex/Multiple_Context-Free_Languages.tex +++ b/tex/Multiple_Context-Free_Languages.tex @@ -1,6 +1,11 @@ -\chapter[Многокомпонентные контекстно-свободные языки]{Многокомпонентные контекстно-свободные языки\footnote{Мы дадим лишь базовые определения и приведём краткий обзор данного класса. В качестве отправной точки для более детального изучения можно порекомендовать материалы, подготовдленные Сильваном Салвати (Sylvain Salvati): \url{https://www.labri.fr/perso/salvati/downloads/cours/esslli/}}} +\chapter[Многокомпонентные контекстно-свободные языки]{Многокомпонентные контекстно-свободные языки} -\textit{Многокомпонентны контекстно-свободные языки} (и соответствующий класс грамматик) --- это строгое расширение контекстно-свободных языков (грамматик), обладающее рядом свойств !!! +\textit{Многокомпонентные контекстно-свободные грамматики (MCFG)} +\footnote{ + Мы дадим лишь базовые определения и приведём краткий обзор данного класса. В качестве отправной точки для более детального изучения можно порекомендовать материалы, подготовленные Сильваном Салвати (Sylvain Salvati) \url{https://www.labri.fr/perso/salvati/downloads/cours/esslli/}. +} --- это строгое расширение контекстно-свободных грамматик для описания синтаксиса естественных языков. + +Класс языков, порождаемых MCFG (называемых многокомпонентными контекстно-свободными языками, MCFL), входят в класс контекстно-зависимых языков и включают в себя класс контекстно-свободных языков. \begin{definition} \textit{m-MCFG(r)} это четвёрка $\langle \Sigma, N, S, P \rangle$ @@ -13,142 +18,157 @@ A(s_1,\ldots,s_k) \leftarrow B_1(x_1^1,\ldots,x_{k_1}^1), \ldots, B_n(x_1^n,\ldots,x_{k_n}^n) $$ \begin{itemize} - \item $A$ --- нетерминал ранга $k$, $B_i$ --- нетерминалы ранга $k_i$, $n \leq r$ - \item Все $x^i_j$ попарно различны (переменные) - \item $s_i \in (\Sigma \cup X)^*, X = \bigcup_{i=1}^n \bigcup_{j=1}^{k_i} {x^i_j}$ + \item $A$ --- нетерминал ранга $k$, $B_i$ --- нетерминалы ранга $k_i$, $n \leq r$; + \item Все $x^i_j$ попарно различны (переменные). Если опустить это ограничение, то получаем LMG грамматику. + \item Строки $s_i \in (\Sigma \cup X)^*, X = \bigcup_{i=1}^n \bigcup_{j=1}^{k_i} {x^i_j}$ + \item Каждая $x^i_j$ встречается не более одного раза в последовательности $s_1,\ldots, s_k$. Если допустить несколько вхождений, то это PMCFG. \end{itemize} \end{itemize} - \end{definition} +\end{definition} + +MCFG позволяет правилам грамматики оперировать несколькими компонентами одновременно. Нетерминалы в MCFG могут выводить не одну строку, а кортеж из нескольких строк. +Также, можно произвольно комбинировать компоненты — переставлять их, дублировать, вставлять между ними терминалы. + +В литературе можно еще встретить следующую запись правил вывода: +$$ +A_0 \leftarrow f[A_1, A_2,\ldots,A_q] +$$ +где $f$ — функция, аргументы и значения которой представляют собой кортежи строк, и +удовлетворяет следующим условиям: +\begin{enumerate} + \item Каждый компонент значения $f$ представляет собой конкатенацию некоторых константных строк и некоторых компонентов своих аргументов + \item Каждый компонент не может встречаться в $f$ более одного раза. +\end{enumerate} + + +Приведём примеры многокомпонентных контекстно-свободных грамматик. +Для начала рассмотрим грамматики для известных нам контекстно-свободных языков и перепишем их в MCFG грамматику: -Приведём примеры многокомпонентных контекстно-свободных грамматик. Для начал рассмотрим грамматики для известных нам контекстно-свободных языков: \begin{itemize} - \item язык вложенных скобок (\ref{grm:nestedbrs_cfg} и \ref{grm:nestedbrs_mcfg}, соответственно);\\ - \begin{minipage}[t]{0.4\textwidth} - \begin{align}\label{grm:nestedbrs_cfg} - S &\to a S b \nonumber \\ - S &\to \varepsilon - \end{align} - \end{minipage} - ~ - \begin{minipage}[t]{0.2\textwidth} - \end{minipage} - ~ - \begin{minipage}[t]{0.4\textwidth} - \begin{align}\label{grm:nestedbrs_mcfg} - S(axb) & \leftarrow S(x) \nonumber \\ - S(\varepsilon) & \leftarrow - \end{align} - \end{minipage} - \item язык Дика на одном типе скобок(\ref{grm:d1_cfg} и \ref{grm:d1_mcfg}, соответственно).\\ - \begin{minipage}[t]{0.4\textwidth} - \begin{align}\label{grm:d1_cfg} - S &\to a S b S \nonumber \\ - S &\to \varepsilon - \end{align} - \end{minipage} - ~ - \begin{minipage}[t]{0.2\textwidth} - \end{minipage} - ~ - \begin{minipage}[t]{0.4\textwidth} - \begin{align}\label{grm:d1_mcfg} - S(ax_1bx_2) & \leftarrow S(x_1), S(x_2) \nonumber \\ - S(\varepsilon) & \leftarrow - \end{align} - \end{minipage} - -\end{itemize} + \item \textbf{Язык вложенных скобок} -Теперь рассмотрим грамматику для языка $L = \{a^nc^mb^nd^m \mid n \in \mathbb{N}, m \in \mathbb{N} \}$, не являющегося контекстно-свободным: \begin{align*} - S(x_1 y_1 x_2 y_2) & \leftarrow P(x1,x2),Q(y_1,y_2) \\ - P(ax_1, bx_2) & \leftarrow P(x_1,x_2) \\ - P(\varepsilon,\varepsilon) &\leftarrow \\ - Q(cx_1, dx_2) & \leftarrow Q(x_1,x_2) \\ - Q(\varepsilon,\varepsilon) &\leftarrow + S &\rightarrow aSb &\quad& S(axb) \leftarrow S(x) \\ + S &\rightarrow \varepsilon &\quad& S(\varepsilon) \leftarrow \end{align*} - - + \item \textbf{Язык Дика на одном типе скобок} - - Расширения MCFG - \begin{enumerate} - \item \textbf{PMCFG} (parallel MCFG) - $$ - A(x, ax) \leftarrow B(x) - $$ - - \item - $$ - A(x) \leftarrow B(x),C(x) - $$ - \item \textbf{simpleLMG} - $$ - A(x, x) \leftarrow B(x),C(x) - $$ - \end{enumerate} + \begin{align*} + S &\rightarrow aSbS &\quad& S(ax_1bx_2) \leftarrow S(x_1), S(x_2) \\ + S &\rightarrow \varepsilon &\quad& S(\varepsilon) \leftarrow + \end{align*} + + В MCFG-варианте ранг $S$ равен двум, то есть $S$ возвращает две компоненты. Такая грамматика записывается как 2-MCFG. - $MCFL \varsubsetneq PMCFL \varsubsetneq simpleLMG = P$ - - $\{a^{2^n} \mid n\geq 0\} \in PMCFL - MCFL $ - - $S(xx) \leftarrow S(x)$ - - $S(a) \leftarrow $ +\end{itemize} - Разновидности MCFG +Рассмотрим грамматику для языка $L = \{a^nc^mb^nd^m \mid n \in \mathbb{N}, m \in \mathbb{N} \}$, не являющегося контекстно-свободным, но выразимого в 2-MCFG(2) грамматике : +\begin{align*} + S(x_1 y_1 x_2 y_2) & \leftarrow P(x1,x2),Q(y_1,y_2) \\ + P(ax_1, bx_2) & \leftarrow P(x_1,x_2) \\ + P(\varepsilon,\varepsilon) &\leftarrow \\ + Q(cx_1, dx_2) & \leftarrow Q(x_1,x_2) \\ + Q(\varepsilon,\varepsilon) &\leftarrow +\end{align*} + +\section{Расширения MCFG} + +Как было сказано раннее, в MCFG каждая переменная в левой части правила встречается ровно один раз в его правой части, и наоборот. +Если мы откажемся от этого ограничения, мы получим более общие грамматики. + +\begin{enumerate} + \item \textbf{PMCFG} (Parallel Multiple Context-Free Grammar).\\ + \\ + PMCFG задает некоторое ограничение над MCFG. + В правилах PMCFG компоненты должны комбинироваться параллельно, без перемешивания между разными нетерминалами: $i$-й компонент результата формируется только из $i$-х компонентов правой части. + + $$ + A(xy, xz) \leftarrow B(x), C(y, z) + $$ + + \item \textbf{sLMG (Simple LMG, Simple Literal Movement Grammar)}.\\ + \\ + sLMG является ограниченным подклассом LMG (Literal Movement Grammar). + Общее определение LMG допускает любую комбинацию переменных и терминалов в компонентах левой и правой части правила. + LMG являются грамматическими формализмами, основанными на предикатах над строковыми кортежами и расширяют класс контекстно-свободных грамматик. + + Предикатом будем называть синтаксическую единицу вида $A(\alpha_1, \alpha_2, ..., \alpha_n)$, где A — нетерминальный символ (имя предиката), + $\alpha_1, \alpha_2, ..., \alpha_n$ --- аргументы (последовательности терминалов и переменных). + + Правила (так же называемые клаузы, clauses) в такой грамматике имеют вид $\varphi \leftarrow \psi_1, \psi_2, ..., \psi_m$, где $\phi$ --- предикат в левой части (голова), + $\psi_1, \psi_2, ..., \psi_m$ --- последовательность предикатов в правой части (тело). Клауза может инстанцироваться (т.е конкретные значения будут подставлены в аргументы) путем замены каждой переменной в клаузе на строку.\\ + \\ + \textbf{Simple LMG} — это подкласс LMG, где каждая клауза (правило) должна удовлетворять трём синтаксическим ограничениям: \begin{itemize} - \item \textbf{Неудаляющая} --- $\forall i \in \{i,\ldots,n\}, j\in \{1,\ldots,k_i\} \ x^i_j \text{ используется в } s_1,\ldots,s_k $ - \item \textbf{Непереставляющая} --- $\forall i \in \{i,\ldots,n\}, j,k\in \{1,\ldots,k_i\}, \text{если} j < k, \text{ то } x^i_j \text{ встречается в } s_1,\ldots,s_k \text{ перед } x^i_k$ - \item \textbf{Well-nested} --- неудаляющая, непереставляющая и - \begin{align*} - &\forall i,i' \in \{i,\ldots,n\}, i\neq i', \\ - &j\in \{1,\ldots,k_i-1\}, j\in \{1,\ldots,k_{i'}-1\},\\ - &s_1\cdots s_k \notin (\Sigma \cup X)^* x^i_j (\Sigma \cup X)^* x^{i'}_{j'} (\Sigma \cup X)^* x^i_{j+1} (\Sigma \cup X)^* x^{i'}_{j'+1}(\Sigma \cup X)^* - \end{align*} + \item Non-combinatorial (некомбинаторность). Аргументы каждого $\psi_i$ должны быть переменными. + \item Bottom-up nonerasing (восходящая неудаляемость). Все переменные из каждого $\psi_i$ также должны встречаться в $\varphi$. Это означает, что правая часть не может вводить новые переменные --- все переменные должны «приходить» из левой части. + \item Bottom-up linear (восходящая линейность). Ни одна переменная не встречается в $\varphi$ более одного раза. \end{itemize} +\end{enumerate} - Пример well-nested MCFG - \begin{itemize} - %\item[\faCheck] [\faTimes] - \item[\faCheck] $A(\highlight[pink]{x_1},\highlight{z_1,z_2},\highlight[pink]{x_2},\highlight[green]{y_1,y_2,y_3},\highlight[pink]{x_3}) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ - \item[\faTimes] $A(\highlight{z_1},\highlight[pink]{x_1},\highlight[green]{y_1},\highlight[pink]{x_2},\highlight{z_2},\highlight[green]{y_2},\highlight[pink]{x_3},\highlight[green]{y_3}) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ - \end{itemize} +\section{Свойства множественных контекстно-свободных грамматик} +\begin{enumerate} + \item $MCFL \varsubsetneq PMCFL \varsubsetneq simpleLMG = P$ + \item $\{a^{2^n} \mid n\geq 0\} \in PMCFL - MCFL $ +\end{enumerate} +\sidenote{Либо оставить здесь только свойства и сказать читателю, что за подробностями лезть в статью. Пока непонятно} - \begin{theorem}[genaral MCFG] - \begin{align*} - &\forall L \in \text{m-MCFG } \exists n \geq 1 \ \underline{\boldsymbol{\exists} z} \in L (|z| \geq n) \\ - &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ - &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L - \end{align*} - \end{theorem} +\section{Разновидности MCFG} +\begin{itemize} + \item \textbf{Неудаляющая} + + $\forall i \in \{i,\ldots,n\}, j\in \{1,\ldots,k_i\} \ x^i_j \text{ используется в } s_1,\ldots,s_k $ + \item \textbf{Непереставляющая} + + $\forall i \in \{i,\ldots,n\}, j,k\in \{1,\ldots,k_i\}, \text{если} j < k, \text{ то } x^i_j \text{ встречается в } s_1,\ldots,s_k \text{ перед } x^i_k$ + \item \textbf{Well-nested} --- неудаляющая, непереставляющая и + \begin{align*} + &\forall i,i' \in \{i,\ldots,n\}, i\neq i', \\ + &j\in \{1,\ldots,k_i-1\}, j\in \{1,\ldots,k_{i'}-1\},\\ + &s_1\cdots s_k \notin (\Sigma \cup X)^* x^i_j (\Sigma \cup X)^* x^{i'}_{j'} (\Sigma \cup X)^* x^i_{j+1} (\Sigma \cup X)^* x^{i'}_{j'+1}(\Sigma \cup X)^* + \end{align*} +\end{itemize} - \begin{theorem}[well-nested MCFG] - \begin{align*} - &\forall L \in \text{m-wnMCFG } \exists n \geq 1 \ \underline{\boldsymbol{\forall} z} \in L (|z| \geq n) \\ - &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ - &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L - \end{align*} - \end{theorem} +Пример Well-nested MCFG +\begin{itemize} + \item[\faCheck] $A(x_1,z_1,z_2,x_2,y_1,y_2,y_3,x_3) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ + \item[\faTimes] $A(z_1,x_1,y_1,x_2,z_2,y_2,x_3,y_3) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ +\end{itemize} + +\begin{theorem}[Genaral MCFG] + \begin{align*} + &\forall L \in \text{m-MCFG } \exists n \geq 1 \ \underline{\boldsymbol{\exists} z} \in L (|z| \geq n) \\ + &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ + &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L + \end{align*} +\end{theorem} + +\begin{theorem}[Well-nested MCFG] + \begin{align*} + &\forall L \in \text{m-wnMCFG } \exists n \geq 1 \ \underline{\boldsymbol{\forall} z} \in L (|z| \geq n) \\ + &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ + &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L + \end{align*} +\end{theorem} + +\section{Иерархии внутри MCFL} - Иерархии внутри MCFL - \begin{theorem} - $(m*(k-1))$-$MCFL(r-k) \subseteq m$-$MCFL(r) $ если $1 \leq k \leq r - 2$ - \end{theorem} - - \begin{theorem}[Seki et al] - $L_{m+1} = \{a_1^nb_1^n\cdots a_{m+1}^n b_{m+1}^n \mid n\in \mathbb{N}\}$ является $(m+1)$-$MCFL(1)$, но не является $m$-$MCFL(r)$ ни для какого $r$ - \end{theorem} +\begin{theorem} +$(m*(k-1))$-$MCFL(r-k) \subseteq m$-$MCFL(r) $ если $1 \leq k \leq r - 2$ +\end{theorem} +\begin{theorem}[Seki et al] +$L_{m+1} = \{a_1^nb_1^n\cdots a_{m+1}^n b_{m+1}^n \mid n\in \mathbb{N}\}$ является $(m+1)$-$MCFL(1)$, но не является $m$-$MCFL(r)$ ни для какого $r$ +\end{theorem} \begin{figure} \includegraphics[width=\textwidth]{figures/mcfg/mcfg.pdf} - \label{fig:mcfg_hierarachy_1} \caption{Иерархия по $m$} -\end{figure} + \label{fig:mcfg_hierarchy_1} +\end{figure} - Иерархия для $m=1$ +Иерархия для $m=1$ \begin{theorem} 1-MCFL = CFL \end{theorem} @@ -156,12 +176,12 @@ \begin{theorem} 1-MCFL(1) $\varsubsetneq$ 1-MCFL(2) \end{theorem} - + \begin{theorem} 1-MCFL($r$) = 1-MCFL($r+1$), $r\geq2$ \end{theorem} - Иерархия для $m=2$ +Иерархия для $m=2$ \begin{theorem}[Ramow, Satta] 2-MCFL(2) = 2-MCFL(3) \end{theorem} @@ -172,36 +192,50 @@ \begin{figure} \includegraphics[width=\textwidth]{figures/mcfg/mcfg_2.pdf} - \label{fig:mcfg_hierarachy_2} - \caption{Иерархия по $r$} -\end{figure} + \caption{Иерархия по $r$} + \label{fig:mcfg_hierarachy_2} +\end{figure} + +\section{Лемма о накачке для MCFL} +\begin{lemma} (Pumping lemma for MCFL’s). + Для любого m-MCFL языка $L$, если язык $L$ --- бесконечное множество, то существуют такие $u_j \in T^{*}$ + ($1 \leq j \leq m + 1$), $v_j$, $w_j$, $s_j$ $\in T^{*}$ ($1 \leq j \leq m $), которые удовлетворяют следующим + условиям: + \begin{enumerate} + \item $\sum_{j=1}^m |v_j s_j| > 0$ + \item Для любого неотрицательного числа: + $$ z_i = u_1 v_1^i w_1 s_1^i u_2 v_2^i w_2 s_2^i u_3 \ldots u_m v_m^i w_m s_m^i \in L $$ + \end{enumerate} +\end{lemma} +\section{Языки MIX и $O_n$} -Про MIX и $O_n$ +$MIX = \{\omega \in \{a,b\}^* \mid |\omega|_a = |\omega|_b \}$ --- контекстно-свободный язык \begin{itemize} - \item $mix = \{\omega \in \{a,b\}^* \mid |\omega|_a = |\omega|_b \}$ --- контекстно-свободный язык - \item $MIX = \{\omega \in \{a,b,c\}^* \mid |\omega|_a = |\omega|_b = |\omega|_c\}$ --- MCFL? Хотелось верить, что нет \begin{itemize} \item \href{https://hal.inria.fr/inria-00564552/document}{MIX is a 2-MCFL and the word problem in $\mathbb{Z}^2$ is solved by a third-order collapsible pushdown automaton, Sylvain Salvati, 2011}~\cite{salvati:inria-00564552} - \end{itemize} - \item $O_2=\{\omega \in \{a,\overline{a},b,\overline{b}\}^* \mid |\omega|_a=|\omega|_{\overline{a}} \wedge |w|_b=|w|_{\overline{b}}\}$ + \end{itemize} + \item $MIX_n = \{\omega \in \{a_1,\ldots,a_n\}^* \mid |\omega|_{a_1} = |\omega|_{a_2} =\cdots = |\omega|_{a_n}\}$ +\end{itemize} + +\item $O_2=\{\omega \in \{a,\overline{a},b,\overline{b}\}^* \mid |\omega|_a=|\omega|_{\overline{a}} \wedge |w|_b=|w|_{\overline{b}}\}$ + +\begin{itemize} \item $O_n=\{\omega \in \{a_1,\overline{a_1},a_2,\overline{a_2},\ldots,a_n,\overline{a_n}\}^* \mid |\omega|_{a_1}=|\omega|_{\overline{a_1}} \wedge |w|_{a_2}=|w|_{\overline{a_2}} \wedge \cdots \wedge |w|_{a_n}=|w|_{\overline{a_n}}\}$ - \item $MIX_n = \{\omega \in \{a_1,\ldots,a_n\}^* \mid |\omega|_{a_1} = |\omega|_{a_2} =\cdots = |\omega|_{a_n}\}$ \item $MIX_n$ регулярно эквивалентен $O_n$ (существует алгоритм построения грамматики одного языка по грамматике другого) \begin{itemize} \item \href{https://hal.archives-ouvertes.fr/hal-01771670/document}{$O_n$ is an n-MCFL, Sylvain Salvati, 2018}~\cite{GEBHARDT202241} \end{itemize} - \end{itemize} - +\end{itemize} - \begin{itemize} - \item Варианты леммы о накачке - \item Представимость конкретных языков - \begin{itemize} - \item Многомерный язык Дика: \href{https://link.springer.com/chapter/10.1007/978-3-662-59620-3_5}{Towards a 2-Multiple Context-Free Grammar for the 3-Dimensional Dyck Language, Konstantinos Kogkalidis, Orestis Melkonian, 2019}~\cite{10.1007/978-3-662-59620-3_5} - \item Шафл языков Дика: \href{https://dl.acm.org/doi/10.1145/3093333.3009848}{Context-sensitive data-dependence analysis via linear conjunctive language reachability, Qirun Zhang, Zhendong Su et al, 2017}~\cite{10.1145/3009837.3009848} - \end{itemize} - \end{itemize} +\begin{itemize} + \item Варианты леммы о накачке + \item Представимость конкретных языков + \begin{itemize} + \item Многомерный язык Дика: \href{https://link.springer.com/chapter/10.1007/978-3-662-59620-3_5}{Towards a 2-Multiple Context-Free Grammar for the 3-Dimensional Dyck Language, Konstantinos Kogkalidis, Orestis Melkonian, 2019}~\cite{10.1007/978-3-662-59620-3_5} + \item Шафл языков Дика: \href{https://dl.acm.org/doi/10.1145/3093333.3009848}{Context-sensitive data-dependence analysis via linear conjunctive language reachability, Qirun Zhang, Zhendong Su et al, 2017}~\cite{10.1145/3009837.3009848} + \end{itemize} +\end{itemize}