\begin{circus}
	\circchannel a: \nat
\end{circus}

\begin{circus}
	\circprocess P \circdef \circbegin
\end{circus}

\begin{circusaction}
	Act \circdef (a?x \then \Skip) \lpar | \lchanset a \rchanset | \rpar (a!5 \then \Skip)
\end{circusaction}

\begin{circusaction}
	\circspot 
		a?x
		\then \Skip
\end{circusaction}

\begin{circus}	
	\circend
\end{circus}

\begin{circus}
	\circprocess Q \circdef \circbegin
\end{circus}

\begin{circusaction}
	\circspot 
		a!7
		\then \Skip
\end{circusaction}

\begin{circus}	
	\circend
\end{circus}

\begin{circus}	
	\circprocess R \circdef P \lpar \lchanset a \rchanset \rpar Q
\end{circus}

\begin{circus}
	\circprocess S \circdef \circbegin %%Após a sincronização em a?y, dá um estranho "Alting Barrier front-end enabled by one or more threads". Este caso de teste irá para os que serão analisados após a escrita da dissertação (pois não estou sabendo identificar o porquê deste problema)
\end{circus}

\begin{circusaction}
	SAct \circdef (a?x \then \Skip) \lpar | \lchanset a \rchanset | \rpar (a!5 \then \Skip)
\end{circusaction}

\begin{circusaction}
	\circspot 
		a?y
		\then SAct
\end{circusaction}

\begin{circus}	
	\circend
\end{circus}


%%%%%%OBSERVAÇÕES ABAIXO DE 08/06/2010
%%%%%LEGENDA:
	% (!!V!!): Deu certo. Está 100% como esperado
	% (Q): Deu quase tudo certo, exceto por um pequeno detalhe
	% (M): Mais ou menos... Não dá para dizer que está errado, mas também não dá para aceitar
	% (X): Nada está como esperado... Necessita urgente de reparo

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TRADUÇÃO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%O QUE DEVE ACONTECER:
	%1. O canal "a" NÃO é usado em multi-sincronização. Portanto, ele deverá ser traduzido como uma variavel GeneralChannel com dimensão 0
%%O QUE ACONTECE:
	%(!!V!!)1. O canal "a" realmente é traduzido como um canal com dimensão 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%GUI%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%O QUE DEVE ACONTECER:
	%1. Quando executado, P deve apresentar um botão com o nome "a", e um único campo para o usuário entrar com o valor comunicado. Como a comunicação é a?x, qualquer valor dentro do intervalo dado na tela de JCircus deve ser aceito
	%2. Quando executado, Q deve apresentar um botão com o nome "a". Apesar de Q comunicar um valor, A sua GUI não deverá apresentar um campo. Isto ocorre porque a comunicação a!7 é traduzida como a.write(7), e o .write de JCSP só sincroniza com o .read de JCSP. a!7 é traduzido assim porque o canal "a" não é usado em multi-sincronização
	%3. Quando executado, R não deve apresentar GUI, mas a sua execução deve terminar. Isto ocorre porque os comportamentos de P e Q são a?x e a!7, que sincronizam.
	%4. Quando executado, S deve exibir GUI, pois "a" aparece como canal dependente na ação principal, que é prefixada. Além disso, deve ocorrer uma sincronização depois do clique de algum número inteiro no intervalo dado como entrada de JCircus (default de 0 a 9). Após esta sincronização, como "a" não mais é oferecido, caso o botão "a" seja clicado, a GUI deve entrar em deadlock.
%%O QUE ACONTECE:
	%1.(!!V!!) Tudo confere. Foram entrados no campo de "a" os valores: -1, 0, 1, 2, e 7. A sincronização ocorreu para todos. Como esperado, ao ter o botão "a" clicado duas vezes, a GUI do processo entrou em deadlock, independente do valor entrado. A explicação para isto é que P só oferece "a" uma vez. Quando o usuário aperta em "a" sem entrar com algum valor, a GUI lança um NumberFormatException.
	%2.(Q) Quase tudo confere. A única coisa que não está conferindo é a presença do campo de texto de input, indesejado para esta situação peculiar. Mas este é um erro muito pequeno
	%3.(!!V!!) Como esperado, R não apresenta GUI, e a sua execução termina. Isto ocorre porque R é um processo sem canal independente. O canal ser independente significa que o canal só está presente em algum paralelismo no processo. Em R, é o que acontece: "a" só é visto em um paralelismo. Não é visto em ação prefixada, por exemplo...
	%4.(!!V!!) Ipsis litteris.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
