diff options
-rw-r--r-- | edit-lens/src/Control/Edit/Container/Transducer.lhs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/edit-lens/src/Control/Edit/Container/Transducer.lhs b/edit-lens/src/Control/Edit/Container/Transducer.lhs index 9db26db..492ec91 100644 --- a/edit-lens/src/Control/Edit/Container/Transducer.lhs +++ b/edit-lens/src/Control/Edit/Container/Transducer.lhs | |||
@@ -154,7 +154,21 @@ Beweisskizze: | |||
154 | Betrachte nun $\text{Replace}(c)$ gefolgt von $\text{Replace}(\text{init})$ unter $\text{diffContTrans}$ auf $\text{init}$. | 154 | Betrachte nun $\text{Replace}(c)$ gefolgt von $\text{Replace}(\text{init})$ unter $\text{diffContTrans}$ auf $\text{init}$. |
155 | Für das Ergebnis $e_o^{-1}$ muss gelten, dass $e_o^{-1} \circ e_o = \text{id}$. | 155 | Für das Ergebnis $e_o^{-1}$ muss gelten, dass $e_o^{-1} \circ e_o = \text{id}$. |
156 | Wir haben also Inverse für beliebige Elemente des edit-monoiden auf dem Output; also eine Gruppe auf edits auf dem Output die kompatibel ist mit der bestehenden monoid struktur. | 156 | Wir haben also Inverse für beliebige Elemente des edit-monoiden auf dem Output; also eine Gruppe auf edits auf dem Output die kompatibel ist mit der bestehenden monoid struktur. |
157 | 157 | ||
158 | Beweis: | ||
159 | Nimm an edits auf dem output-container $N$ bilden einen Monoiden, jedoch keine Gruppe, d.h. es existiert $e_o$ sodass für alle $e_o^\prime$, edits auf dem output-container, gilt, dass $e_o \cdot e_o^prime \neq 1$. | ||
160 | Es sei $M$ der Container mit genau einer Shape und belegten Position und ${\text{init}, c}$ als Inhalt mit $\text{Replace}$ als Modul-Struktur. | ||
161 | Es sei $T$ der Container-Transducer mit zwei Zuständen $A$ und $B$ und folgender Transitions-Funktion: | ||
162 | \begin{align*} | ||
163 | (A, \init) & \mapsto (1_{\partial N}, A) | ||
164 | (A, c) & \mapsto ((\text{init}_N \cdot)^{-1}(e_o), B) | ||
165 | (B, \init) & \mapsto (1_{\partial N}, B) | ||
166 | (B, c) & \mapsto (1_{\partial N}, B) | ||
167 | \end{align*} | ||
168 | Wir bezeichnen mit $T(x)$ den output des transducers beim Lauf auf $x$. | ||
169 | |||
170 | Betrachte nun die edit-linse $(\Rrightarrow, \Lleftarrow)$ für $T$ und insbesondere $e_o^{-1} = \pi_2(\Rrightarrow(\pi_1(\Rrightarrow(\ground, \text{Replace}(c))), \text{Replace}(\text{init})))$. | ||
171 | Da $T(\text{init}_M) = \text{init}_N$ und $T(c) = e_o$ muss nun gelten, dass $e_o^{-1} \cdot e_o = \init_N$, also $\partial N$ eine Gruppe. | ||
158 | \begin{code} | 172 | \begin{code} |
159 | diffContTrans :: forall state input output. | 173 | diffContTrans :: forall state input output. |
160 | ( Container input, Container output | 174 | ( Container input, Container output |