\begin{pattern}{par-share-control}
\begin{circusaction*}
  \circblockopen
    \circblockopen
      \circblockopen
        \circmu X \circspot A \circseq start \then \Skip \circseq sync \then X
      \circblockclose
      \also
      \t1 \lpar ns | \lchanset start, sync \rchanset | \emptyset \rpar
      \also
      \circblockopen
        \circmu X \circspot start \then \circvar v : T \circspot A_1 \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
      \circblockclose
      \also
      \t1 \lpar \emptyset | \lchanset start, output, sync \rchanset | \emptyset \rpar
      \also
      \circblockopen
        \circmu X \circspot start \then \circvar v : T \circspot A_2 \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
      \circblockclose
      \also
      \t1 \dots
      \also
      \t1 \lpar \emptyset | \lchanset start, output, sync \rchanset | \emptyset \rpar
      \also
      \circblockopen
        \circmu X \circspot start \then \circvar v : T \circspot A_n \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
      \circblockclose
    \circblockclose
    \also
    \t1 \lpar ns | \lchanset start, record, output, sync \rchanset | \emptyset \rpar
    \also
    \circblockopen
      \circmu X \circspot init \then start \then
      \circblockopen
        (record~?~\anyvar \then \Skip) ~ ~ \interleave
        \\
        (record~?~\anyvar \then \Skip) ~ ~ \interleave
        \\
        \t1 \dots
        \\
        (record~?~\anyvar \then \Skip)
      \circblockclose
      \circseq
      output~?~\anyvar \then \Skip \circseq sync \then X
    \circblockclose
  \circblockclose
  \also
  \t1 \refby
  \also
  \circblockopen
    \circblockopen
      \circmu X \circspot A \circseq \red{init \then \Skip} \circseq start \then \Skip \circseq sync \then X
    \circblockclose
    \also
    \t1 \lpar ns | \lchanset start, sync \rchanset | \emptyset \rpar
    \also
    \circblockopen
      \circmu X \circspot start \then \circvar v : T \circspot A_1 \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
    \circblockclose
    \also
    \t1 \lpar ns | \lchanset start, output, sync \rchanset | \emptyset \rpar
    \also
    \circblockopen
      \circmu X \circspot start \then \circvar v : T \circspot A_2 \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
    \circblockclose
    \also
    \t1 \dots
    \also
    \t1 \lpar ns | \lchanset start, output, sync \rchanset | \emptyset \rpar
    \also
    \circblockopen
      \circmu X \circspot start \then \circvar v : T \circspot A_n \circseq record~!~v \then \Skip \circseq output~?~\anyvar \then \Skip \circseq sync \then X
    \circblockclose
  \circblockclose
  \also
  \provided \; \{start, sync\} \cap \usedC(A) = \emptyset \; \provand
  \also
  \t1 \{start, record, output, sync\} \cap \usedC(A_i) = \emptyset \; \mbox{for all} \; i : 1 \upto n
\end{circusaction*}
\end{pattern}
