$ \def\conv#1{#1^\circ} \def\comp{\mathbin\cdot} \def\atmost{\subseteq} \def\to{\rightarrow} \def\sep{\rule{15em}{0.3pt}} \def\rcb#1#2#3#4{\mathopen{\langle}#1 #2 : #3 : #4\mathclose{\rangle}} \def\larrow#1#2#3{#3\ \xleftarrow{#2}\ #1} \def\rarrow#1#2#3{#1\ \xrightarrow{#2}\ #3} \def\Nat{\mathbb{N}} \def\conj#1#2{\mathopen{\langle} #1, #2\mathclose{\rangle}} $
Q3.1 - Pretende-se especificar o metro de Tóquio onde (cf. figura) há várias linhas ($L$) representadas com cores diferentes, cujas paragens ($P$) estão numeradas sequencialmente e onde as estações ($E$) podem incluir paragens de linhas diferentes $-\!-$ e.g. a estação $\mathsf{Otemachi}$ tem as paragens $\fbox{$\frac C {11}$}$, $\fbox{$\frac M {18}$}$, etc $-\!-$ permitindo aos viajantes mudar de linha.
Sabendo-se que cada paragem está sempre associada a uma e uma só estação, definiu-se o modelo simplificado
que a cada paragem associa a respectiva linha, número e estação. Por exemplo, sendo $p$ a paragem $\fbox{$\frac M {18}$}$ da figura, ter-se-á
$\begin{array}{l}st\ p = Otemachi\\\mathit{ln}\ p = M\\nr\ p = 18\end{array}$.
Claramente, o sistema de numeração das paragens das linhas necessita do seguinte invariante:
Se $n+1$ é o número de uma paragem de uma dada linha, então há outra paragem da mesma linha com o número $n$.
Qual das seguintes formulações desse invariante escolheria,
\begin{eqnarray} && \frac{nr}{succ \cdot nr} \subseteq \frac{ln}{ln} \label{eq:181128a} \\&& \nonumber\\&& \frac{nr}{succ} \subseteq nr \cdot \frac{ln}{ln} \end{eqnarray}onde $succ\ n = n+1$ é a função sucessor em $\Nat$?
Converta cada "quadrado mágico" na expressão lógica equivalente e decida, justificando.
$\Box$
Resolução:
Repare-se, antes de mais, que
Logo, a opção deverá ir para $\frac{nr}{succ} \subseteq nr \cdot \frac{ln}{ln}$, que converte para o pointwise
\begin{eqnarray} \rcb\forall{n,p} {n+1=nr\ p} {\rcb\exists q {n=nr\ q}{ln\ q = ln\ p}} \end{eqnarray}(TPC: converter a outra alternativa para lógica quantificada e avaliar o desvio em relação ao pretendido.) </span>
Q3.2 - A figura é retirada da página da Wikipedia sobre o protocolo de troca de chaves de Diffie–Hellman, onde informação numérica é simplificada sobre a forma de cores,
cf. também o quadro seguinte:
Informaçao pública | Informação privada (Alice) | Informação privada (Bob) |
---|---|---|
yellow |
red |
cyan |
orange = yellow + red |
blue = yellow + cyan |
|
orange , blue |
||
blue + red |
orange + cyan |
O protocolo assume que $f = (yellow +)$ tem uma inversa à esquerda $g$ (i.e. tal que $g \cdot f = id$), mas $g$ é computacionalmente muito complexa.
Contudo, para o "common secret" poder ser obtido de forma independente por Alice
e Bob
é preciso que o quadrado mágico
se verifique para uma determinada escolha de $R$, $S$, $P$ e $Q$. Identifique essa escolha e justifique-a.
$\Box$
Resolução:
\begin{eqnarray*} && blue + red = orange + cyan \\&\equiv& \mbox{\{substituting\}} \\&& % new term (yellow + cyan) + red = (yellow + red) + cyan \\&\equiv& \mbox{\{go pointfree\}} \\&& % new term (+ red) \cdot (+ cyan) \cdot \underline{yellow} = (+ cyan) \cdot (+ red) \cdot \underline{yellow} \end{eqnarray*}Em geral:
\begin{eqnarray} (+ a) \cdot (+ b) = (+ b) \cdot (+ a) \end{eqnarray}isto é, a operação $x+y$ de combinação de "cores" é permutativa.
NB: recordar que, pela lei da inclusão de funções, $(+ a) \cdot (+ b) = (+ b) \cdot (+ a)$ é a mesma coisa que $(+ a) \cdot (+ b) \subseteq (+ b) \cdot (+ a)$.
Q3.3 - A forma mais habitual de desenvolver um programa é usar uma bateria de testes para "verificar" se o programa passa os testes e, caso isso não aconteça, corrigi-lo e sujeitando-o de novo aos testes, etc etc (cf. o ciclo "edit-compile-run").
Um programa $P: A \rightarrow B$ é uma relação simples que para entradas em $A$ dá saídas (ou não) de tipo $B$.
Queremos melhorar $P$ com base numa bateria de testes $R : A \rightarrow B$ que indica que saídas em $B$ são aceitáveis para que entradas em $A$.
Suponha que modifica $P$, obtendo $Q$ tal que
\begin{eqnarray} id \cap P^\circ \cdot R \subseteq Q^\circ \cdot R \end{eqnarray}se verifica.
Acha que $P$ piorou ou melhorou? E porquê?
Como escreveria $id \cap P^\circ \cdot R \subseteq Q^\circ \cdot R$ como um quadrado mágico?
$\Box$
Resolução:
Não piorou: $Q$ responde bem pelo menos onde $P$ já respondia bem.