Changeset 1847


Ignore:
Timestamp:
Mar 15, 2012, 3:04:50 PM (8 years ago)
Author:
mulligan
Message:

More changes to presentation based on comments

Location:
Deliverables/D1.2/Presentations
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D1.2/Presentations/WP4-dominic.tex

    r1844 r1847  
    7373\begin{frame}
    7474\frametitle{Backend intermediate languages II}
     75\vspace{-1em}
    7576\begin{small}
    7677\begin{tabbing}
    7778\quad \=\,\quad \=\ \\
    7879\textsf{RTLabs}\\
    79 \> $\downarrow$ \> copy propagation ($\times$) \\
    80 \> $\downarrow$ \> instruction selection (\checkmark) \\
    81 \> $\downarrow$ \> change of memory models in compiler (\checkmark) \\
     80\> $\downarrow$ \> copy propagation \color{red}{$\times$} \\
     81\> $\downarrow$ \> instruction selection \color{green}{{\checkmark}} \\
     82\> $\downarrow$ \> change of memory models in compiler \color{green}{{\checkmark}} \\
    8283\textsf{RTL}\\
    83 \> $\downarrow$ \> constant propagation ($\times$) \\
    84 \> $\downarrow$ \> calling convention made explicit (\checkmark) \\
    85 \> $\downarrow$ \> layout of activation records (\checkmark) \\
     84\> $\downarrow$ \> constant propagation \color{red}{$\times$} \\
     85\> $\downarrow$ \> calling convention made explicit \color{green}{{\checkmark}} \\
     86\> $\downarrow$ \> layout of activation records \color{green}{{\checkmark}} \\
    8687\textsf{ERTL}\\
    87 \> $\downarrow$ \> register allocation and spilling (\checkmark) \\
    88 \> $\downarrow$ \> dead code elimination (\checkmark) \\
     88\> $\downarrow$ \> register allocation and spilling \color{green}{{\checkmark}} \\
     89\> $\downarrow$ \> dead code elimination \color{green}{{\checkmark}} \\
    8990\textsf{LTL}\\
    90 \> $\downarrow$ \> function linearisation (\checkmark) \\
    91 \> $\downarrow$ \> branch compression ($\times$) \\
     91\> $\downarrow$ \> function linearisation \color{green}{{\checkmark}} \\
     92\> $\downarrow$ \> branch compression \color{red}{$\times$} \\
    9293\textsf{LIN}\\
    93 \> $\downarrow$ \> relabeling (\checkmark) \\
     94\> $\downarrow$ \> relabeling \color{green}{{\checkmark}} \\
    9495\textsf{ASM}
    9596\end{tabbing}
     
    362363\begin{column}[b]{0.5\linewidth}
    363364\centering
     365In C:
    364366\begin{lstlisting}
    365367int main(int argc, char** argv) {
     
    374376\begin{column}[b]{0.5\linewidth}
    375377\centering
     378In ASM:
    376379\begin{lstlisting}
     380    ...
    377381  main:
    378382    ...
     
    387391\begin{itemize}
    388392\item
    389 Question: where do we put cost labels to capture execution costs?
     393Where do we put cost labels to capture execution costs?
    390394\item
    391395Proof obligations complicated by panoply of labels
     
    393397Doesn't work well with \texttt{g(h() + 2 + f())}
    394398\item
    395 Is \texttt{cost\_label2} ever reached? \texttt{some\_function()} must terminate!
     399Is \texttt{cost\_label2} ever reached?
    396400\item
    397401\texttt{some\_function()} may not return correctly
     
    418422
    419423\begin{frame}
     424\frametitle{Structured traces I}
     425\begin{itemize}
     426\item
     427We introduced a notion of `structured traces'
     428\item
     429These are intended to statically capture the (good) execution traces of a program
     430\item
     431To borrow a slogan: they are the `computational content of a well-formed program's execution'
     432\item
     433Come in two variants: inductive and coinductive
     434\item
     435Inductive captures program execution traces that eventually halt, coinductive ones that diverge
     436\end{itemize}
     437\end{frame}
     438
     439\begin{frame}
     440\frametitle{Structured traces II}
     441\begin{itemize}
     442\item
     443I focus on the inductive variety, as used the most (for now) in the backend
     444\item
     445In particular, used in the proof that static and dynamic cost computations coincide
     446\item
     447Traces preserved by backend compilation, initially created at RTL
     448\item
     449This will be explained later
     450\end{itemize}
     451\end{frame}
     452
     453\begin{frame}
     454\frametitle{Structured traces III}
     455\begin{itemize}
     456\item
     457Central insight is that program execution is always in the body of some function (from \texttt{main} onwards)
     458\item
     459A well formed program must have labels appearing at certain spots
     460\item
     461Similarly, the final instruction executed when executing a function must be a \texttt{RET}
     462\item
     463Execution must then continue in body of calling function, at correct place
     464\item
     465These invariants, and others, are crystalised in the specific syntactic form of a structured trace
     466\end{itemize}
     467\end{frame}
     468
     469\begin{frame}
    420470\frametitle{Recursive structure of `good' execution}
     471Structure captured by structured traces:
    421472\begin{center}
    422473\includegraphics[scale=0.33]{recursive_structure.png}
     
    425476
    426477\begin{frame}
    427 \frametitle{Structured traces I}
    428 \begin{itemize}
    429 \item
    430 We introduced a notion of `structured traces'
    431 \item
    432 These are intended to statically capture the (good) execution traces of a program
    433 \item
    434 To borrow a slogan: they are the `computational content of a well-formed program's execution'
    435 \item
    436 Come in two variants: inductive and coinductive
    437 \item
    438 Inductive captures program execution traces that eventually halt, coinductive ones that diverge
    439 \end{itemize}
    440 \end{frame}
    441 
    442 \begin{frame}
    443 \frametitle{Structured traces II}
    444 \begin{itemize}
    445 \item
    446 I focus on the inductive variety, as used the most (for now) in the backend
    447 \item
    448 In particular, used in the proof that static and dynamic cost computations coincide
    449 \item
    450 Traces preserved by backend compilation, initially created at RTL
    451 \item
    452 This will be explained later
    453 \end{itemize}
    454 \end{frame}
    455 
    456 \begin{frame}
    457 \frametitle{Structured traces III}
    458 \begin{itemize}
    459 \item
    460 Central insight is that program execution is always in the body of some function (from \texttt{main} onwards)
    461 \item
    462 A well formed program must have labels appearing at certain spots
    463 \item
    464 Similarly, the final instruction executed when executing a function must be a \texttt{RET}
    465 \item
    466 Execution must then continue in body of calling function, at correct place
    467 \item
    468 These invariants, and others, are crystalised in the specific syntactic form of a structured trace
    469 \end{itemize}
    470 \end{frame}
    471 
    472 \begin{frame}
    473478\frametitle{Static and dynamic costs I}
    474479\begin{itemize}
    475480\item
    476481Given a structured trace, we can compute its associated cost
     482\item
     483In previous slide, cost of trace is cost assigned to \texttt{label\_1} + \texttt{label\_2} + \texttt{label\_3} (+ \texttt{label\_4})
    477484\item
    478485This is the \emph{static} cost of a program execution
  • Deliverables/D1.2/Presentations/recursive_structure.svg

    r1843 r1847  
    1515   version="1.1"
    1616   inkscape:version="0.48.2 r9819"
    17    inkscape:export-filename="/home/dpm/Documents/Projects/Cerco/cerco/Deliverables/D1.2/Presentations/recursive_structure.jpg.png"
     17   inkscape:export-filename="/home/dpm/Documents/Projects/Cerco/cerco/Deliverables/D1.2/Presentations/recursive_structure.png"
    1818   inkscape:export-xdpi="90"
    1919   inkscape:export-ydpi="90"
    20    sodipodi:docname="New document 2">
     20   sodipodi:docname="recursive_structure.svg">
    2121  <defs
    2222     id="defs2987">
     
    8282     inkscape:pageshadow="2"
    8383     inkscape:zoom="0.6"
    84      inkscape:cx="400"
     84     inkscape:cx="130"
    8585     inkscape:cy="300"
    8686     inkscape:current-layer="layer1"
     
    109109     inkscape:groupmode="layer">
    110110    <path
    111        style="fill:#000000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
     111       style="fill:#008000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
    112112       d="m 130,475 240,1.66667 0,0"
    113113       id="path2993"
    114114       inkscape:connector-curvature="0" />
    115115    <path
    116        style="fill:#000000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
     116       style="fill:#008000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
    117117       d="m 432,476.83333 240,1.66667 0,0"
    118118       id="path2993-8"
    119119       inkscape:connector-curvature="0" />
    120120    <path
    121        style="fill:#000000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
     121       style="fill:#008000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
    122122       d="m 230,314.5 150.69143,1.66667 0,0"
    123123       id="path2993-8-1"
    124124       inkscape:connector-curvature="0" />
    125125    <path
    126        style="fill:#000000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
     126       style="fill:#008000;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
    127127       d="m 419.98762,313.5 150.69143,1.66667 0,0"
    128128       id="path2993-8-1-5"
     
    164164         x="96"
    165165         y="407.33337"
    166          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Start</tspan></text>
     166         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Start</tspan></text>
    167167    <text
    168168       xml:space="preserve"
     
    176176         x="630.83167"
    177177         y="410.29401"
    178          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Final</tspan></text>
     178         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Final</tspan></text>
    179179    <text
    180180       xml:space="preserve"
     
    188188         x="193.16498"
    189189         y="247.29401"
    190          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Start</tspan></text>
     190         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Start</tspan></text>
    191191    <text
    192192       xml:space="preserve"
     
    200200         x="533.00336"
    201201         y="245.34799"
    202          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Final</tspan></text>
     202         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Final</tspan></text>
    203203    <text
    204204       xml:space="preserve"
     
    212212         x="204.49832"
    213213         y="86.294006"
    214          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Start</tspan></text>
     214         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Start</tspan></text>
    215215    <text
    216216       xml:space="preserve"
     
    224224         x="519.67004"
    225225         y="82.681343"
    226          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17">Final</tspan></text>
     226         style="font-size:36px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMRoman17;-inkscape-font-specification:LMRoman17 Italic;fill:#000000">Final</tspan></text>
    227227    <text
    228228       xml:space="preserve"
     
    236236         x="328.33334"
    237237         y="522.66669"
    238          style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px">CALL</tspan></text>
     238         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px;fill:#000000">CALL</tspan></text>
    239239    <text
    240240       xml:space="preserve"
     
    248248         x="337.6825"
    249249         y="362.59332"
    250          style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px">CALL</tspan></text>
     250         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px;fill:#000000">CALL</tspan></text>
    251251    <text
    252252       xml:space="preserve"
     
    260260         x="526.34918"
    261261         y="129.59334"
    262          style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px">RET</tspan></text>
     262         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px;fill:#000000">RET</tspan></text>
    263263    <text
    264264       xml:space="preserve"
     
    272272         x="539.8017"
    273273         y="291.98001"
    274          style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px">RET</tspan></text>
    275     <text
    276        xml:space="preserve"
    277        style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
    278        x="186.20999"
     274         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;font-size:36px;fill:#000000">RET</tspan></text>
     275    <text
     276       xml:space="preserve"
     277       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
     278       x="174.20999"
    279279       y="292.24133"
    280280       id="text4869-2"
     
    282282         sodipodi:role="line"
    283283         id="tspan4871-3"
    284          x="186.20999"
     284         x="174.20999"
    285285         y="292.24133"
    286          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8">label</tspan></text>
    287     <text
    288        xml:space="preserve"
    289        style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
    290        x="194.54333"
     286         style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8;fill:#000000">label2</tspan></text>
     287    <text
     288       xml:space="preserve"
     289       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
     290       x="186.54333"
    291291       y="127.57468"
    292292       id="text4869-2-6"
     
    294294         sodipodi:role="line"
    295295         id="tspan4871-3-4"
    296          x="194.54333"
     296         x="186.54333"
    297297         y="127.57468"
    298          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8">label</tspan></text>
    299     <text
    300        xml:space="preserve"
    301        style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
    302        x="84.876663"
     298         style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8;fill:#000000">label3</tspan></text>
     299    <text
     300       xml:space="preserve"
     301       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
     302       x="76.876663"
    303303       y="450.57468"
    304304       id="text4869"
     
    306306         sodipodi:role="line"
    307307         id="tspan4871"
    308          x="84.876663"
     308         x="76.876663"
    309309         y="450.57468"
    310          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8">label</tspan></text>
     310         style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono8;-inkscape-font-specification:LMMono8;fill:#000000">label1</tspan></text>
    311311    <text
    312312       xml:space="preserve"
    313313       style="font-size:36px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
    314        x="357.80167"
     314       x="347.80167"
    315315       y="63.313339"
    316316       id="text4000-5-6"
     
    318318         sodipodi:role="line"
    319319         id="tspan4002-3-2"
    320          x="357.80167"
     320         x="347.80167"
    321321         y="63.313339"
    322          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12">label</tspan></text>
     322         style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;fill:#000000">label4</tspan></text>
    323323    <text
    324324       xml:space="preserve"
     
    332332         x="639.88818"
    333333         y="453.78201"
    334          style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12">RET</tspan></text>
    335     <path
    336        style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
     334         style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:LMMono12;-inkscape-font-specification:LMMono12;fill:#000000">RET</tspan></text>
     335    <path
     336       style="fill:#008000;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
    337337       d="m 405,83.33333 c 0,48.33334 0,48.33334 0,48.33334"
    338338       id="path4980"
    339339       inkscape:connector-curvature="0" />
     340    <path
     341       style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     342       d="m 382,476.66667 c 40,0 40,0 40,0"
     343       id="path5749"
     344       inkscape:connector-curvature="0" />
     345    <path
     346       style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     347       d="m 395.33333,316.33333 c 14.81482,0 14.81482,0 14.81482,0"
     348       id="path5749-6"
     349       inkscape:connector-curvature="0" />
     350    <path
     351       sodipodi:type="arc"
     352       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.50000000000000000, 2.50000000000000000;stroke-dashoffset:0"
     353       id="path5787"
     354       sodipodi:cx="41.666668"
     355       sodipodi:cy="523.33331"
     356       sodipodi:rx="8.333333"
     357       sodipodi:ry="8.333333"
     358       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     359       transform="matrix(1.2,0,0,1.2,81.333331,-154.33335)" />
     360    <path
     361       sodipodi:type="arc"
     362       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     363       id="path5787-7"
     364       sodipodi:cx="41.666668"
     365       sodipodi:cy="523.33331"
     366       sodipodi:rx="8.333333"
     367       sodipodi:ry="8.333333"
     368       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     369       transform="matrix(1.2,0,0,1.2,317.66666,-151.33331)" />
     370    <path
     371       sodipodi:type="arc"
     372       style="fill:#008000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.50000000000000000, 2.50000000000000000;stroke-dashoffset:0"
     373       id="path5787-4"
     374       sodipodi:cx="41.666668"
     375       sodipodi:cy="523.33331"
     376       sodipodi:rx="8.333333"
     377       sodipodi:ry="8.333333"
     378       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     379       transform="matrix(1.2,0,0,1.2,384.33333,-151.66664)" />
     380    <path
     381       sodipodi:type="arc"
     382       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     383       id="path5787-4-0"
     384       sodipodi:cx="41.666668"
     385       sodipodi:cy="523.33331"
     386       sodipodi:rx="8.333333"
     387       sodipodi:ry="8.333333"
     388       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     389       transform="matrix(1.2,0,0,1.2,624.66667,-149.99998)" />
     390    <path
     391       sodipodi:type="arc"
     392       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     393       id="path5787-7-2"
     394       sodipodi:cx="41.666668"
     395       sodipodi:cy="523.33331"
     396       sodipodi:rx="8.333333"
     397       sodipodi:ry="8.333333"
     398       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     399       transform="matrix(1.2,0,0,1.2,180.66667,-313.99998)" />
     400    <path
     401       sodipodi:type="arc"
     402       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     403       id="path5787-7-2-0"
     404       sodipodi:cx="41.666668"
     405       sodipodi:cy="523.33331"
     406       sodipodi:rx="8.333333"
     407       sodipodi:ry="8.333333"
     408       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     409       transform="matrix(1.2,0,0,1.2,328.33333,-312.99998)" />
     410    <path
     411       sodipodi:type="arc"
     412       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     413       id="path5787-7-2-9"
     414       sodipodi:cx="41.666668"
     415       sodipodi:cy="523.33331"
     416       sodipodi:rx="8.333333"
     417       sodipodi:ry="8.333333"
     418       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     419       transform="matrix(1.2,0,0,1.2,189.33333,-476.66664)" />
     420    <path
     421       sodipodi:type="arc"
     422       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     423       id="path5787-7-2-5"
     424       sodipodi:cx="41.666668"
     425       sodipodi:cy="523.33331"
     426       sodipodi:rx="8.333333"
     427       sodipodi:ry="8.333333"
     428       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     429       transform="matrix(1.2,0,0,1.2,506.66667,-474.99998)" />
     430    <path
     431       sodipodi:type="arc"
     432       style="fill:#ff0000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0"
     433       id="path5787-7-2-2"
     434       sodipodi:cx="41.666668"
     435       sodipodi:cy="523.33331"
     436       sodipodi:rx="8.333333"
     437       sodipodi:ry="8.333333"
     438       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     439       transform="matrix(1.2,0,0,1.2,520,-311.99998)" />
     440    <path
     441       sodipodi:type="arc"
     442       style="fill:#008000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:2.50000000000000000, 2.50000000000000000;stroke-dashoffset:0"
     443       id="path5787-7-2-8"
     444       sodipodi:cx="41.666668"
     445       sodipodi:cy="523.33331"
     446       sodipodi:rx="8.333333"
     447       sodipodi:ry="8.333333"
     448       d="m 50.000001,523.33331 a 8.333333,8.333333 0 1 1 -16.666666,0 8.333333,8.333333 0 1 1 16.666666,0 z"
     449       transform="matrix(1.2,0,0,1.2,375.33333,-312.99998)" />
    340450  </g>
    341451</svg>
Note: See TracChangeset for help on using the changeset viewer.