%PDF-1.4 % 4 0 obj << /S /GoTo /D (section.1) >> endobj 7 0 obj (1 Introduction) endobj 8 0 obj << /S /GoTo /D (subsection.1.1) >> endobj 11 0 obj (1.1 Motivation) endobj 12 0 obj << /S /GoTo /D (subsection.1.2) >> endobj 15 0 obj (1.2 Approach) endobj 16 0 obj << /S /GoTo /D (subsection.1.3) >> endobj 19 0 obj (1.3 Design Ideals) endobj 20 0 obj << /S /GoTo /D (subsection.1.4) >> endobj 23 0 obj (1.4 Organization) endobj 24 0 obj << /S /GoTo /D (section.2) >> endobj 27 0 obj (2 Algorithms) endobj 28 0 obj << /S /GoTo /D (subsection.2.1) >> endobj 31 0 obj (2.1 Non-modifying Sequence Operations) endobj 32 0 obj << /S /GoTo /D (subsubsection.2.1.1) >> endobj 35 0 obj (2.1.1 All, Any, and None) endobj 36 0 obj << /S /GoTo /D (subsubsection.2.1.2) >> endobj 39 0 obj (2.1.2 For Each) endobj 40 0 obj << /S /GoTo /D (subsubsection.2.1.3) >> endobj 43 0 obj (2.1.3 The Find Family) endobj 44 0 obj << /S /GoTo /D (subsubsection.2.1.4) >> endobj 47 0 obj (2.1.4 The Count Family) endobj 48 0 obj << /S /GoTo /D (subsubsection.2.1.5) >> endobj 51 0 obj (2.1.5 Mismatch and Equal) endobj 52 0 obj << /S /GoTo /D (subsubsection.2.1.6) >> endobj 55 0 obj (2.1.6 Permutations) endobj 56 0 obj << /S /GoTo /D (subsubsection.2.1.7) >> endobj 59 0 obj (2.1.7 Search) endobj 60 0 obj << /S /GoTo /D (subsection.2.2) >> endobj 63 0 obj (2.2 Modifying Sequence Operations) endobj 64 0 obj << /S /GoTo /D (subsubsection.2.2.1) >> endobj 67 0 obj (2.2.1 Copy) endobj 68 0 obj << /S /GoTo /D (subsubsection.2.2.2) >> endobj 71 0 obj (2.2.2 Move) endobj 72 0 obj << /S /GoTo /D (subsubsection.2.2.3) >> endobj 75 0 obj (2.2.3 Swap) endobj 76 0 obj << /S /GoTo /D (subsubsection.2.2.4) >> endobj 79 0 obj (2.2.4 Transform) endobj 80 0 obj << /S /GoTo /D (subsubsection.2.2.5) >> endobj 83 0 obj (2.2.5 Replace) endobj 84 0 obj << /S /GoTo /D (subsubsection.2.2.6) >> endobj 87 0 obj (2.2.6 Fill) endobj 88 0 obj << /S /GoTo /D (subsubsection.2.2.7) >> endobj 91 0 obj (2.2.7 Generate) endobj 92 0 obj << /S /GoTo /D (subsubsection.2.2.8) >> endobj 95 0 obj (2.2.8 Remove) endobj 96 0 obj << /S /GoTo /D (subsubsection.2.2.9) >> endobj 99 0 obj (2.2.9 Unique) endobj 100 0 obj << /S /GoTo /D (subsubsection.2.2.10) >> endobj 103 0 obj (2.2.10 Reverse and Rotate) endobj 104 0 obj << /S /GoTo /D (subsubsection.2.2.11) >> endobj 107 0 obj (2.2.11 Random Shuffle) endobj 108 0 obj << /S /GoTo /D (subsubsection.2.2.12) >> endobj 111 0 obj (2.2.12 Partitions) endobj 112 0 obj << /S /GoTo /D (subsection.2.3) >> endobj 115 0 obj (2.3 Sorting Algorithms) endobj 116 0 obj << /S /GoTo /D (subsubsection.2.3.1) >> endobj 119 0 obj (2.3.1 The Sort Family) endobj 120 0 obj << /S /GoTo /D (subsubsection.2.3.2) >> endobj 123 0 obj (2.3.2 Binary Search) endobj 124 0 obj << /S /GoTo /D (subsubsection.2.3.3) >> endobj 127 0 obj (2.3.3 Merge) endobj 128 0 obj << /S /GoTo /D (subsubsection.2.3.4) >> endobj 131 0 obj (2.3.4 Set Operations) endobj 132 0 obj << /S /GoTo /D (subsubsection.2.3.5) >> endobj 135 0 obj (2.3.5 Heap Operations) endobj 136 0 obj << /S /GoTo /D (subsubsection.2.3.6) >> endobj 139 0 obj (2.3.6 Minimum and Maximum) endobj 140 0 obj << /S /GoTo /D (subsubsection.2.3.7) >> endobj 143 0 obj (2.3.7 Lexicographical Comparison) endobj 144 0 obj << /S /GoTo /D (subsubsection.2.3.8) >> endobj 147 0 obj (2.3.8 Permutation Generators) endobj 148 0 obj << /S /GoTo /D (section.3) >> endobj 151 0 obj (3 Concepts) endobj 152 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 155 0 obj (3.1 Preliminaries) endobj 156 0 obj << /S /GoTo /D (subsubsection.3.1.1) >> endobj 159 0 obj (3.1.1 Equality) endobj 160 0 obj << /S /GoTo /D (subsubsection.3.1.2) >> endobj 163 0 obj (3.1.2 Expressions) endobj 164 0 obj << /S /GoTo /D (subsubsection.3.1.3) >> endobj 167 0 obj (3.1.3 Type Functions) endobj 168 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 171 0 obj (3.2 Language Concepts) endobj 172 0 obj << /S /GoTo /D (subsubsection.3.2.1) >> endobj 175 0 obj (3.2.1 Type Relations) endobj 176 0 obj << /S /GoTo /D (subsubsection.3.2.2) >> endobj 179 0 obj (3.2.2 Type Classifications) endobj 180 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 183 0 obj (3.3 Foundational Concepts) endobj 184 0 obj << /S /GoTo /D (subsection.3.4) >> endobj 187 0 obj (3.4 Function Concepts) endobj 188 0 obj << /S /GoTo /D (subsubsection.3.4.1) >> endobj 191 0 obj (3.4.1 Predicates) endobj 192 0 obj << /S /GoTo /D (subsubsection.3.4.2) >> endobj 195 0 obj (3.4.2 Operations) endobj 196 0 obj << /S /GoTo /D (subsection.3.5) >> endobj 199 0 obj (3.5 Iterator Concepts) endobj 200 0 obj << /S /GoTo /D (subsubsection.3.5.1) >> endobj 203 0 obj (3.5.1 Iterator Properties) endobj 204 0 obj << /S /GoTo /D (subsubsection.3.5.2) >> endobj 207 0 obj (3.5.2 Incrementable Types) endobj 208 0 obj << /S /GoTo /D (subsubsection.3.5.3) >> endobj 211 0 obj (3.5.3 Iterator Types) endobj 212 0 obj << /S /GoTo /D (subsection.3.6) >> endobj 215 0 obj (3.6 Rearrangements) endobj 216 0 obj << /S /GoTo /D (subsection.3.7) >> endobj 219 0 obj (3.7 Standard Iterators) endobj 220 0 obj << /S /GoTo /D (subsection.3.8) >> endobj 223 0 obj (3.8 Random Number Generators) endobj 224 0 obj << /S /GoTo /D (section.4) >> endobj 227 0 obj (4 Conclusions) endobj 228 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 231 0 obj (4.1 Outstanding Issues) endobj 232 0 obj << /S /GoTo /D (subsubsection.4.1.1) >> endobj 235 0 obj (4.1.1 Simplyifying Algorithm Requirements) endobj 236 0 obj << /S /GoTo /D (subsubsection.4.1.2) >> endobj 239 0 obj (4.1.2 Preconditions and Postconditions) endobj 240 0 obj << /S /GoTo /D (subsection.4.2) >> endobj 243 0 obj (4.2 Future Work) endobj 244 0 obj << /S /GoTo /D (section*.3) >> endobj 247 0 obj (Appendices) endobj 248 0 obj << /S /GoTo /D (Appendix.a.A) >> endobj 251 0 obj (Appendix A Summary of the Language) endobj 252 0 obj << /S /GoTo /D (subsection.a.A.1) >> endobj 255 0 obj (A.1 Language Description) endobj 256 0 obj << /S /GoTo /D (subsubsection.a.A.1.1) >> endobj 259 0 obj (A.1.1 Concept Definitions) endobj 260 0 obj << /S /GoTo /D (subsubsection.a.A.1.2) >> endobj 263 0 obj (A.1.2 Concept Names) endobj 264 0 obj << /S /GoTo /D (subsubsection.a.A.1.3) >> endobj 267 0 obj (A.1.3 Constrained Template Parameters) endobj 268 0 obj << /S /GoTo /D (subsubsection.a.A.1.4) >> endobj 271 0 obj (A.1.4 Concept Bodies) endobj 272 0 obj << /S /GoTo /D (subsubsection.a.A.1.5) >> endobj 275 0 obj (A.1.5 Syntactic Requirements) endobj 276 0 obj << /S /GoTo /D (subsubsection.a.A.1.6) >> endobj 279 0 obj (A.1.6 Semantic Requirements) endobj 280 0 obj << /S /GoTo /D (subsubsection.a.A.1.7) >> endobj 283 0 obj (A.1.7 Constrained Templates) endobj 284 0 obj << /S /GoTo /D (subsection.a.A.2) >> endobj 287 0 obj (A.2 Grammar Summary) endobj 288 0 obj << /S /GoTo /D (Appendix.a.B) >> endobj 291 0 obj (Appendix B Preconditions and Postconditions) endobj 292 0 obj << /S /GoTo /D (subsection.a.B.1) >> endobj 295 0 obj (B.1 Property Library) endobj 296 0 obj << /S /GoTo /D (subsubsection.a.B.1.1) >> endobj 299 0 obj (B.1.1 Iterator Ranges) endobj 300 0 obj << /S /GoTo /D (subsubsection.a.B.1.2) >> endobj 303 0 obj (B.1.2 Relations) endobj 304 0 obj << /S /GoTo /D (subsection.a.B.2) >> endobj 307 0 obj (B.2 Non-Modifying Sequential Algorithms) endobj 308 0 obj << /S /GoTo /D (subsubsection.a.B.2.1) >> endobj 311 0 obj (B.2.1 All of) endobj 312 0 obj << /S /GoTo /D (subsubsection.a.B.2.2) >> endobj 315 0 obj (B.2.2 Any of) endobj 316 0 obj << /S /GoTo /D (subsubsection.a.B.2.3) >> endobj 319 0 obj (B.2.3 None of) endobj 320 0 obj << /S /GoTo /D (subsubsection.a.B.2.4) >> endobj 323 0 obj (B.2.4 For Each) endobj 324 0 obj << /S /GoTo /D (subsubsection.a.B.2.5) >> endobj 327 0 obj (B.2.5 Find) endobj 328 0 obj << /S /GoTo /D (subsubsection.a.B.2.6) >> endobj 331 0 obj (B.2.6 Find First) endobj 332 0 obj << /S /GoTo /D (subsubsection.a.B.2.7) >> endobj 335 0 obj (B.2.7 Adjacent Find) endobj 336 0 obj << /S /GoTo /D (subsubsection.a.B.2.8) >> endobj 339 0 obj (B.2.8 Count) endobj 340 0 obj << /S /GoTo /D (subsubsection.a.B.2.9) >> endobj 343 0 obj (B.2.9 Equal and Mismatch) endobj 344 0 obj << /S /GoTo /D (subsubsection.a.B.2.10) >> endobj 347 0 obj (B.2.10 Is Permutation) endobj 348 0 obj << /S /GoTo /D (subsubsection.a.B.2.11) >> endobj 351 0 obj (B.2.11 Search) endobj 352 0 obj << /S /GoTo /D (subsection.a.B.3) >> endobj 355 0 obj (B.3 Mutating Sequence Algortihms) endobj 356 0 obj << /S /GoTo /D (subsubsection.a.B.3.1) >> endobj 359 0 obj (B.3.1 Copy) endobj 360 0 obj << /S /GoTo /D (subsubsection.a.B.3.2) >> endobj 363 0 obj (B.3.2 Move) endobj 364 0 obj << /S /GoTo /D (subsubsection.a.B.3.3) >> endobj 367 0 obj (B.3.3 Swap) endobj 368 0 obj << /S /GoTo /D (subsubsection.a.B.3.4) >> endobj 371 0 obj (B.3.4 Transform) endobj 372 0 obj << /S /GoTo /D (subsubsection.a.B.3.5) >> endobj 375 0 obj (B.3.5 Replace) endobj 376 0 obj << /S /GoTo /D (subsubsection.a.B.3.6) >> endobj 379 0 obj (B.3.6 Fill) endobj 380 0 obj << /S /GoTo /D (subsubsection.a.B.3.7) >> endobj 383 0 obj (B.3.7 Generate) endobj 384 0 obj << /S /GoTo /D (subsubsection.a.B.3.8) >> endobj 387 0 obj (B.3.8 Remove) endobj 388 0 obj << /S /GoTo /D (subsubsection.a.B.3.9) >> endobj 391 0 obj (B.3.9 Unique) endobj 392 0 obj << /S /GoTo /D (subsubsection.a.B.3.10) >> endobj 395 0 obj (B.3.10 Reverse) endobj 396 0 obj << /S /GoTo /D (subsubsection.a.B.3.11) >> endobj 399 0 obj (B.3.11 Rotate) endobj 400 0 obj << /S /GoTo /D (subsubsection.a.B.3.12) >> endobj 403 0 obj (B.3.12 Random Shuffle) endobj 404 0 obj << /S /GoTo /D (subsubsection.a.B.3.13) >> endobj 407 0 obj (B.3.13 Partitions) endobj 408 0 obj << /S /GoTo /D (subsection.a.B.4) >> endobj 411 0 obj (B.4 Sorting and Related Algorithms) endobj 412 0 obj << /S /GoTo /D (subsubsection.a.B.4.1) >> endobj 415 0 obj (B.4.1 Sort) endobj 416 0 obj << /S /GoTo /D (subsubsection.a.B.4.2) >> endobj 419 0 obj (B.4.2 Nth Element) endobj 420 0 obj << /S /GoTo /D (subsubsection.a.B.4.3) >> endobj 423 0 obj (B.4.3 Binary Search) endobj 424 0 obj << /S /GoTo /D (subsubsection.a.B.4.4) >> endobj 427 0 obj (B.4.4 Merge) endobj 428 0 obj << /S /GoTo /D (subsubsection.a.B.4.5) >> endobj 431 0 obj (B.4.5 Set Operations) endobj 432 0 obj << /S /GoTo /D (subsubsection.a.B.4.6) >> endobj 435 0 obj (B.4.6 Heap Operations) endobj 436 0 obj << /S /GoTo /D (subsubsection.a.B.4.7) >> endobj 439 0 obj (B.4.7 Minimum and Maximum) endobj 440 0 obj << /S /GoTo /D (subsubsection.a.B.4.8) >> endobj 443 0 obj (B.4.8 Lexicographical Comparison) endobj 444 0 obj << /S /GoTo /D (subsubsection.a.B.4.9) >> endobj 447 0 obj (B.4.9 Permutations) endobj 448 0 obj << /S /GoTo /D (Appendix.a.C) >> endobj 451 0 obj (Appendix C Concept Summary) endobj 452 0 obj << /S /GoTo /D (subsection.a.C.1) >> endobj 455 0 obj (C.1 Concept Diagrams) endobj 456 0 obj << /S /GoTo /D (subsection.a.C.2) >> endobj 459 0 obj (C.2 Concept Cross-reference) endobj 460 0 obj << /S /GoTo /D (Appendix.a.D) >> endobj 463 0 obj (Appendix D Alternative Designs) endobj 464 0 obj << /S /GoTo /D (subsection.a.D.1) >> endobj 467 0 obj (D.1 Decomposing Semiregular) endobj 468 0 obj << /S /GoTo /D (subsection.a.D.2) >> endobj 471 0 obj (D.2 Cross-type Concepts) endobj 472 0 obj << /S /GoTo /D [473 0 R /FitV ] >> endobj 492 0 obj << /Length 1924 /Filter /FlateDecode >> stream xYKsWkyI[q,c1٪x0& 1xtA~R 3hh3ϥD¤0:Z^EYZY#rI̢b6WBjo;źUРip|9}H挑wθ\,MSbiˮk-ΓWX0Z컮h7nyVtuPYQ+M_ \HI1gEe