Changeset 1847
- Timestamp:
- Mar 15, 2012, 3:04:50 PM (9 years ago)
- Location:
- Deliverables/D1.2/Presentations
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Deliverables/D1.2/Presentations/WP4-dominic.tex
r1844 r1847 73 73 \begin{frame} 74 74 \frametitle{Backend intermediate languages II} 75 \vspace{-1em} 75 76 \begin{small} 76 77 \begin{tabbing} 77 78 \quad \=\,\quad \=\ \\ 78 79 \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}} \\ 82 83 \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}} \\ 86 87 \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}} \\ 89 90 \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$} \\ 92 93 \textsf{LIN}\\ 93 \> $\downarrow$ \> relabeling (\checkmark)\\94 \> $\downarrow$ \> relabeling \color{green}{{\checkmark}} \\ 94 95 \textsf{ASM} 95 96 \end{tabbing} … … 362 363 \begin{column}[b]{0.5\linewidth} 363 364 \centering 365 In C: 364 366 \begin{lstlisting} 365 367 int main(int argc, char** argv) { … … 374 376 \begin{column}[b]{0.5\linewidth} 375 377 \centering 378 In ASM: 376 379 \begin{lstlisting} 380 ... 377 381 main: 378 382 ... … … 387 391 \begin{itemize} 388 392 \item 389 Question: where do we put cost labels to capture execution costs?393 Where do we put cost labels to capture execution costs? 390 394 \item 391 395 Proof obligations complicated by panoply of labels … … 393 397 Doesn't work well with \texttt{g(h() + 2 + f())} 394 398 \item 395 Is \texttt{cost\_label2} ever reached? \texttt{some\_function()} must terminate!399 Is \texttt{cost\_label2} ever reached? 396 400 \item 397 401 \texttt{some\_function()} may not return correctly … … 418 422 419 423 \begin{frame} 424 \frametitle{Structured traces I} 425 \begin{itemize} 426 \item 427 We introduced a notion of `structured traces' 428 \item 429 These are intended to statically capture the (good) execution traces of a program 430 \item 431 To borrow a slogan: they are the `computational content of a well-formed program's execution' 432 \item 433 Come in two variants: inductive and coinductive 434 \item 435 Inductive 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 443 I focus on the inductive variety, as used the most (for now) in the backend 444 \item 445 In particular, used in the proof that static and dynamic cost computations coincide 446 \item 447 Traces preserved by backend compilation, initially created at RTL 448 \item 449 This will be explained later 450 \end{itemize} 451 \end{frame} 452 453 \begin{frame} 454 \frametitle{Structured traces III} 455 \begin{itemize} 456 \item 457 Central insight is that program execution is always in the body of some function (from \texttt{main} onwards) 458 \item 459 A well formed program must have labels appearing at certain spots 460 \item 461 Similarly, the final instruction executed when executing a function must be a \texttt{RET} 462 \item 463 Execution must then continue in body of calling function, at correct place 464 \item 465 These invariants, and others, are crystalised in the specific syntactic form of a structured trace 466 \end{itemize} 467 \end{frame} 468 469 \begin{frame} 420 470 \frametitle{Recursive structure of `good' execution} 471 Structure captured by structured traces: 421 472 \begin{center} 422 473 \includegraphics[scale=0.33]{recursive_structure.png} … … 425 476 426 477 \begin{frame} 427 \frametitle{Structured traces I}428 \begin{itemize}429 \item430 We introduced a notion of `structured traces'431 \item432 These are intended to statically capture the (good) execution traces of a program433 \item434 To borrow a slogan: they are the `computational content of a well-formed program's execution'435 \item436 Come in two variants: inductive and coinductive437 \item438 Inductive captures program execution traces that eventually halt, coinductive ones that diverge439 \end{itemize}440 \end{frame}441 442 \begin{frame}443 \frametitle{Structured traces II}444 \begin{itemize}445 \item446 I focus on the inductive variety, as used the most (for now) in the backend447 \item448 In particular, used in the proof that static and dynamic cost computations coincide449 \item450 Traces preserved by backend compilation, initially created at RTL451 \item452 This will be explained later453 \end{itemize}454 \end{frame}455 456 \begin{frame}457 \frametitle{Structured traces III}458 \begin{itemize}459 \item460 Central insight is that program execution is always in the body of some function (from \texttt{main} onwards)461 \item462 A well formed program must have labels appearing at certain spots463 \item464 Similarly, the final instruction executed when executing a function must be a \texttt{RET}465 \item466 Execution must then continue in body of calling function, at correct place467 \item468 These invariants, and others, are crystalised in the specific syntactic form of a structured trace469 \end{itemize}470 \end{frame}471 472 \begin{frame}473 478 \frametitle{Static and dynamic costs I} 474 479 \begin{itemize} 475 480 \item 476 481 Given a structured trace, we can compute its associated cost 482 \item 483 In previous slide, cost of trace is cost assigned to \texttt{label\_1} + \texttt{label\_2} + \texttt{label\_3} (+ \texttt{label\_4}) 477 484 \item 478 485 This is the \emph{static} cost of a program execution -
Deliverables/D1.2/Presentations/recursive_structure.svg
r1843 r1847 15 15 version="1.1" 16 16 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" 18 18 inkscape:export-xdpi="90" 19 19 inkscape:export-ydpi="90" 20 sodipodi:docname=" New document 2">20 sodipodi:docname="recursive_structure.svg"> 21 21 <defs 22 22 id="defs2987"> … … 82 82 inkscape:pageshadow="2" 83 83 inkscape:zoom="0.6" 84 inkscape:cx=" 400"84 inkscape:cx="130" 85 85 inkscape:cy="300" 86 86 inkscape:current-layer="layer1" … … 109 109 inkscape:groupmode="layer"> 110 110 <path 111 style="fill:#00 0000;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" 112 112 d="m 130,475 240,1.66667 0,0" 113 113 id="path2993" 114 114 inkscape:connector-curvature="0" /> 115 115 <path 116 style="fill:#00 0000;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" 117 117 d="m 432,476.83333 240,1.66667 0,0" 118 118 id="path2993-8" 119 119 inkscape:connector-curvature="0" /> 120 120 <path 121 style="fill:#00 0000;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" 122 122 d="m 230,314.5 150.69143,1.66667 0,0" 123 123 id="path2993-8-1" 124 124 inkscape:connector-curvature="0" /> 125 125 <path 126 style="fill:#00 0000;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" 127 127 d="m 419.98762,313.5 150.69143,1.66667 0,0" 128 128 id="path2993-8-1-5" … … 164 164 x="96" 165 165 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> 167 167 <text 168 168 xml:space="preserve" … … 176 176 x="630.83167" 177 177 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> 179 179 <text 180 180 xml:space="preserve" … … 188 188 x="193.16498" 189 189 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> 191 191 <text 192 192 xml:space="preserve" … … 200 200 x="533.00336" 201 201 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> 203 203 <text 204 204 xml:space="preserve" … … 212 212 x="204.49832" 213 213 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> 215 215 <text 216 216 xml:space="preserve" … … 224 224 x="519.67004" 225 225 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> 227 227 <text 228 228 xml:space="preserve" … … 236 236 x="328.33334" 237 237 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> 239 239 <text 240 240 xml:space="preserve" … … 248 248 x="337.6825" 249 249 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> 251 251 <text 252 252 xml:space="preserve" … … 260 260 x="526.34918" 261 261 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> 263 263 <text 264 264 xml:space="preserve" … … 272 272 x="539.8017" 273 273 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="1 86.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" 279 279 y="292.24133" 280 280 id="text4869-2" … … 282 282 sodipodi:role="line" 283 283 id="tspan4871-3" 284 x="1 86.20999"284 x="174.20999" 285 285 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="1 94.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" 291 291 y="127.57468" 292 292 id="text4869-2-6" … … 294 294 sodipodi:role="line" 295 295 id="tspan4871-3-4" 296 x="1 94.54333"296 x="186.54333" 297 297 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" 303 303 y="450.57468" 304 304 id="text4869" … … 306 306 sodipodi:role="line" 307 307 id="tspan4871" 308 x=" 84.876663"308 x="76.876663" 309 309 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> 311 311 <text 312 312 xml:space="preserve" 313 313 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="3 57.80167"314 x="347.80167" 315 315 y="63.313339" 316 316 id="text4000-5-6" … … 318 318 sodipodi:role="line" 319 319 id="tspan4002-3-2" 320 x="3 57.80167"320 x="347.80167" 321 321 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> 323 323 <text 324 324 xml:space="preserve" … … 332 332 x="639.88818" 333 333 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)" 337 337 d="m 405,83.33333 c 0,48.33334 0,48.33334 0,48.33334" 338 338 id="path4980" 339 339 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)" /> 340 450 </g> 341 451 </svg>
Note: See TracChangeset
for help on using the changeset viewer.