Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Preparing to remove bottom.

  • Loading branch information...
commit 3b45822b89146aaf319b4eafc1dc4c56824b173a 1 parent ba17682
Thiago Rafael Becker authored
BIN  categorias/git/git.pdf
Binary file not shown
93 categorias/git/git.tex
@@ -19,13 +19,17 @@
19 19 \newcommand{\merge}{{$merge$}}
20 20 \newcommand{\mytag}{{$tag$}}
21 21 \newcommand{\baseset}{{\Sigma^\star_\bot}}
22   -\newcommand{\opa}{{\oplus^c_k}}
23   -\newcommand{\gopa}{{\{ger\opa\}}}
24   -\newcommand{\opb}{{\ominus^c_k}}
25   -\newcommand{\gopb}{{\{ger\opb\}}}
  22 +\newcommand{\addc}[2]{{\mathbf{add\_char}_{#1}^{#2}}}
  23 +\newcommand{\opa}{{\addc{c}{k}}}
  24 +\newcommand{\remc}[2]{{\mathbf{rem\_char}_{#1}^{#2}}}
  25 +\newcommand{\gopa}{{ger\{\opa\}}}
  26 +\newcommand{\opb}{{\remc{c}{k}}}
  27 +\newcommand{\gopb}{{ger\{\opb\}}}
26 28 \newcommand{\transMon}{{T_\baseset}}
27 29 \newcommand{\composition}{{\circ}}
28 30 \newcommand{\morun}{{\gopa \cup \gopb \cup \{id\}}}
  31 +\newcommand{\len}[1]{{len(#1)}}
  32 +\newcommand{\commit}{{\mathbf{Commit}}}
29 33
30 34 \title{Sistemas com dados versionados}
31 35 \author{Thiago Rafael Becker}
@@ -33,42 +37,79 @@
33 37 \begin{document}
34 38 \maketitle
35 39 \begin{abstract}
36   -A semântica de um sistema com dados versionados é estudada a partir de um mapeamento de um grupo de transformações para um grafo direto reflexivo. O grupo de transformações é composto pelas operações adição de caracter e remoção de caracter sobre o conjuntos gerado pelo fecho de Kleene $\baseset$. O funtor de mapeamento deste grupo para um grafo reflexivo direto apresenta a estrutura e a semântica de um VCS.
  40 +A semântica de um sistema com dados versionados é estudada a partir de um mapeamento de um monóide de transformação para um grafo direto reflexivo. O monóide de transformação é composto pelas operações adição de símbolo e remoção de símbolo sobre o conjuntos gerado pelo fecho de Kleene $\baseset$. O funtor de mapeamento deste grupo para um grafo reflexivo direto apresenta a estrutura e a semântica de um VCS.
37 41 \end{abstract}
38 42
39 43 \section*{Introdução}
40 44 Os sistemas com dados versionados (VCS) são sistemas que armazenam um histórico de modificações dos dados que eles contém. Estes sistemas tem diversas funções tais como gerenciamento de documentos, versões de sistemas e configurações destes sistemas para fins de manter histórico de modificações e {\it rollback} para correção de erros.
41 45
42   -O objeto de estudo deste artigo é o cerne da semântica destes sistema, a transição de estados. Para tal, inicialmente vamos definir como são os objetos manipulados por um destes sistemas como um monóide sobre um alfabeto de símbolos, $\baseset$. Com essa definição, vamos definir duas operações de adição e remoção de caracteres destes objetos, e provar que estes formam um grupo de transformação, $\transMon$. Por fim vamos definir um funtor $COMMIT$ que mapeia da categoria livremente gerada por $\transMon$ para {\tt RGr}, assim forncendo a estrutura de um grafo para estes sistemas.
  46 +O objeto de estudo deste artigo é o cerne da semântica destes sistema, a transição de estados. Para tal, inicialmente vamos definir como são os objetos manipulados por um destes sistemas como um monóide sobre um alfabeto de símbolos, $\baseset$. Com essa definição, vamos definir duas operações de adição e remoção de caracteres destes objetos, e provar que estes formam um monóide de transformação, $\transMon$. Por fim vamos definir um funtor $\commit$ que mapeia da categoria livremente gerada por $\transMon$ para {\tt RGr}, assim forncendo a estrutura de um grafo para estes sistemas.
43 47
44 48 \section*{Objetos maniulados} \label{sec:intuitiva}
45 49 Um SCM gerencia estados de objetos. O conteúdo destes objetos é uma sequência de dados pertencentes ao alfabeto $\Sigma_\bot = \Sigma \cup \bot$. Todos os estados de um objeto são definidos pelo conjnto gerado pelo fecho de Kleene sobre o alfabeto $\Sigma_\bot$, $\baseset = \langle\Sigma_\bot, \composition, \varepsilon\rangle$. $\bot$ é um elemento especial que indica indefinição das funções parciais sobre o conjunto $\baseset$.
46 50
  51 +\subsection*{Algumas definições}
  52 +\newtheorem{mydef}[section]{Definição}
  53 +\begin{mydef}
  54 +Uma {\it palavra} em $\baseset$ é uma cadeia de símbolos $\sigma = \{\sigma_1\sigma_2\ldots\sigma_n\}$ de tamanho $n$ em $\Sigma$ ou $\bot$.
  55 +\end{mydef}
  56 +\begin{mydef}
  57 +O comprimento de uma cadeia de símbolos $\sigma$ de $\baseset$ é dado por $\len{\sigma}$, $\len{\varepsilon} = \len{\bot} = 0$.
  58 +\end{mydef}
  59 +
47 60 \section*{Adição e remoção de caracteres}
48 61 Dois funcionais são definidos sobre $\baseset$: {\it adição de caracter} e {\it remoção de caracter}. A adição de caracter
49 62 \begin{equation} \label{eq:oplus}
50   -\opa: \mathbb{N} \to \Sigma \to (\baseset \to \baseset), \opa(\bot) = \bot
  63 +\opa: \mathbb{N} \to \Sigma \to (\baseset \to \baseset)
  64 +\end{equation}
  65 +definida como
  66 +\begin{equation} \label{eq:def_add}
  67 +\opa(\sigma) = \left\{
  68 +\begin{tabular}{ll}
  69 +$\bot$ & se $\len{\sigma} < k$,\\
  70 +$\bot$ & se $\sigma = \bot$, \\
  71 +$\{\sigma_1\ldots\sigma_{k-1}c\sigma_k\ldots\sigma_n\}$
  72 +\end{tabular}\right.
51 73 \end{equation}
52   -insere o caracter $c$ na posição $k$, e desloca todos os caracteres a direita de $k$ uma posição à direita. A remoção de caractere
  74 +insere o símbolo $c$ na posição $k$, e desloca todos os caracteres a direita de $k$ uma posição à direita, ou retorna $\bot$ se $k > \len{\sigma}$. A remoção de caractere
53 75 \begin{equation} \label{eq:ominus}
54   -\opb: \mathbb{N} \to \Sigma \to (\baseset \to \baseset), \opb(\bot) = \bot
  76 +\opb: \mathbb{N} \to \Sigma \to (\baseset \to \baseset)
55 77 \end{equation}
56   -remove o caracter $c$ da posição $k$, e move todos os caracteres à sua direita uma poisção para a esquerda. Além disso, a identidade $id: \baseset \to \baseset$ é definida.
57   -
58   -As funções geradas pelos funcionais $\opa$ e $\opb$ ($\gopa$, $\gopb$) formam um grupo de transformação $\transMon = \langle\gopa \cup \gopb, \composition, id\rangle$. Para provarmos as propriedades do grupo, definimos o mapeamento $\baseset \to \mathbb{N} \cup \{\bot\}$
59   -
  78 +definida como
  79 +\begin{equation} \label{eq:def_rem}
  80 +\opb(\sigma) = \left\{
  81 +\begin{tabular}{ll}
  82 +$\bot$ & se $\len{\sigma} < k$,\\
  83 +$\bot$ & se $\sigma_k \neq c$, \\
  84 +$\bot$ & se $\sigma = \bot$, \\
  85 +$\{\sigma_1\ldots\sigma_{k-1}\varepsilon\sigma_{k+1}\ldots\sigma_n\} = \{\sigma_1\ldots\sigma_{k-1}\sigma_{k+1}\ldots\sigma_n\}$
  86 +\end{tabular}\right.
  87 +\end{equation}
  88 +remove o símbolo $c$ da posição $k$, e move todos os caracteres à sua direita uma poisção para a esquerda, ou retorna $\bot$ se
  89 +\begin{itemize}
  90 +\item $k > \len{\sigma}$
  91 +\item $\sigma_k \neq c$.
  92 +\end{itemize}
  93 +Além disso, a identidade $id: \baseset \to \baseset$ é definida tal que $id(\sigma) = \sigma$.
  94 +
  95 +\newtheorem{obs}{Observação}[section]
  96 +\begin{obs}
  97 +Note que as operações $\opa$ e $\opb$ não são inversas em $\baseset$ se $\opa(\sigma) = \bot$ ou $\opb(\sigma) = \bot$para $\bot \neq \sigma \in \baseset$, uma vez que $(\opa \composition \opb)(\sigma) = \bot$. Para todos os outros valores, as operações são inversas, $(\opa \composition \opb)(\sigma) = \sigma$ e $(\opb \composition \opa)(\sigma) = \sigma$.
  98 +\end{obs}
  99 +
  100 +\begin{obs}
  101 +Exemplos de indefinição. Dado o alfabeto $\Sigma = \{a, b\}$ e a palavra $\sigma = a^3b^2$ ($\len{\sigma} = 5$, as seguintes operações são indefinidas: $\addc{7}{a}(\sigma)$ e $\remc{7}{a}(\sigma)$ (pois $7 > \len{\sigma}$), $(\remc{3}{a} \composition \remc{3}{a})(\sigma)$ (pois após a primeira operação a posição 3 de $\sigma\prime$ é ocupada pelo símbolo $b$).
  102 +\end{obs}
  103 +
  104 +As funções geradas pelos funcionais $\opa$ e $\opb$ ($\gopa$, $\gopb$) formam um monóide de transformação $\transMon = \langle\gopa \cup \gopb, \composition, id\rangle$. Para provarmos as propriedades deste monóide, definimos o mapeamento $\baseset \to \mathbb{N}_\bot$
60 105 \begin{equation} \label{map:set}
61 106 \Gamma = \{ \bot_{\Sigma_\bot} \mapsto \bot_{\mathbb{N}\cup \bot}, \varepsilon_{\Sigma_\bot} \mapsto 0_{\mathbb{N}\cup \bot}, c_{\Sigma} \mapsto n_{\mathbb{N}}\}
62 107 \end{equation}
63   -
64 108 tal que o mapeamento é uma bijeção. O mapeamento das operações $\opa$ é
65   -
66 109 \begin{equation} \label{map:opa}
67 110 \Gamma(\opa(\sigma)) = \Gamma(\sigma) p_k^{\Gamma(c)}, p_k \in \mathbb{P}
68 111 \end{equation}
69   -
70 112 e $\opb$ é
71   -
72 113 \begin{equation} \label{map:opb}
73 114 \Gamma(\opb(\sigma)) = \Gamma(\sigma) p_k^{-\Gamma(c)}, p_k \in \mathbb{P},
74 115 \end{equation}
@@ -81,31 +122,31 @@ \section*{Adição e remoção de caracteres}
81 122
82 123 Este mapeamento é uma bijeção nas classes de equvalência de $\mathbb{N}$, tal que $\Gamma^{-1}(n) = \Gamma^{-1}(n\prime), n \neq n\prime, n, n\prime \in \mathbb{N}_\bot$, sendo $\Gamma^{-1}$ o mapeamento inverso a $\Gamma$, isto é, o mapeamento de um número para $\baseset$. Este mapeamento permite que existam inúmeros números primos entre $p_k$ e $p_{k+1}$ usados para repesentar $\sigma$.
83 124
84   -Com isso é possível verificar que $\Gamma(\opa)$ e $\Gamma(\opb)$ formam um grupo de transformação sobre $\mathbb{N} \cup \{\bot\}$, provando a existencia de $\transMon$.
  125 +Com isso é possível verificar que $\Gamma(\opa)$ e $\Gamma(\opb)$ formam um monóide de transformação sobre $\mathbb{N} \cup \{\bot\}$, provando a existencia de $\transMon$.
85 126
86 127
87 128 \section*{Representação como grafo}
88   -Com as informações acima, é possível criar um funtor que implementa a operação \co, $COMMIT$. O funtor é tal que
  129 +Com as informações acima, é possível criar um funtor que implementa a operação \co, $\commit$. O funtor é tal que
89 130 \begin{equation} \label{fun:set}
90   -COMMIT(\baseset) = \sigma_1, \sigma_1 \subset \baseset
  131 +\commit(\baseset) = \sigma_1, \sigma_1 \subset \baseset
91 132 \end{equation}
92 133 \begin{equation} \label{fun:mor}
93   -COMMIT(\morun) = f:\sigma_1 \to \sigma_1\prime, \sigma_1,\sigma_1\prime \in \baseset
  134 +\commit(\morun) = f:\sigma_1 \to \sigma_1\prime, \sigma_1,\sigma_1\prime \in \baseset
94 135 \end{equation}
95   -em que $\sigma_1$ é um conjunto unário. $COMMIT$ constrói a estrutura do repositório, e é inversível. Intuitivamente, este funtor toma um conjunto $\sigma_1$ e uma composição de morfismos em $\morun$ que transforma o estado do repositório.
  136 +em que $\sigma_1$ é um conjunto unário. $\commit$ constrói a estrutura do repositório, e é inversível. Intuitivamente, este funtor toma um conjunto $\sigma_1$ e uma composição de morfismos em $\morun$ que transforma o estado do repositório.
96 137
97 138 O grafo que representa um dado repositório é um subgrafo $Repo$ do grafo direto reflexivo
98 139 \[
99   -\langle COMMIT(\baseset), COMMIT(\morun)\rangle,
  140 +\langle \commit(\baseset), \commit(\morun)\rangle,
100 141 \]
101   -e é simples verificar as propriedades compositiva e associativa das setas $COMMIT(\morun)$ pelo mapeamento $\Gamma$ acima. Desta forma, a categoria {\tt Repo}
  142 +e é simples verificar as propriedades compositiva e associativa das setas $\commit(\morun)$ pelo mapeamento $\Gamma$ acima. Desta forma, a categoria {\tt Repo}
102 143 \[
103   -\langle COMMIT(\baseset), COMMIT(\morun), \delta_0, \delta_1, id, \composition\rangle
  144 +\langle \commit(\baseset), \commit(\morun), \delta_0, \delta_1, id, \composition\rangle
104 145 \]
105 146 é a categoria livremente gerada pelo grafo $Repo$. O objeto inicial de toda a categoria {\tt Repo} é a palavra vazia $\varepsilon$, que representa um repositório vazio.
106 147
107 148 \section*{Conclusões e desenvolvimentos futuros}
108   -O funtor $COMMIT$ da categoria livremente gerada de $\transMon$ para {\tt Repo} representa o cerne da semântica dos sistema com dados versionados. O trabalho é incompleto, entretanto: não trata de sistemas que possuam {\it merging} e {\it branching}, nem de metadados comumente presentes nestes sistemas.
  149 +O funtor $\commit$ da categoria livremente gerada de $\transMon$ para {\tt Repo} representa o cerne da semântica dos sistema com dados versionados. O trabalho é incompleto, entretanto: não trata de sistemas que possuam {\it merging} e {\it branching}, nem de metadados comumente presentes nestes sistemas.
109 150
110 151 É possível perceber que a categoria {\tt Repo} apresenta uma estrutura semelhante ao de um reticulado. Analogamente aos conjuntos parcialmente ordenados vistos como categorias, {\it branching} poderia ser visto como um produto de dois objetos, e {\it merging} como o coproduto de dois objetos, mas isto são coisas a se estudar.
111 152

0 comments on commit 3b45822

Please sign in to comment.
Something went wrong with that request. Please try again.