root / CSL16 / bc-convergence.tex @ 117
Historique | Voir | Annoter | Télécharger (12,52 ko)
1 | 33 | adas | |
---|---|---|---|
2 | 71 | adas | \section{Convergence of Bellantoni-Cook programs in $\arith$} |
3 | 88 | adas | \label{sect:bc-convergence} |
4 | 73 | adas | %\anupam{In this section, use whatever form of the deduction theorem is necessary and reverse engineer precise statement later.} |
5 | 34 | adas | |
6 | 110 | adas | In this section we show that $I\sigzer$, and so also $\arith$, proves the convergence of any equational specification induced by a BC program, hence any function in $\FP$. |
7 | 110 | adas | %Since BC programs can compute any polynomial-time function, we obtain a completeness result. In the next section we will show the converse, that any provably convergent function of $\arith$ is polynomial-time computable. |
8 | 110 | adas | % |
9 | 110 | adas | The underlying construction of the proof here is similar in spirit to those occurring in \cite{Cantini02} and \cite{Leivant94:found-delin-ptime}. In fact, like in those works, only quantifier-free positive induction is required, but here we moreover must take care to respect additive and multiplicative behaviour of linear connectives. |
10 | 34 | adas | |
11 | 73 | adas | We will assume the formulation of BC programs with regular PRN, not simultaneous PRN. |
12 | 59 | adas | |
13 | 59 | adas | |
14 | 73 | adas | %\subsection{Convergence in arithmetic} |
15 | 60 | adas | |
16 | 56 | pbaillot | %\begin{theorem} |
17 | 56 | pbaillot | % [Convergence] |
18 | 56 | pbaillot | % If $\Phi(f)$ is an equational specification corresponding to a BC-program defining $f$, then $\cax{\Sigma^N_1}{\pind} \proves \ !\Phi(f) \limp \forall \vec{x}^{!N} . N(f(\vec x))$. |
19 | 56 | pbaillot | %\end{theorem} |
20 | 56 | pbaillot | |
21 | 73 | adas | %We first want to show that the system ${\Sigma^{\word}_1}-{\pind}$ is expressive enough, that is to say that all polynomial-time functions can be represented by some equational specifications that are provably total. To do so we consider equational specifications of BC-programs. |
22 | 33 | adas | \begin{theorem} |
23 | 73 | adas | % [Convergence] |
24 | 90 | adas | \label{thm:arith-proves-bc-conv} |
25 | 89 | adas | If $\eqspec$ is a BC program defining a function $f$, then $I\sigzer$ proves $\conv(f, \eqspec)$. |
26 | 33 | adas | \end{theorem} |
27 | 75 | adas | |
28 | 105 | adas | %\anupam{Consider informalising some of these arguments under (some version of) the deduction theorem. Formal stuff can be put in an appendix. Maybe add a remark somewhere about arguing informally under deduction, taking care for non-modalised formulae.} |
29 | 75 | adas | |
30 | 105 | adas | \begin{proof}[Proof sketch] |
31 | 40 | adas | % We write function symbols in $\arith$ with arguments delimited by $;$, as for BC-programs. |
32 | 109 | adas | We appeal to Lemma~\ref{lemma:spec-norm-form} and show that $\closure{\eqspec} \cup I\sigzer$ proves $\forall \vec{u}^{!\word} . \forall \vec{x}^\word . \word(f(\vec u ; \vec x))$. |
33 | 109 | adas | % \begin{equation} |
34 | 109 | adas | % \label{eqn:prv-cvg-ih} |
35 | 109 | adas | %\forall \vec{u}^{!\word} . \forall \vec{x}^\word . \word(f(\vec u ; \vec x)) |
36 | 109 | adas | % \end{equation} |
37 | 105 | adas | We proceed by induction on the structure of a BC program for $f$, and sketch only the key cases here. |
38 | 73 | adas | % We give some key cases in what follows. |
39 | 33 | adas | |
40 | 109 | adas | Suppose $f(u, \vec v ; \vec x)$ is defined by PRN from functions $g(\vec v ; \vec x), h_i ( u , \vec v ; \vec x , y )$. |
41 | 109 | adas | % \[ |
42 | 109 | adas | % \begin{array}{rcl} |
43 | 109 | adas | % f(\epsilon,\vec v ; \vec x) & = & g(\vec v ; \vec x) \\ |
44 | 109 | adas | % f(\succ_i u , \vec v; \vec x) & = & h_i (u, \vec v ; \vec x , f(u , \vec v ; \vec x)) |
45 | 109 | adas | % \end{array} |
46 | 109 | adas | % \] |
47 | 109 | adas | % By the inductive hypothesis we have \eqref{eqn:prv-cvg-ih} for $g,h_0,h_1$ in place of $f$. |
48 | 109 | adas | From the inductive hypothesis for $g$, we construct the following proof, |
49 | 33 | adas | \begin{equation} |
50 | 75 | adas | \label{eqn:prn-cvg-base} |
51 | 107 | adas | \small |
52 | 75 | adas | \vlderivation{ |
53 | 75 | adas | \vliq{\beta}{}{!\word(\vec v) , \word (\vec x) \seqar \word(f (\epsilon , \vec v ; \vec x)) }{ |
54 | 75 | adas | \vliq{\alpha}{}{!\word (\vec v) , \word (\vec x) \seqar \word (g (\vec v ; \vec x) ) }{ |
55 | 109 | adas | % \vltr{\IH}{\seqar \forall \vec v^{!\word} . \forall \vec x^\word . \word (g (\vec v ; \vec x)) }{\vlhy{\quad}}{\vlhy{}}{\vlhy{\quad}} |
56 | 109 | adas | % \vliq{}{}{\seqar \forall \vec v^{!\word} . \forall \vec x^\word . \word (g (\vec v ; \vec x))}{\vlhy{}} |
57 | 109 | adas | \vlhy{\seqar \forall \vec v^{!\word} . \forall \vec x^\word . \word (g (\vec v ; \vec x))} |
58 | 75 | adas | } |
59 | 75 | adas | } |
60 | 75 | adas | } |
61 | 33 | adas | \end{equation} |
62 | 109 | adas | where $\alpha $ is purely logical and $\beta$ is obtained from $\closure{\eqspec}$ and equality. |
63 | 75 | adas | % We first prove, |
64 | 75 | adas | % \begin{equation} |
65 | 75 | adas | % !\word (a) , !\word (\vec v) , \word (\vec x) \land \word (f( a , \vec v ; \vec x ) ) |
66 | 75 | adas | % \seqar |
67 | 75 | adas | % \word (\vec x) \land \word (f( \succ_i a , \vec v ; \vec x ) ) |
68 | 75 | adas | % \end{equation} |
69 | 75 | adas | % for $i=0,1$, whence we will apply $\ind$. We construct the following proofs: |
70 | 109 | adas | We also construct the proofs, |
71 | 75 | adas | \begin{equation} |
72 | 75 | adas | \label{eqn:prn-cvg-ind} |
73 | 75 | adas | %\vlderivation{ |
74 | 93 | adas | % \vlin{\rigrul{\limp}}{}{ \word(\vec x) \limp \word ( f(u, \vec v ; \vec x) ) \seqar \word (\vec x) \limp \word( f(\succ_i u , \vec v ; \vec x) ) }{ |
75 | 93 | adas | % \vliq{\gamma}{}{\word(\vec x), \word(\vec x) \limp \word ( f(u, \vec v ; \vec x) ) \seqar \word( f(\succ_i u , \vec v ; \vec x) ) }{ |
76 | 93 | adas | % \vliin{\lefrul{\limp}}{}{\word(\vec x), \word(\vec x), \word(\vec x) \limp \word ( f(u, \vec v ; \vec x) ) \seqar \word( f(\succ_i u , \vec v ; \vec x) ) }{ |
77 | 93 | adas | % \vlin{\id}{}{\word(\vec x) \seqar \word (\vec x) }{\vlhy{}} |
78 | 75 | adas | % }{ |
79 | 93 | adas | % \vliq{\beta}{}{ \word (\vec x) , \word (f(u , \vec v ; \vec x) ) \seqar \word ( f(\succ_i u , \vec v ; \vec x) ) }{ |
80 | 93 | adas | % \vliq{\alpha}{}{ \word (\vec x) , \word (f(u , \vec v ; \vec x) ) \seqar \word ( h_i( u , \vec v ; \vec x , f( u, \vec v ; \vec x )) ) }{ |
81 | 93 | adas | % \vltr{IH}{ \seqar \forall u^{!\word}, \vec v^{!\word} . \forall \vec x^\word , y^\word . \word( h_i (u, \vec v ; \vec x, y) ) }{\vlhy{\quad}}{\vlhy{}}{\vlhy{\quad}} |
82 | 75 | adas | % } |
83 | 75 | adas | % } |
84 | 75 | adas | % } |
85 | 75 | adas | % } |
86 | 75 | adas | % } |
87 | 75 | adas | % } |
88 | 107 | adas | \small |
89 | 75 | adas | \vlderivation{ |
90 | 75 | adas | \vlin{\lefrul{\land}}{}{ !\word (a) , !\word (\vec v) , \word (\vec x) \land \word (f( a , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word (f( \succ_i a , \vec v ; \vec x ) ) }{ |
91 | 75 | adas | \vlin{\lefrul{\cntr}}{}{ !\word (a) , !\word (\vec v) , \word (\vec x) , \word (f( a , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word (f( \succ_i a , \vec v ; \vec x ) )}{ |
92 | 75 | adas | \vliin{\rigrul{\land}}{}{ !\word (a) , !\word (\vec v) , \word(\vec x), \word (\vec x) , \word (f( a , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word (f( \succ_i a , \vec v ; \vec x ) )}{ |
93 | 75 | adas | \vlin{\id}{}{\word (\vec x) \seqar \word (\vec x)}{\vlhy{}} |
94 | 75 | adas | }{ |
95 | 75 | adas | \vliq{\beta}{}{ !\word (u) , !\word(\vec v) , \word (\vec x) , \word (f ( u , \vec v ; \vec x ) ) \seqar \word (f (\succ_i u , \vec{v} ; \vec x ) ) }{ |
96 | 93 | adas | \vliq{\alpha}{}{ !\word (u) , !\word (\vec v) , \word (\vec x) , \word (f ( u , \vec v ; \vec x ) ) \seqar \word ( h_i ( u , \vec v ; \vec x , f( u , \vec v ; \vec x ) ) ) }{ |
97 | 109 | adas | % \vltr{\IH}{ \seqar \forall u^{!\word} , \vec v^{!\word} . \forall \vec x^\word , y^\word . \word ( h_i ( u, \vec v ; \vec x, y ) ) }{ \vlhy{\quad} }{\vlhy{}}{\vlhy{\quad}} |
98 | 109 | adas | %\vliq{}{}{ \seqar \forall u^{!\word} , \vec v^{!\word} . \forall \vec x^\word , y^\word . \word ( h_i ( u, \vec v ; \vec x, y ) ) }{\vlhy{}} |
99 | 109 | adas | \vlhy{\seqar \forall u^{!\word} , \vec v^{!\word} . \forall \vec x^\word , y^\word . \word ( h_i ( u, \vec v ; \vec x, y ) )} |
100 | 75 | adas | } |
101 | 75 | adas | } |
102 | 75 | adas | } |
103 | 75 | adas | } |
104 | 75 | adas | } |
105 | 75 | adas | } |
106 | 75 | adas | \end{equation} |
107 | 109 | adas | from the inductive hypotheses for $h_i$, where $\alpha$ and $\beta$ are similar to before. |
108 | 93 | adas | %% so let us suppose that $\word(\vec v)$ and prove, |
109 | 75 | adas | % \begin{equation} |
110 | 93 | adas | %% \forall u^{!\word} . (\word(\vec x) \limp \word(f(u , \vec v ; \vec x) ) |
111 | 93 | adas | %!\word (u) , !\word (\vec v) , \word (\vec x) \seqar \word ( f(u, \vec v ; \vec x) ) |
112 | 75 | adas | % \end{equation} |
113 | 75 | adas | % by $\cax{\Sigma^N_1}{\pind}$ on $u$. After this the result will follow by $\forall$-introduction for $u, \vec v , \vec x$. |
114 | 75 | adas | |
115 | 75 | adas | % In the base case we have the following proof, |
116 | 75 | adas | % \[ |
117 | 48 | adas | % \vlderivation{ |
118 | 93 | adas | % \vlin{\rigrul{\limp}}{}{ \seqar \word (\vec x) \limp \word (f(\epsilon , \vec v ; \vec x )) }{ |
119 | 93 | adas | % \vliq{\beta}{}{ \word (\vec x) \seqar \word ( f( \epsilon , \vec v ; \vec x) ) }{ |
120 | 93 | adas | % \vliq{\alpha}{}{ \word (\vec x) \seqar \word ( g (\vec v ; \vec x) ) }{ |
121 | 93 | adas | % \vltr{IH}{\seqar \forall v^{!\word} . \forall x^\word . \word( g(\vec v ; \vec x) ) }{\vlhy{\quad}}{\vlhy{}}{\vlhy{\quad}} |
122 | 48 | adas | % } |
123 | 48 | adas | % } |
124 | 48 | adas | % } |
125 | 48 | adas | % } |
126 | 77 | adas | Finally we compose these proofs as follows: |
127 | 77 | adas | \[ |
128 | 107 | adas | \small |
129 | 77 | adas | \vlderivation{ |
130 | 77 | adas | \vliq{\rigrul{\forall}}{}{ \seqar \forall u^{!\word} , \vec v^{!\word} . \forall \vec x^\word . \word ( f(u , \vec v ;\vec x) ) }{ |
131 | 77 | adas | \vliq{\lefrul{\cntr}}{}{ !\word (u), !\word (\vec v) , \word (\vec x) \seqar \word ( f(u , \vec v ;\vec x) ) } |
132 | 77 | adas | { |
133 | 77 | adas | \vliin{\cut}{}{ !\word (u), !\word(\vec v), !\word (\vec v) , \word (\vec x) , \word (\vec x) \seqar \word ( f(u , \vec v ;\vec x) ) }{ |
134 | 109 | adas | %\vltr{\pi_\epsilon}{ !\word (\vec v) , \word (\vec x) \seqar \word ( f( \epsilon , \vec v ; \vec x ) ) }{\vlhy{\quad}}{\vlhy{}}{\vlhy{\quad}} |
135 | 109 | adas | \vlhy{ !\word (\vec v) , \word (\vec x) \seqar \word ( f( \epsilon , \vec v ; \vec x ) ) } |
136 | 77 | adas | } |
137 | 77 | adas | { |
138 | 77 | adas | \vliq{\wk}{}{ !\word (u), !\word (\vec v) , \word (\vec x), \word ( f( \epsilon , \vec v ; \vec x ) ) \seqar \word ( f( u , \vec v ; \vec x ) ) }{ |
139 | 77 | adas | \vliq{\land\text{-}\mathit{inv}}{}{ !\word (u), !\word (\vec v) , \word (\vec x) ,\word ( f( \epsilon , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word ( f( u , \vec v ; \vec x ) ) }{ |
140 | 77 | adas | \vlin{\ind}{}{ !\word (u), !\word (\vec v) , \word (\vec x) \land \word ( f( \epsilon , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word ( f( u , \vec v ; \vec x ) ) } |
141 | 77 | adas | { |
142 | 77 | adas | \vlhy{ |
143 | 77 | adas | \left\{ |
144 | 109 | adas | %\vltreeder{\pi_i}{ !\word (a), !\word (\vec v) , \word (\vec x) \word ( f( a , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word ( f( \succ_i u , \vec v ; \vec x ) ) }{\quad}{}{} |
145 | 109 | adas | !\word (a), !\word (\vec v) , \word (\vec x) \word ( f( a , \vec v ; \vec x ) ) \seqar \word (\vec x) \land \word ( f( \succ_i u , \vec v ; \vec x ) ) |
146 | 107 | adas | \right\}_i |
147 | 77 | adas | } |
148 | 77 | adas | } |
149 | 77 | adas | } |
150 | 77 | adas | } |
151 | 77 | adas | } |
152 | 77 | adas | } |
153 | 77 | adas | } |
154 | 77 | adas | } |
155 | 77 | adas | \] |
156 | 107 | adas | for $i=0,1$, where the steps $\inv{\land}$ are obtained from invertibility of $\lefrul{\land}$. |
157 | 40 | adas | |
158 | 93 | adas | %For the inductive step, we suppose that $\word (u)$ and the proof is as follows, |
159 | 40 | adas | % |
160 | 77 | adas | %where the steps indicated $\alpha$ and $\beta$ are analogous to those for the base case. |
161 | 77 | adas | %%, and $\gamma$ is an instance of the general scheme: |
162 | 77 | adas | %%\begin{equation} |
163 | 77 | adas | %%\label{eqn:nat-cntr-left-derivation} |
164 | 77 | adas | %%\vlderivation{ |
165 | 93 | adas | %% \vliin{\cut}{}{ \word (t) , \Gamma \seqar \Delta }{ |
166 | 93 | adas | %% \vlin{\wordcntr}{}{ \word (t) \seqar \word (t) \land \word (t) }{\vlhy{}} |
167 | 77 | adas | %% }{ |
168 | 93 | adas | %% \vlin{\lefrul{\land}}{}{\word (t) \land \word (t) , \Gamma \seqar \Delta}{ \vlhy{\word (t) ,\word (t) , \Gamma \seqar \Delta} } |
169 | 77 | adas | %% } |
170 | 77 | adas | %% } |
171 | 77 | adas | %%\end{equation} |
172 | 77 | adas | % |
173 | 77 | adas | %% |
174 | 77 | adas | %%For the inductive step, we need to show that, |
175 | 77 | adas | %%\[ |
176 | 77 | adas | %%\forall x^{!N} . (( N(\vec y) \limp N( f(x, \vec x ; \vec y) ) ) \limp N(\vec y) \limp N(f(\succ_i x , \vec x ; \vec y) ) ) |
177 | 77 | adas | %%\] |
178 | 77 | adas | %%so let us suppose that $N(x)$ and we give the following proof: |
179 | 77 | adas | %%\[ |
180 | 77 | adas | %%\vlderivation{ |
181 | 77 | adas | %% \vlin{N\cntr}{}{N(y) \limp ( N(y ) \limp N(f( x , \vec x ; \vec y ) ) ) \limp N(f (\succ_i x , \vec x ; \vec y) ) }{ |
182 | 77 | adas | %% \vliin{}{}{N(y) \limp N(y) \limp ( N(y ) \limp N(f( x , \vec x ; \vec y ) ) ) \limp N(f (\succ_i x , \vec x ; \vec y) ) }{ |
183 | 77 | adas | %% \vliin{}{}{ N(y) \limp N(y) \limp ( N(y) \limp N( f(x, \vec x ; \vec y) ) ) \limp N( h_i (x , \vec x ; \vec y , f(x , \vec x ; \vec y) ) ) }{ |
184 | 77 | adas | %% \vltr{MLL}{( N(\vec y) \limp (N (\vec y) \limp N(f(x, \vec x ; \vec y) )) \limp N(f(x, \vec x ; \vec y)) }{\vlhy{\quad }}{\vlhy{\ }}{\vlhy{\quad }} |
185 | 77 | adas | %% }{ |
186 | 77 | adas | %% \vlhy{2} |
187 | 77 | adas | %% } |
188 | 77 | adas | %% }{ |
189 | 77 | adas | %% \vlhy{3} |
190 | 77 | adas | %%} |
191 | 77 | adas | %%} |
192 | 77 | adas | %%} |
193 | 77 | adas | %%\] |
194 | 77 | adas | %%TOFINISH |
195 | 50 | adas | |
196 | 109 | adas | Safe compositions are essentially handled by many cut steps, using $\alpha$ and $\beta$ like derivations again and, crucially, left-contractions on both $!\word$ and $\word $ formulae.\footnote{In the latter case, strictly speaking, we mean cuts against $\wordcntr$.} The initial functions are routine. |
197 | 50 | adas | |
198 | 50 | adas | |
199 | 109 | adas | %We also give the case of the conditional initial function $C (; x, y_\epsilon , y_0, y_1)$, to exemplify the use of additives. |
200 | 109 | adas | %%The conditional is defined equationally as: |
201 | 109 | adas | %%\[ |
202 | 109 | adas | %%\begin{array}{rcl} |
203 | 109 | adas | %%C (; \epsilon, y_\epsilon , y_0, y_1 ) & = & y_\epsilon \\ |
204 | 109 | adas | %%C(; \succ_0 x , y_\epsilon , y_0, y_1) & = & y_0 \\ |
205 | 109 | adas | %%C(; \succ_1 x , y_\epsilon , y_0, y_1) & = & y_1 |
206 | 109 | adas | %%\end{array} |
207 | 109 | adas | %%\] |
208 | 109 | adas | %Let $\vec y = ( y_\epsilon , y_0, y_1 )$ and construct the required proof as follows: |
209 | 109 | adas | %\[ |
210 | 109 | adas | %\small |
211 | 109 | adas | %\vlderivation{ |
212 | 109 | adas | %\vliq{}{}{ \word (x) , \word (\vec y) \seqar \word ( C(; x ,\vec y) )}{ |
213 | 109 | adas | %\vliin{2\cdot \laor}{}{ x = \epsilon \laor \exists z^\word . x = \succ_0 z \laor \exists z^\word x = \succ_1 z , \word (\vec y) \seqar \word ( C(;x \vec y) ) }{ |
214 | 109 | adas | %\vliq{}{}{ x = \epsilon , \word (\vec y) \seqar \word ( C(; x , \vec y) ) }{ |
215 | 109 | adas | %\vliq{}{}{ \word (\vec y) \seqar \word ( C( ; \epsilon , \vec y ) ) }{ |
216 | 109 | adas | %\vlin{\wk}{}{ \word (\vec y) \seqar \word (y_\epsilon) }{ |
217 | 109 | adas | %\vlin{\id}{}{\word (y_\epsilon) \seqar \word ( y_\epsilon )}{\vlhy{}} |
218 | 109 | adas | %} |
219 | 109 | adas | %} |
220 | 109 | adas | %} |
221 | 109 | adas | %}{ |
222 | 109 | adas | %\vlhy{ |
223 | 109 | adas | %\left\{ |
224 | 109 | adas | %\vlderivation{ |
225 | 109 | adas | %\vlin{\lefrul{\exists}}{}{ \exists z^\word . x = \succ_i z , \word (\vec y) \seqar \word ( C(;x , \vec y) ) }{ |
226 | 109 | adas | %\vliq{}{}{ x = \succ_i a , \word (\vec y ) \seqar \word (C(; x ,\vec y)) }{ |
227 | 109 | adas | %\vliq{}{}{ \word (\vec y) \seqar \word ( C(; \succ_i a , \vec y ) ) }{ |
228 | 109 | adas | %\vlin{\wk}{}{ \word (\vec y) \seqar \word (y_i) }{ |
229 | 109 | adas | %\vlin{\id}{}{\word (y_i) \seqar \word (y_i)}{\vlhy{}} |
230 | 109 | adas | %} |
231 | 109 | adas | %} |
232 | 109 | adas | %} |
233 | 109 | adas | %} |
234 | 109 | adas | %} |
235 | 109 | adas | %\right\}_{i = 0,1} |
236 | 109 | adas | %} |
237 | 109 | adas | %} |
238 | 109 | adas | %} |
239 | 109 | adas | %} |
240 | 109 | adas | %\] |
241 | 109 | adas | %whence the result follows by $\forall$-introduction. |
242 | 109 | adas | %%The other initial functions are routine. |
243 | 33 | adas | \end{proof} |
244 | 40 | adas | |
245 | 40 | adas | |
246 | 53 | adas | |
247 | 53 | adas | |
248 | 53 | adas | |
249 | 53 | adas | |
250 | 53 | adas | |
251 | 53 | adas | |
252 | 53 | adas | |
253 | 53 | adas | |
254 | 53 | adas | |
255 | 53 | adas | |
256 | 53 | adas | |
257 | 53 | adas | |
258 | 53 | adas | |
259 | 53 | adas | |
260 | 53 | adas | |
261 | 53 | adas | |
262 | 53 | adas | |
263 | 53 | adas | |
264 | 53 | adas | |
265 | 53 | adas | |
266 | 53 | adas | |
267 | 53 | adas | |
268 | 53 | adas | |
269 | 53 | adas | |
270 | 53 | adas | |
271 | 53 | adas | |
272 | 53 | adas | |
273 | 53 | adas | |
274 | 53 | adas | |
275 | 53 | adas | |
276 | 53 | adas | |
277 | 53 | adas | |
278 | 53 | adas | |
279 | 53 | adas | |
280 | 53 | adas | |
281 | 53 | adas | |
282 | 53 | adas | |
283 | 53 | adas | |
284 | 53 | adas |