summaryrefslogtreecommitdiff
path: root/edit-lens/src/Control/Edit/Container/Transducer.lhs
diff options
context:
space:
mode:
Diffstat (limited to 'edit-lens/src/Control/Edit/Container/Transducer.lhs')
-rw-r--r--edit-lens/src/Control/Edit/Container/Transducer.lhs16
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
158Beweis:
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}
159diffContTrans :: forall state input output. 173diffContTrans :: forall state input output.
160 ( Container input, Container output 174 ( Container input, Container output