% Лекция 7 (03.11.23)

% 2.4 (9) Постройте графы создания для систем МТМД со следующими наборами команд.
%
% а)
% command a1(x: $\alpha$, y: $\beta$, z: $\beta$)
%   <<создать>> субъект x с типом $\alpha$;
% end;
% command a2(x: $\alpha$, y: $\gamma$, z: $\beta$, s: $\delta$)
%   <<создать>> субъект y с типом $\gamma$;
%   <<создать>> субъект s с типом $\delta$;
% end;
% command a3(x: $\varepsilon$, y: $\delta$, z: $\beta$, s: $\gamma$, o: $\delta$)
%   <<создать>> субъект o с типом $\delta$;
%   <<создать>> субъект x с типом $\varepsilon$;
% end;

\emph{Начальным пролётом моста} в графе доступов $G_0$ называется $tg$-путь,
началом которого является вершина субъект, концом --- объект, проходящий
через вершины объекты, словарная запись которого имеет вид $\vec{t}^* \vec{g}$.

\emph{Конечным пролётом моста} в графе доступов $G_0$ называется $tg$-путь,
началом которого является вершина субъект, концом --- объект, проходящий через
вершины объекты, словарная запись которого имеет вид $\vec{t}^*$.

%% NOTE: 2.6
\begin{theorem}
  Пусть $G_0 = (S_0, O_0, E_0)$ --- произвольный граф доступов, $x, y \in O_0,
  x \neq y$. Предикат $\fn{can_share}(\alpha, x, y, G_0)$ истинен $\iff$ или
  $(x, y, \alpha) \subset E_0$, или выполняются следующие три условия:
  \begin{enumerate}
    \item
      существуют объекты $s_1, \dots, s_m \in O_0: (s_i, y, \gamma_i) \subset
      E_0$ для $i = 1, \dots, m$ и $\alpha = \gamma_1 \cup \dots \cup \gamma_m$;
    \item
      существуют субъекты $x_1', \dots, x_m', s_1', \dots, s_m' \in S_0$ :
      \begin{enumerate}
        \item
          $x = x_i'$ или $x_i'$ соединён с $s_i$ конечным пролётом моста в графе
          $G_0$, где $i = 1, \dots, m$;
        \item
          $s_i = s_i'$ или $s_i'$ соединён с $s_i$ конечным пролётом моста в
          $графе G_0$, где $i = 1, \dots, m$;
      \end{enumerate}
    \item
      в графе $G_0$ для каждой пары $(x_i', s_i')$, $i = 1, \dots, m$,
      существуют острова $I_{i,1}, \dots, I_{i,u_i}$, где $u_i \geq 1$, такие,
      что $x_i' \in I_{i,1}, s_i' \in I_{i,u_i}$, и существуют мосты между
      островами $I_{i,j}$ и $I_{i,j + 1}$, $j = 1, \dots, u_i - 1$.
  \end{enumerate}
\end{theorem}

Смысл теоремы состоит в том, что если в системе разграничения доступа в
начальном состоянии между двумя какими-либо объектами имеется $tg$-путь,
включающий, в том числе, мосты между островами, то найдётся такая
последовательность команд вида <<take>>, <<grant>>, <<create>>, в результате
которой первый объект получит необходимые права доступа над другим объектом.
Существенным при этом является отсутствие каких-либо ограничений на кооперацию
субъектов и объектов доступа, в частности, отсутствие запретов на передачу прав
доступа к объекту субъектами, изначально обладающими необходимыми правами на
объект, представляющий интерес для других субъектов. Говоря иначе, подобный
порядок вещей характеризует идеальное сотрудничество и доверие между субъектами
доступа.


