├── .gitignore ├── CONTRIBUTORS ├── COPYING ├── Makefile ├── README ├── adequate.tex ├── algebra.tex ├── algebraic.tex ├── algebraization.tex ├── artin.tex ├── bibliography.tex ├── bootstrap.tex ├── brauer.tex ├── categories.tex ├── chapters.tex ├── chow.tex ├── coding.tex ├── coherent.tex ├── cohomology.tex ├── constructions.tex ├── conventions.tex ├── cotangent.tex ├── criteria.tex ├── crystalline.tex ├── curves.tex ├── decent-spaces.tex ├── defos.tex ├── derham.tex ├── derived.tex ├── descent.tex ├── desirables.tex ├── dga.tex ├── discriminant.tex ├── divisors.tex ├── documentation ├── bib-conventions ├── git-howto ├── make-project ├── rules ├── submitting-patches ├── support └── todo-list ├── dpa.tex ├── duality.tex ├── dualizing.tex ├── equiv.tex ├── etale-cohomology.tex ├── etale.tex ├── examples-defos.tex ├── examples-stacks.tex ├── examples.tex ├── exercises.tex ├── fdl.tex ├── fields.tex ├── flat.tex ├── formal-defos.tex ├── formal-spaces.tex ├── functors.tex ├── groupoids-quotients.tex ├── groupoids.tex ├── guide.tex ├── homology.tex ├── hypercovering.tex ├── hyperref.cfg ├── injectives.tex ├── intersection.tex ├── introduction.tex ├── limits.tex ├── local-cohomology.tex ├── models.tex ├── modules.tex ├── moduli-curves.tex ├── moduli.tex ├── more-algebra.tex ├── more-etale.tex ├── more-groupoids.tex ├── more-morphisms.tex ├── morphisms.tex ├── my.bib ├── obsolete.tex ├── perfect.tex ├── pic.tex ├── pione.tex ├── preamble.tex ├── proetale.tex ├── properties.tex ├── quot.tex ├── relative-cycles.tex ├── resolve.tex ├── restricted.tex ├── schemes.tex ├── scripts ├── add_tags.py ├── first-homotopy.gp ├── functions.py ├── latex.sh ├── make_book.py ├── make_index.py ├── second-homotopy.gp ├── signs.gp ├── tag_up.py ├── theta.gp └── web_book.py ├── sdga.tex ├── sets.tex ├── sheaves.tex ├── simplicial.tex ├── sites-cohomology.tex ├── sites-modules.tex ├── sites.tex ├── smoothing.tex ├── spaces-chow.tex ├── spaces-cohomology.tex ├── spaces-descent.tex ├── spaces-divisors.tex ├── spaces-duality.tex ├── spaces-flat.tex ├── spaces-groupoids.tex ├── spaces-limits.tex ├── spaces-more-cohomology.tex ├── spaces-more-groupoids.tex ├── spaces-more-morphisms.tex ├── spaces-morphisms.tex ├── spaces-over-fields.tex ├── spaces-perfect.tex ├── spaces-properties.tex ├── spaces-pushouts.tex ├── spaces-resolve.tex ├── spaces-simplicial.tex ├── spaces-topologies.tex ├── spaces.tex ├── stacks-cohomology.tex ├── stacks-geometry.tex ├── stacks-introduction.tex ├── stacks-limits.tex ├── stacks-more-morphisms.tex ├── stacks-morphisms.tex ├── stacks-perfect.tex ├── stacks-project-book.cls ├── stacks-project.cls ├── stacks-properties.tex ├── stacks-sheaves.tex ├── stacks.tex ├── tags ├── .gitignore ├── Makefile ├── initial_tags ├── latex.sh ├── tags └── tmp │ └── .gitignore ├── tmp └── .gitignore ├── topologies.tex ├── topology.tex ├── trace.tex ├── varieties.tex └── weil.tex /.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.log 6 | *.pdf 7 | *.ps 8 | *.out 9 | *.toc 10 | *.pyc 11 | *~ 12 | .* 13 | *.patch 14 | *.gz 15 | *.bz2 16 | *.foo 17 | *.bar 18 | auto 19 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | % List in alphabetical order by last name and then first name 2 | % Let me know if your name should be here and it isn't. 3 | 4 | Lorenzo Abate 5 | Kian Abolfazlian 6 | Dan Abramovich 7 | Piotr Achinger 8 | Juan Pablo Acosta Lopez 9 | Nick Addington 10 | Devang Agarwal 11 | Shishir Agrawal 12 | Eric Ahlqvist 13 | Jarod Alper 14 | Jinyong An 15 | Kasper Andersen 16 | Johannes Anschuetz 17 | Benjamin Antieau 18 | Ko Aoki (青木孔) 19 | Daniël Apol 20 | Santiago Arango-Piñeros 21 | Konstantin Ardakov 22 | Dima Arinkin 23 | Rafay Abbas Ashary 24 | Kenneth Asher 25 | Aravind Asok 26 | Daniel Apsley 27 | Clément Baillet 28 | Dario Balboni 29 | Badam Baplan 30 | Marco Baracchini 31 | Guillermo Barajas Ayuso 32 | Adrian Barquero-Sanchez 33 | Owen Barrett 34 | Reid Barton 35 | Michael Barz 36 | Tathagata Basak 37 | Connor Bass 38 | Giulia Battiston 39 | Jefferson Baudin 40 | Hanno Becker 41 | Mark Behrens 42 | Dori Bejleri 43 | Pieter Belmans 44 | Olivier Benoist 45 | Takagi Benseki (高城 辨積) 46 | Laurent Berger 47 | Daniel Bergh 48 | Fabio Bernasconi 49 | Siddharth Bhat 50 | Bhargav Bhatt 51 | Wessel Bindt 52 | Chris Birkbeck 53 | Ingo Blechschmidt 54 | Juhani Bonsdorff 55 | Mark Bowron 56 | Heiko Braun 57 | Lucas Braune 58 | Thomas Brazelton 59 | Giulio Bresciani 60 | Martin Bright 61 | David Brown 62 | Kong Bochao 63 | Sebastian Bozlee 64 | Niels Borne 65 | Félix Baril Boudreau 66 | Elyes Boughattas 67 | Alexis Bouthier 68 | Ragnar-Olaf Buchweitz 69 | Fabio Buccoliero 70 | Kevin Buzzard 71 | Jakub Byszewski 72 | Anna Cadoret 73 | Zhaodong Cai 74 | Maxime Cailleux 75 | João Candeias 76 | Nicholas Camacho 77 | Tim Campion 78 | Samir Canning 79 | Adi Caplan-Bricker 80 | Robert Cardona 81 | Nuno Cardoso 82 | Louis Carlin 83 | Scott Carnahan 84 | Kęstutis Česnavičius 85 | Antoine Chambert-Loir 86 | Ryan Chen 87 | Wei Chen 88 | Will Chen 89 | William Chen 90 | Raymond Cheng (程毅) 91 | Filip Chindea 92 | Chung Ching 93 | Nava Chitrik 94 | Christopher Chiu 95 | Fraser Chiu 96 | Kat Christianson 97 | Patrick Chu 98 | Benjamin Voulgaris Church 99 | Joshua Ciappara 100 | Dustin Clausen 101 | J\'er\'emy Cochoy 102 | Johan Commelin 103 | Brian Conrad 104 | David Corwin 105 | Sean Cotner 106 | Pavel Čoupek 107 | Peadar Coyle 108 | Moises Herradon Cueto 109 | Marco D'Addezio 110 | Chiara Damiolini 111 | Lucas das Dores 112 | Rankeya Datta 113 | Timothy De Deyn 114 | Olivier de Gaay Fortman 115 | Aise Johan de Jong 116 | Subhranil Deb 117 | Matt DeLand 118 | Spencer Dembner 119 | Ashwin Deopurkar 120 | Maarten Derickx 121 | Neeraj Deshmukh 122 | Benjamin Diamond 123 | Fred Diamond 124 | Claus Diem 125 | Ajneet Dhillon 126 | Daniel Disegni 127 | Joel Dodge 128 | Daniel Dore 129 | Changjiang Du 130 | Peng Du 131 | Taylor Dupuy 132 | Bas Edixhoven 133 | Jonas Ehrhard 134 | Alexander Palen Ellis 135 | Matthew Emerton 136 | Aras Ergus 137 | Dennis Eriksson 138 | Tim Evink 139 | Andrew Fanoe 140 | Mitchell Faulk 141 | Maxim Fedorchuck 142 | Hu Fei 143 | Peter Fleischmann 144 | Dan Fox 145 | Cameron Franc 146 | Dragos Fratila 147 | Gerard Freixas 148 | Robert Friedman 149 | Robert Furber 150 | Ofer Gabber 151 | Pierre-Yves Gaillard 152 | Juan Sebastian Gaitan 153 | Lennart Galinat 154 | Francisco Gallardo 155 | Martin Gallauer 156 | Francisco García 157 | Luis Garcia 158 | Xu Gao 159 | Toby Gee 160 | Anton Geraschenko 161 | Daniel Gerigk 162 | Jérémy Gerin 163 | Alexandru Ghitza 164 | Harry Gindi 165 | Alberto Gioia 166 | Marco Giustetto 167 | Charles Godfrey 168 | Danny A. J. Gomez-Ramirez 169 | Julia Ramos Gonzalez 170 | Jean-Pierre Gourdot 171 | Tom Graber 172 | Matt Grimes 173 | Darij Grinberg 174 | Rein Janssen Groesbeek 175 | Joshua Grochow 176 | Jonathan Gruner 177 | Yuzhou Gu 178 | Zeshen Gu 179 | Quentin Guignard 180 | Elías Guisado Villalgordo 181 | Sergey Guminov 182 | Albert Gunawan 183 | Joseph Gunther 184 | Haoyang Guo 185 | Anton Güthge 186 | Andrei Halanay 187 | Yatir Halevi 188 | Jack Hall 189 | Daniel Halpern-Leistner 190 | Linus Hamann 191 | Colin Hamon 192 | Minsik Han 193 | Xue Hang 194 | David Hansen 195 | Yun Hao 196 | Michael Harris 197 | William Hart 198 | Philipp Hartwig 199 | Matthew Hase-Liu 200 | Mohamed Hashi 201 | Olivier Haution 202 | Tongmu He (何通木) 203 | Hadi Hedayatzadeh 204 | Fawzy Hegab 205 | Lukas Heger 206 | Florian Heiderich 207 | Jochen Heinloth 208 | Daniel Heiss 209 | Jeroen Hekking 210 | Jeremiah Heller 211 | Reimundo Heluani 212 | Kristen Hendricks 213 | Aron Heleodoro 214 | Andres Fernandez Herrero 215 | Patrick Herter 216 | Christian Hildebrandt 217 | Fraser Hiu 218 | Quoc P. Ho 219 | Manuel Hoff 220 | Kyle Hofmann 221 | Amit Hogadi 222 | David Holmes 223 | Andreas Holmstrom 224 | Tim Holzschuh 225 | Ray Hoobler 226 | John Hosack 227 | Xiaowen Hu 228 | Xueping Huang 229 | Yuhao Huang 230 | Yu-Liang Huang 231 | Logan Hyslop 232 | Andrés Ibáñez Núñez 233 | Ashwin Iyengar 234 | Kentaro Inoue 235 | Shota Inoue 236 | Felix Janda 237 | Ariyan Javanpeykar 238 | Abhishek Jha 239 | Jia Jia (贾甲) 240 | Lena Min Ji 241 | Qingyuan Jiang 242 | Peter Johnson 243 | Mattias Jonsson 244 | Grayson Jorgenson 245 | Eric Jovinelly 246 | Jiwan Jung 247 | Bruno Kahn 248 | Christian Kappen 249 | Hayama Kazuma (羽山籍真) 250 | Kiran Kedlaya 251 | Timo Keller 252 | Saskia Kern 253 | Adeel Ahmad Khan 254 | Derek Khu 255 | Keenan Kidwell 256 | Ammar Kilic 257 | Andrew Kiluk 258 | Dongryul Kim 259 | Myeonhu Kim 260 | Lars Kindler 261 | Friedrich Knop 262 | Lukas Kofler 263 | Junnosuke Koizumi 264 | J\'anos Koll\'ar 265 | Vladimir Kondratjew 266 | Frank Kong 267 | Taro Konno 268 | Grisha Konovalov 269 | Dmitry Korb 270 | Thea Kosche 271 | Noah Köstner 272 | Casimir Kothari 273 | Praphulla Koushik 274 | S\'andor Kov\'acs 275 | Emmanuel Kowalski 276 | Steve Kudla 277 | Nick Kuhn 278 | Girish Kulkarni 279 | Mario Kummer 280 | Matthias Kummerer 281 | Manoj Kummini 282 | Arnab Kundu 283 | Daniel Krashen 284 | Oleksandr Kravets 285 | Lukas Krinner 286 | Jef Laga 287 | Raffaele Lamagna 288 | Paolo Lammens 289 | Thiago Landim 290 | Matt Larson 291 | Brian Lawrence 292 | Davis Lazowski 293 | Geoffrey Lee 294 | Heejong Lee 295 | Min Lee 296 | Minki Lee 297 | Pak-Hin Lee 298 | Wet Lee 299 | Simon Pepin Lehalleur 300 | Tobi Lehman 301 | Dion Leijnse 302 | Florian Lengyel 303 | Brandon Levin 304 | Daniel Levine 305 | Jake Levinson 306 | Paul Lessard 307 | Mao Li 308 | Shang Li 309 | Shizhang Li (李时璋) 310 | Wen-Wei Li 311 | Xuanyou Li 312 | Yixiao Li (李一笑) 313 | Carl Lian 314 | Dun Liang 315 | Max Lieblich 316 | Bronson Lim 317 | David Benjamin Lim 318 | Hsueh-Yung Lin 319 | Zongzhu Lin 320 | Joseph Lipman 321 | Daniel Litt 322 | Chunhui Liu 323 | David Liu 324 | Haohao Liu 325 | Huaxin Liu 326 | Hsing Liu 327 | Linyuan Liu 328 | Long Liu 329 | Qing Liu 330 | Shurui Liu 331 | Xiaolong Liu 332 | Xuande Liu 333 | Yuchen Liu 334 | Zeyu Liu 335 | David Loeffler 336 | François Loeser 337 | Davide Lombardo 338 | Dino Lorenzini 339 | Weixiao Lu 340 | Zichen Lu 341 | David Lubicz 342 | Cedric Luger 343 | Yujie Luo 344 | Shiji Lyu 345 | Qixiao Ma 346 | Eoin Mackall 347 | Keerthi Madapusi 348 | Zachary Maddock 349 | Roy Magen 350 | Dipankar Maity 351 | Svetlana Makarova 352 | Mohammed Mammeri 353 | Zhouhang Mao 354 | Sonja Mapes 355 | Christophe Marciot 356 | Florent Martin 357 | Yuto Masamura 358 | Kazuki Masugi (馬杉和貴) 359 | Klaus Mattis 360 | Akhil Mathew 361 | Daniel McCormick 362 | Anton Mellit 363 | Fanjun Meng 364 | Christian Merten 365 | Daniel Miller 366 | Abel Milor 367 | Boaz Moerman 368 | Ben Moonen 369 | Yogesh More 370 | Laurent Moret-Bailly 371 | Maxim Mornev 372 | Jackson Morrow 373 | Yassin Mousa 374 | Nicolas M\"uller 375 | Alapan Mukhopadhyay 376 | Rubén Muñoz--Bertrand 377 | Brendan Seamas Murphy 378 | Takumi Murayama 379 | Yusuf Mustopa 380 | David Mykytyn 381 | Erhard Neher 382 | Michael Neururer 383 | Alejandro González Nevado 384 | Colin Ni 385 | Josh Nichols-Barrer 386 | Kien Nguyen 387 | Brian Nugent 388 | Thomas Nyberg 389 | Arthur Ogus 390 | Masahiro Ohno 391 | Catherine O'Neil 392 | Noah Olander 393 | Martin Olsson 394 | Fabrice Orgogozo 395 | Brian Osserman 396 | Abhishek Oswal 397 | Maris Ozols 398 | Simon Paege 399 | Piotr Pakosz 400 | Mike Paluch 401 | Andrea Panontin 402 | Thanos Papaioannou 403 | Jinhyun Park 404 | Roland Paulin 405 | Rakesh Pawar 406 | Dmitrii Pedchenko 407 | Yang Pei 408 | Hao Peng 409 | Peter Percival 410 | Alex Perry 411 | Dat Pham 412 | Maik Pickl 413 | Dmitrii Pirozhkov 414 | Gregor Pohl 415 | Jérôme Poineau 416 | Bjorn Poonen 417 | Jay Pottharst 418 | Dhivya Prakash R V 419 | Anatoly Preygel 420 | Artem Prihodko 421 | Thibaut Pugin 422 | Souparna Purohit 423 | You Qi 424 | Haonan Qu (曲昊男) 425 | Eamon Quinlan 426 | Patrick Rabau 427 | Ryan Reich 428 | Emanuel Reinecke 429 | Charles Rezk 430 | Gabriel Ribeiro 431 | Wouter Rienks 432 | Alice Rizzardo 433 | Damien Robert 434 | David Roberts 435 | Antonios-Alexandros Robotis 436 | Job Rock 437 | Herman Rohrbach 438 | Fred Rohrer 439 | Matthieu Romagny 440 | Oliver Röndigs 441 | Joe Ross 442 | Julius Ross 443 | Apurba Kumar Roy 444 | Rob Roy 445 | Dmytro Rudenko 446 | Ryan Rueger 447 | Cameron Ruether 448 | David Rufino 449 | Yairon Cid Ruiz 450 | Nithi Rungtanapirom 451 | David Rydh 452 | Carles S\'aez 453 | Steffen Sagave 454 | Jyoti Prakash Saha 455 | Shubhankar Sahai 456 | Zeyn Sahilliogullari 457 | Rijul Saini 458 | Takeshi Saito (斎藤 毅) 459 | Beren Sanders 460 | Emily de Oliveira Santos 461 | Lukas Sauer 462 | Will Sawin 463 | Federico Scavia 464 | Alex Scheffelin 465 | Simon Schirren 466 | Alexander Schmidt 467 | Tobias Schmidt 468 | Olaf Schn\"urer 469 | Tony Scholl 470 | Jakob Scholbach 471 | Rene Schoof 472 | Hans Schoutens 473 | Karl Schwede 474 | Ryan Schwiebert 475 | Won Seong 476 | Jaakko Seppala 477 | Ivan Serna 478 | Michele Serra 479 | Emre Sertoz 480 | Chung-chieh Shan 481 | Yi Shan 482 | Arpith Shanbhag 483 | Zhenbing Shang 484 | Liran Shaul 485 | Che Shen 486 | Bryan Shih 487 | Minseon Shin 488 | Bernd Siebert 489 | Jeroen Sijsling 490 | Lior Silberman 491 | Carlos Simpson 492 | Amina Šišić 493 | John Smith 494 | Thomas Smith 495 | Branislav Sobot 496 | Thiago Solovera e Nery 497 | Calle Sönne 498 | Dylan Spence 499 | David Speyer 500 | Tanya Kaushal Srivastava 501 | Axel St\"abler 502 | Jason Starr 503 | Stephan Snegirov 504 | Matt Stevenson 505 | Elie Studnia 506 | Thierry Stulemeijer 507 | Florian Stümpfl 508 | Ryo Suzuki 509 | Takashi Suzuki 510 | Daichi Takeuchi 511 | Lenny Taelman 512 | Kang Taeyeoup 513 | Tuomas Tajakka 514 | Mattia Talpo 515 | Longke Tang 516 | Yiming Tang 517 | Abolfazl Tarizadeh 518 | John Tate 519 | David Taylor 520 | Titus Teodorescu 521 | Alexios Terezakis 522 | Samuel Tiersma 523 | Michael Thaddeus 524 | Stulemeijer Thierry 525 | Shabalin Timofey 526 | Valery Tolstov 527 | Alex Torzewski 528 | Dajano Tossici 529 | Burt Totaro 530 | Meng-Gen Tsai 531 | Manolis Tsakiris 532 | Minh-Tien Tran 533 | Robin Truax 534 | David Tweedle 535 | Ravi Vakil 536 | Michel Van den Bergh 537 | Theo van den Bogaart 538 | Matthé van der Lee 539 | Jeroen van der Meer 540 | Peter Bruin 541 | Thibaud van den Hove 542 | Remy van Dobben de Bruyn 543 | Kevin Ventullo 544 | Hendrik Verhoek 545 | Antoine Vezier 546 | Erik Visse 547 | Angelo Vistoli 548 | Konrad Voelkel 549 | Simon Vortkamp 550 | Fred Vu 551 | Rishi Vyas 552 | James Waldron 553 | Hua Wang 554 | Jonathan Wang 555 | Yijin Wang 556 | Yiyang Wang 557 | Matthew Ward 558 | Evan Warner 559 | Nils Waßmuth 560 | John Watterlond 561 | Rachel Webb 562 | Torsten Wedhorn 563 | Nicolas Weiss 564 | Dario Weissmann 565 | Jakob Werner 566 | Ian Whitehead 567 | Jonathan Wise 568 | Junho Won 569 | William Wright 570 | Zhenhua Wu 571 | Dominic Wynter 572 | Runlei Xiao 573 | Daxin Xu 574 | Fei Xu 575 | Jiachang Xu 576 | Junyan Xu 577 | Wei Xu 578 | Qijun Yan 579 | Mengxue Yang 580 | Yuan Yang 581 | Zheng Yang 582 | Haodong Yao 583 | Amnon Yekutieli 584 | Weng Yixiang 585 | Alex Youcis 586 | Jize Yu 587 | John Yu 588 | Zhiyu Yuan 589 | Koito Yuu 590 | Felipe Zaldivar 591 | Bogdan Zavyalov 592 | Maciek Zdanowicz 593 | Omri Zemer 594 | Xiangru Zeng 595 | Dingxin Zhang 596 | Hao Zhang 597 | Keke Zhang 598 | Lei Zhang 599 | Robin Zhang 600 | Yuchong Zhang 601 | Zhe Zhang 602 | Zhiyu Zhang 603 | Zili Zhang 604 | Jiayu Zhao 605 | Yifei Zhao 606 | Yu Zhao 607 | Zhipu Zhao 608 | Fan Zheng 609 | Weizhe Zheng 610 | Yunchi Zheng 611 | Shend Zhjeqi 612 | Anfang Zhou 613 | Tong Zhou 614 | Yicheng Zhou 615 | Fan Zhou 616 | Wouter Zomervrucht 617 | Runpu Zong 618 | Konrad Zou 619 | Jeroen Zuiddam 620 | David Zureick-Brown 621 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | GNU Free Documentation License 2 | Version 1.2, November 2002 3 | 4 | 5 | Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 6 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 7 | Everyone is permitted to copy and distribute verbatim copies 8 | of this license document, but changing it is not allowed. 9 | 10 | 11 | 0. PREAMBLE 12 | 13 | The purpose of this License is to make a manual, textbook, or other 14 | functional and useful document "free" in the sense of freedom: to 15 | assure everyone the effective freedom to copy and redistribute it, 16 | with or without modifying it, either commercially or noncommercially. 17 | Secondarily, this License preserves for the author and publisher a way 18 | to get credit for their work, while not being considered responsible 19 | for modifications made by others. 20 | 21 | This License is a kind of "copyleft", which means that derivative 22 | works of the document must themselves be free in the same sense. It 23 | complements the GNU General Public License, which is a copyleft 24 | license designed for free software. 25 | 26 | We have designed this License in order to use it for manuals for free 27 | software, because free software needs free documentation: a free 28 | program should come with manuals providing the same freedoms that the 29 | software does. But this License is not limited to software manuals; 30 | it can be used for any textual work, regardless of subject matter or 31 | whether it is published as a printed book. We recommend this License 32 | principally for works whose purpose is instruction or reference. 33 | 34 | 35 | 1. APPLICABILITY AND DEFINITIONS 36 | 37 | This License applies to any manual or other work, in any medium, that 38 | contains a notice placed by the copyright holder saying it can be 39 | distributed under the terms of this License. Such a notice grants a 40 | world-wide, royalty-free license, unlimited in duration, to use that 41 | work under the conditions stated herein. The "Document", below, 42 | refers to any such manual or work. Any member of the public is a 43 | licensee, and is addressed as "you". You accept the license if you 44 | copy, modify or distribute the work in a way requiring permission 45 | under copyright law. 46 | 47 | A "Modified Version" of the Document means any work containing the 48 | Document or a portion of it, either copied verbatim, or with 49 | modifications and/or translated into another language. 50 | 51 | A "Secondary Section" is a named appendix or a front-matter section of 52 | the Document that deals exclusively with the relationship of the 53 | publishers or authors of the Document to the Document's overall subject 54 | (or to related matters) and contains nothing that could fall directly 55 | within that overall subject. (Thus, if the Document is in part a 56 | textbook of mathematics, a Secondary Section may not explain any 57 | mathematics.) The relationship could be a matter of historical 58 | connection with the subject or with related matters, or of legal, 59 | commercial, philosophical, ethical or political position regarding 60 | them. 61 | 62 | The "Invariant Sections" are certain Secondary Sections whose titles 63 | are designated, as being those of Invariant Sections, in the notice 64 | that says that the Document is released under this License. If a 65 | section does not fit the above definition of Secondary then it is not 66 | allowed to be designated as Invariant. The Document may contain zero 67 | Invariant Sections. If the Document does not identify any Invariant 68 | Sections then there are none. 69 | 70 | The "Cover Texts" are certain short passages of text that are listed, 71 | as Front-Cover Texts or Back-Cover Texts, in the notice that says that 72 | the Document is released under this License. A Front-Cover Text may 73 | be at most 5 words, and a Back-Cover Text may be at most 25 words. 74 | 75 | A "Transparent" copy of the Document means a machine-readable copy, 76 | represented in a format whose specification is available to the 77 | general public, that is suitable for revising the document 78 | straightforwardly with generic text editors or (for images composed of 79 | pixels) generic paint programs or (for drawings) some widely available 80 | drawing editor, and that is suitable for input to text formatters or 81 | for automatic translation to a variety of formats suitable for input 82 | to text formatters. A copy made in an otherwise Transparent file 83 | format whose markup, or absence of markup, has been arranged to thwart 84 | or discourage subsequent modification by readers is not Transparent. 85 | An image format is not Transparent if used for any substantial amount 86 | of text. A copy that is not "Transparent" is called "Opaque". 87 | 88 | Examples of suitable formats for Transparent copies include plain 89 | ASCII without markup, Texinfo input format, LaTeX input format, SGML 90 | or XML using a publicly available DTD, and standard-conforming simple 91 | HTML, PostScript or PDF designed for human modification. Examples of 92 | transparent image formats include PNG, XCF and JPG. Opaque formats 93 | include proprietary formats that can be read and edited only by 94 | proprietary word processors, SGML or XML for which the DTD and/or 95 | processing tools are not generally available, and the 96 | machine-generated HTML, PostScript or PDF produced by some word 97 | processors for output purposes only. 98 | 99 | The "Title Page" means, for a printed book, the title page itself, 100 | plus such following pages as are needed to hold, legibly, the material 101 | this License requires to appear in the title page. For works in 102 | formats which do not have any title page as such, "Title Page" means 103 | the text near the most prominent appearance of the work's title, 104 | preceding the beginning of the body of the text. 105 | 106 | A section "Entitled XYZ" means a named subunit of the Document whose 107 | title either is precisely XYZ or contains XYZ in parentheses following 108 | text that translates XYZ in another language. (Here XYZ stands for a 109 | specific section name mentioned below, such as "Acknowledgements", 110 | "Dedications", "Endorsements", or "History".) To "Preserve the Title" 111 | of such a section when you modify the Document means that it remains a 112 | section "Entitled XYZ" according to this definition. 113 | 114 | The Document may include Warranty Disclaimers next to the notice which 115 | states that this License applies to the Document. These Warranty 116 | Disclaimers are considered to be included by reference in this 117 | License, but only as regards disclaiming warranties: any other 118 | implication that these Warranty Disclaimers may have is void and has 119 | no effect on the meaning of this License. 120 | 121 | 122 | 2. VERBATIM COPYING 123 | 124 | You may copy and distribute the Document in any medium, either 125 | commercially or noncommercially, provided that this License, the 126 | copyright notices, and the license notice saying this License applies 127 | to the Document are reproduced in all copies, and that you add no other 128 | conditions whatsoever to those of this License. You may not use 129 | technical measures to obstruct or control the reading or further 130 | copying of the copies you make or distribute. However, you may accept 131 | compensation in exchange for copies. If you distribute a large enough 132 | number of copies you must also follow the conditions in section 3. 133 | 134 | You may also lend copies, under the same conditions stated above, and 135 | you may publicly display copies. 136 | 137 | 138 | 3. COPYING IN QUANTITY 139 | 140 | If you publish printed copies (or copies in media that commonly have 141 | printed covers) of the Document, numbering more than 100, and the 142 | Document's license notice requires Cover Texts, you must enclose the 143 | copies in covers that carry, clearly and legibly, all these Cover 144 | Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on 145 | the back cover. Both covers must also clearly and legibly identify 146 | you as the publisher of these copies. The front cover must present 147 | the full title with all words of the title equally prominent and 148 | visible. You may add other material on the covers in addition. 149 | Copying with changes limited to the covers, as long as they preserve 150 | the title of the Document and satisfy these conditions, can be treated 151 | as verbatim copying in other respects. 152 | 153 | If the required texts for either cover are too voluminous to fit 154 | legibly, you should put the first ones listed (as many as fit 155 | reasonably) on the actual cover, and continue the rest onto adjacent 156 | pages. 157 | 158 | If you publish or distribute Opaque copies of the Document numbering 159 | more than 100, you must either include a machine-readable Transparent 160 | copy along with each Opaque copy, or state in or with each Opaque copy 161 | a computer-network location from which the general network-using 162 | public has access to download using public-standard network protocols 163 | a complete Transparent copy of the Document, free of added material. 164 | If you use the latter option, you must take reasonably prudent steps, 165 | when you begin distribution of Opaque copies in quantity, to ensure 166 | that this Transparent copy will remain thus accessible at the stated 167 | location until at least one year after the last time you distribute an 168 | Opaque copy (directly or through your agents or retailers) of that 169 | edition to the public. 170 | 171 | It is requested, but not required, that you contact the authors of the 172 | Document well before redistributing any large number of copies, to give 173 | them a chance to provide you with an updated version of the Document. 174 | 175 | 176 | 4. MODIFICATIONS 177 | 178 | You may copy and distribute a Modified Version of the Document under 179 | the conditions of sections 2 and 3 above, provided that you release 180 | the Modified Version under precisely this License, with the Modified 181 | Version filling the role of the Document, thus licensing distribution 182 | and modification of the Modified Version to whoever possesses a copy 183 | of it. In addition, you must do these things in the Modified Version: 184 | 185 | A. Use in the Title Page (and on the covers, if any) a title distinct 186 | from that of the Document, and from those of previous versions 187 | (which should, if there were any, be listed in the History section 188 | of the Document). You may use the same title as a previous version 189 | if the original publisher of that version gives permission. 190 | B. List on the Title Page, as authors, one or more persons or entities 191 | responsible for authorship of the modifications in the Modified 192 | Version, together with at least five of the principal authors of the 193 | Document (all of its principal authors, if it has fewer than five), 194 | unless they release you from this requirement. 195 | C. State on the Title page the name of the publisher of the 196 | Modified Version, as the publisher. 197 | D. Preserve all the copyright notices of the Document. 198 | E. Add an appropriate copyright notice for your modifications 199 | adjacent to the other copyright notices. 200 | F. Include, immediately after the copyright notices, a license notice 201 | giving the public permission to use the Modified Version under the 202 | terms of this License, in the form shown in the Addendum below. 203 | G. Preserve in that license notice the full lists of Invariant Sections 204 | and required Cover Texts given in the Document's license notice. 205 | H. Include an unaltered copy of this License. 206 | I. Preserve the section Entitled "History", Preserve its Title, and add 207 | to it an item stating at least the title, year, new authors, and 208 | publisher of the Modified Version as given on the Title Page. If 209 | there is no section Entitled "History" in the Document, create one 210 | stating the title, year, authors, and publisher of the Document as 211 | given on its Title Page, then add an item describing the Modified 212 | Version as stated in the previous sentence. 213 | J. Preserve the network location, if any, given in the Document for 214 | public access to a Transparent copy of the Document, and likewise 215 | the network locations given in the Document for previous versions 216 | it was based on. These may be placed in the "History" section. 217 | You may omit a network location for a work that was published at 218 | least four years before the Document itself, or if the original 219 | publisher of the version it refers to gives permission. 220 | K. For any section Entitled "Acknowledgements" or "Dedications", 221 | Preserve the Title of the section, and preserve in the section all 222 | the substance and tone of each of the contributor acknowledgements 223 | and/or dedications given therein. 224 | L. Preserve all the Invariant Sections of the Document, 225 | unaltered in their text and in their titles. Section numbers 226 | or the equivalent are not considered part of the section titles. 227 | M. Delete any section Entitled "Endorsements". Such a section 228 | may not be included in the Modified Version. 229 | N. Do not retitle any existing section to be Entitled "Endorsements" 230 | or to conflict in title with any Invariant Section. 231 | O. Preserve any Warranty Disclaimers. 232 | 233 | If the Modified Version includes new front-matter sections or 234 | appendices that qualify as Secondary Sections and contain no material 235 | copied from the Document, you may at your option designate some or all 236 | of these sections as invariant. To do this, add their titles to the 237 | list of Invariant Sections in the Modified Version's license notice. 238 | These titles must be distinct from any other section titles. 239 | 240 | You may add a section Entitled "Endorsements", provided it contains 241 | nothing but endorsements of your Modified Version by various 242 | parties--for example, statements of peer review or that the text has 243 | been approved by an organization as the authoritative definition of a 244 | standard. 245 | 246 | You may add a passage of up to five words as a Front-Cover Text, and a 247 | passage of up to 25 words as a Back-Cover Text, to the end of the list 248 | of Cover Texts in the Modified Version. Only one passage of 249 | Front-Cover Text and one of Back-Cover Text may be added by (or 250 | through arrangements made by) any one entity. If the Document already 251 | includes a cover text for the same cover, previously added by you or 252 | by arrangement made by the same entity you are acting on behalf of, 253 | you may not add another; but you may replace the old one, on explicit 254 | permission from the previous publisher that added the old one. 255 | 256 | The author(s) and publisher(s) of the Document do not by this License 257 | give permission to use their names for publicity for or to assert or 258 | imply endorsement of any Modified Version. 259 | 260 | 261 | 5. COMBINING DOCUMENTS 262 | 263 | You may combine the Document with other documents released under this 264 | License, under the terms defined in section 4 above for modified 265 | versions, provided that you include in the combination all of the 266 | Invariant Sections of all of the original documents, unmodified, and 267 | list them all as Invariant Sections of your combined work in its 268 | license notice, and that you preserve all their Warranty Disclaimers. 269 | 270 | The combined work need only contain one copy of this License, and 271 | multiple identical Invariant Sections may be replaced with a single 272 | copy. If there are multiple Invariant Sections with the same name but 273 | different contents, make the title of each such section unique by 274 | adding at the end of it, in parentheses, the name of the original 275 | author or publisher of that section if known, or else a unique number. 276 | Make the same adjustment to the section titles in the list of 277 | Invariant Sections in the license notice of the combined work. 278 | 279 | In the combination, you must combine any sections Entitled "History" 280 | in the various original documents, forming one section Entitled 281 | "History"; likewise combine any sections Entitled "Acknowledgements", 282 | and any sections Entitled "Dedications". You must delete all sections 283 | Entitled "Endorsements". 284 | 285 | 286 | 6. COLLECTIONS OF DOCUMENTS 287 | 288 | You may make a collection consisting of the Document and other documents 289 | released under this License, and replace the individual copies of this 290 | License in the various documents with a single copy that is included in 291 | the collection, provided that you follow the rules of this License for 292 | verbatim copying of each of the documents in all other respects. 293 | 294 | You may extract a single document from such a collection, and distribute 295 | it individually under this License, provided you insert a copy of this 296 | License into the extracted document, and follow this License in all 297 | other respects regarding verbatim copying of that document. 298 | 299 | 300 | 7. AGGREGATION WITH INDEPENDENT WORKS 301 | 302 | A compilation of the Document or its derivatives with other separate 303 | and independent documents or works, in or on a volume of a storage or 304 | distribution medium, is called an "aggregate" if the copyright 305 | resulting from the compilation is not used to limit the legal rights 306 | of the compilation's users beyond what the individual works permit. 307 | When the Document is included in an aggregate, this License does not 308 | apply to the other works in the aggregate which are not themselves 309 | derivative works of the Document. 310 | 311 | If the Cover Text requirement of section 3 is applicable to these 312 | copies of the Document, then if the Document is less than one half of 313 | the entire aggregate, the Document's Cover Texts may be placed on 314 | covers that bracket the Document within the aggregate, or the 315 | electronic equivalent of covers if the Document is in electronic form. 316 | Otherwise they must appear on printed covers that bracket the whole 317 | aggregate. 318 | 319 | 320 | 8. TRANSLATION 321 | 322 | Translation is considered a kind of modification, so you may 323 | distribute translations of the Document under the terms of section 4. 324 | Replacing Invariant Sections with translations requires special 325 | permission from their copyright holders, but you may include 326 | translations of some or all Invariant Sections in addition to the 327 | original versions of these Invariant Sections. You may include a 328 | translation of this License, and all the license notices in the 329 | Document, and any Warranty Disclaimers, provided that you also include 330 | the original English version of this License and the original versions 331 | of those notices and disclaimers. In case of a disagreement between 332 | the translation and the original version of this License or a notice 333 | or disclaimer, the original version will prevail. 334 | 335 | If a section in the Document is Entitled "Acknowledgements", 336 | "Dedications", or "History", the requirement (section 4) to Preserve 337 | its Title (section 1) will typically require changing the actual 338 | title. 339 | 340 | 341 | 9. TERMINATION 342 | 343 | You may not copy, modify, sublicense, or distribute the Document except 344 | as expressly provided for under this License. Any other attempt to 345 | copy, modify, sublicense or distribute the Document is void, and will 346 | automatically terminate your rights under this License. However, 347 | parties who have received copies, or rights, from you under this 348 | License will not have their licenses terminated so long as such 349 | parties remain in full compliance. 350 | 351 | 352 | 10. FUTURE REVISIONS OF THIS LICENSE 353 | 354 | The Free Software Foundation may publish new, revised versions 355 | of the GNU Free Documentation License from time to time. Such new 356 | versions will be similar in spirit to the present version, but may 357 | differ in detail to address new problems or concerns. See 358 | https://www.gnu.org/copyleft/. 359 | 360 | Each version of the License is given a distinguishing version number. 361 | If the Document specifies that a particular numbered version of this 362 | License "or any later version" applies to it, you have the option of 363 | following the terms and conditions either of that specified version or 364 | of any later version that has been published (not as a draft) by the 365 | Free Software Foundation. If the Document does not specify a version 366 | number of this License, you may choose any version ever published (not 367 | as a draft) by the Free Software Foundation. 368 | 369 | 370 | ADDENDUM: How to use this License for your documents 371 | 372 | To use this License in a document you have written, include a copy of 373 | the License in the document and put the following copyright and 374 | license notices just after the title page: 375 | 376 | Copyright (c) YEAR YOUR NAME. 377 | Permission is granted to copy, distribute and/or modify this document 378 | under the terms of the GNU Free Documentation License, Version 1.2 379 | or any later version published by the Free Software Foundation; 380 | with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 381 | A copy of the license is included in the section entitled "GNU 382 | Free Documentation License". 383 | 384 | If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, 385 | replace the "with...Texts." line with this: 386 | 387 | with the Invariant Sections being LIST THEIR TITLES, with the 388 | Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. 389 | 390 | If you have Invariant Sections without Cover Texts, or some other 391 | combination of the three, merge those two alternatives to suit the 392 | situation. 393 | 394 | If your document contains nontrivial examples of program code, we 395 | recommend releasing these examples in parallel under your choice of 396 | free software license, such as the GNU General Public License, 397 | to permit their use in free software. 398 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Known suffixes. 2 | .SUFFIXES: .aux .bbl .bib .blg .dvi .htm .html .css .log .out .pdf .ps .tex \ 3 | .toc .foo .bar 4 | 5 | # Master list of stems of tex files in the project. 6 | # This should be in order. 7 | LIJST = introduction conventions sets categories \ 8 | topology sheaves sites stacks \ 9 | fields algebra brauer \ 10 | homology derived simplicial \ 11 | more-algebra smoothing \ 12 | modules sites-modules \ 13 | injectives cohomology sites-cohomology dga dpa sdga hypercovering \ 14 | schemes constructions properties morphisms coherent divisors limits \ 15 | varieties topologies descent perfect more-morphisms flat groupoids \ 16 | more-groupoids etale \ 17 | chow intersection pic weil \ 18 | adequate dualizing duality discriminant derham local-cohomology \ 19 | algebraization curves resolve models functors equiv \ 20 | pione etale-cohomology \ 21 | crystalline proetale relative-cycles more-etale trace \ 22 | spaces spaces-properties spaces-morphisms decent-spaces \ 23 | spaces-cohomology spaces-limits spaces-divisors spaces-over-fields \ 24 | spaces-topologies \ 25 | spaces-descent spaces-perfect spaces-more-morphisms \ 26 | spaces-flat spaces-groupoids spaces-more-groupoids bootstrap \ 27 | spaces-pushouts spaces-chow \ 28 | groupoids-quotients spaces-more-cohomology spaces-simplicial \ 29 | spaces-duality formal-spaces restricted spaces-resolve \ 30 | formal-defos defos cotangent examples-defos \ 31 | algebraic examples-stacks stacks-sheaves criteria artin quot \ 32 | stacks-properties stacks-morphisms stacks-limits \ 33 | stacks-cohomology stacks-perfect \ 34 | stacks-introduction stacks-more-morphisms stacks-geometry \ 35 | moduli moduli-curves \ 36 | examples exercises guide \ 37 | desirables coding obsolete 38 | 39 | # Add index and fdl to get index and license latexed as well. 40 | LIJST_FDL = $(LIJST) fdl index 41 | 42 | # Add book to get all stems of tex files needed for tags 43 | LIJST_TAGS = $(LIJST_FDL) book 44 | 45 | # Different extensions 46 | SOURCES = $(patsubst %,%.tex,$(LIJST)) 47 | TAGS = $(patsubst %,tags/tmp/%.tex,$(LIJST_TAGS)) 48 | TAG_EXTRAS = tags/tmp/my.bib tags/tmp/hyperref.cfg \ 49 | tags/tmp/stacks-project.cls tags/tmp/stacks-project-book.cls \ 50 | tags/tmp/Makefile tags/tmp/chapters.tex \ 51 | tags/tmp/preamble.tex tags/tmp/bibliography.tex 52 | FOO_SOURCES = $(patsubst %,%.foo,$(LIJST)) 53 | FOOS = $(patsubst %,%.foo,$(LIJST_FDL)) 54 | BARS = $(patsubst %,%.bar,$(LIJST_FDL)) 55 | PDFS = $(patsubst %,%.pdf,$(LIJST_FDL)) 56 | DVIS = $(patsubst %,%.dvi,$(LIJST_FDL)) 57 | 58 | # Be careful. Files in INSTALLDIR will be overwritten! 59 | INSTALLDIR= 60 | 61 | # Default latex commands 62 | LATEX := latex -src 63 | #LATEX := ./scripts/latex.sh "$(CURDIR)" "latex -src" 64 | 65 | PDFLATEX := pdflatex 66 | #PDFLATEX := ./scripts/latex.sh "$(CURDIR)" pdflatex 67 | 68 | FOO_LATEX := $(LATEX) 69 | #FOO_LATEX := $(PDFLATEX) 70 | 71 | # Currently the default target runs latex once for each updated tex file. 72 | # This is what you want if you are just editing a single tex file and want 73 | # to look at the resulting dvi file. It does latex the license of the index. 74 | # We use the aux file to keep track of whether the tex file has been updated. 75 | .PHONY: default 76 | default: $(FOO_SOURCES) 77 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 78 | @echo "% This target latexs each updated tex file just once. %" 79 | @echo "% See the file documentation/make-project for others. %" 80 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 81 | 82 | # Target which creates all dvi files of chapters 83 | .PHONY: dvis 84 | dvis: $(FOOS) $(BARS) $(DVIS) 85 | 86 | # Target which creates all pdf files of chapters 87 | .PHONY: pdfs 88 | pdfs: $(FOOS) $(BARS) $(PDFS) 89 | 90 | # We need the following to cancel the built-in rule for 91 | # dvi files (which uses tex not latex). 92 | %.dvi : %.tex 93 | 94 | # Automatically generated tex files 95 | tmp/index.tex: *.tex 96 | python3 ./scripts/make_index.py "$(CURDIR)" > tmp/index.tex 97 | 98 | tmp/book.tex: *.tex tmp/index.tex 99 | python3 ./scripts/make_book.py "$(CURDIR)" > tmp/book.tex 100 | 101 | # Creating aux files 102 | index.foo: tmp/index.tex 103 | $(FOO_LATEX) tmp/index 104 | touch index.foo 105 | 106 | book.foo: tmp/book.tex 107 | $(FOO_LATEX) tmp/book 108 | touch book.foo 109 | 110 | %.foo: %.tex 111 | $(FOO_LATEX) $* 112 | touch $*.foo 113 | 114 | # Creating bbl files 115 | index.bar: tmp/index.tex index.foo 116 | @echo "Do not need to bibtex index.tex" 117 | touch index.bar 118 | 119 | fdl.bar: fdl.tex fdl.foo 120 | @echo "Do not need to bibtex fdl.tex" 121 | touch fdl.bar 122 | 123 | book.bar: tmp/book.tex book.foo 124 | bibtex book 125 | touch book.bar 126 | 127 | %.bar: %.tex %.foo 128 | bibtex $* 129 | touch $*.bar 130 | 131 | # Creating pdf files 132 | index.pdf: tmp/index.tex index.bar $(FOOS) 133 | $(PDFLATEX) tmp/index 134 | $(PDFLATEX) tmp/index 135 | 136 | book.pdf: tmp/book.tex book.bar 137 | $(PDFLATEX) tmp/book 138 | $(PDFLATEX) tmp/book 139 | 140 | %.pdf: %.tex %.bar $(FOOS) 141 | $(PDFLATEX) $* 142 | $(PDFLATEX) $* 143 | 144 | # Creating dvi files 145 | index.dvi: tmp/index.tex index.bar $(FOOS) 146 | $(LATEX) tmp/index 147 | $(LATEX) tmp/index 148 | 149 | book.dvi: tmp/book.tex book.bar 150 | $(LATEX) tmp/book 151 | $(LATEX) tmp/book 152 | 153 | %.dvi : %.tex %.bar $(FOOS) 154 | $(LATEX) $* 155 | $(LATEX) $* 156 | 157 | # 158 | # 159 | # Tags stuff 160 | # 161 | # 162 | tags/tmp/book.tex: tmp/book.tex tags/tags 163 | python3 ./scripts/tag_up.py "$(CURDIR)" book > tags/tmp/book.tex 164 | 165 | tags/tmp/index.tex: tmp/index.tex 166 | cp tmp/index.tex tags/tmp/index.tex 167 | 168 | tags/tmp/preamble.tex: preamble.tex tags/tags 169 | python3 ./scripts/tag_up.py "$(CURDIR)" preamble > tags/tmp/preamble.tex 170 | 171 | tags/tmp/chapters.tex: chapters.tex 172 | cp chapters.tex tags/tmp/chapters.tex 173 | 174 | tags/tmp/%.tex: %.tex tags/tags 175 | python3 ./scripts/tag_up.py "$(CURDIR)" $* > tags/tmp/$*.tex 176 | 177 | tags/tmp/stacks-project.cls: stacks-project.cls 178 | cp stacks-project.cls tags/tmp/stacks-project.cls 179 | 180 | tags/tmp/stacks-project-book.cls: stacks-project-book.cls 181 | cp stacks-project-book.cls tags/tmp/stacks-project-book.cls 182 | 183 | tags/tmp/hyperref.cfg: hyperref.cfg 184 | cp hyperref.cfg tags/tmp/hyperref.cfg 185 | 186 | tags/tmp/my.bib: my.bib 187 | cp my.bib tags/tmp/my.bib 188 | 189 | tags/tmp/Makefile: tags/Makefile 190 | cp tags/Makefile tags/tmp/Makefile 191 | 192 | # Target dealing with tags 193 | .PHONY: tags 194 | tags: $(TAGS) $(TAG_EXTRAS) 195 | @echo "TAGS TARGET" 196 | $(MAKE) -C tags/tmp 197 | 198 | .PHONY: tags_install 199 | tags_install: tags tarball 200 | ifndef INSTALLDIR 201 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 202 | @echo "% Set INSTALLDIR value in the Makefile! %" 203 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 204 | else 205 | cp tags/tmp/*.pdf $(INSTALLDIR) 206 | tar -c -f $(INSTALLDIR)/stacks-pdfs.tar --exclude book.pdf --transform=s@tags/tmp@stacks-pdfs@ tags/tmp/*.pdf 207 | git archive --format=tar HEAD | (cd $(INSTALLDIR) && tar xf -) 208 | cp stacks-project.tar.bz2 $(INSTALLDIR) 209 | git log --pretty=oneline -1 > $(INSTALLDIR)/VERSION 210 | endif 211 | 212 | .PHONY: tags_clean 213 | tags_clean: 214 | rm -f tags/tmp/* 215 | rm -f tmp/book.tex tmp/index.tex 216 | rm -f stacks-project.tar.bz2 217 | 218 | # Additional targets 219 | .PHONY: book 220 | book: book.foo book.bar book.dvi book.pdf 221 | 222 | .PHONY: clean 223 | clean: 224 | rm -f *.aux *.bbl *.blg *.dvi *.log *.pdf *.ps *.out *.toc *.foo *.bar 225 | rm -f tmp/book.tex tmp/index.tex 226 | rm -f stacks-project.tar.bz2 227 | 228 | .PHONY: distclean 229 | distclean: clean tags_clean 230 | 231 | .PHONY: backup 232 | backup: 233 | git archive --prefix=stacks-project/ HEAD | bzip2 > \ 234 | ../stacks-project_backup.tar.bz2 235 | 236 | .PHONY: tarball 237 | tarball: 238 | git archive --prefix=stacks-project/ HEAD | bzip2 > stacks-project.tar.bz2 239 | 240 | # Target which makes all dvis and all pdfs, as well as the tarball 241 | .PHONY: all 242 | all: dvis pdfs book tarball 243 | 244 | .PHONY: install 245 | install: 246 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 247 | @echo "% To install the project, use the tags_install target %" 248 | @echo "% Be sure to change INSTALLDIR value in the Makefile! %" 249 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 250 | 251 | WEBDIR=../WEB 252 | .PHONY: web 253 | web: tmp/index.tex 254 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 255 | @echo "% Stuff in WEBDIR will be overwritten!!!!!!!!! %" 256 | @echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" 257 | cp my.bib $(WEBDIR)/my.bib 258 | cp tags/tags $(WEBDIR)/tags 259 | python3 ./scripts/web_book.py "$(CURDIR)" > $(WEBDIR)/book.tex 260 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | stacks-project -- algebraic stacks project 2 | 3 | 4 | Collaborative web-based project writing a text book on algebraic stacks and the 5 | algebraic geometry that is needed to define them. Location on the web: 6 | 7 | https://stacks.math.columbia.edu/ 8 | 9 | You can simply latex the files in the current directory read them, edit them, 10 | and submit your changes by email back into the project. 11 | 12 | 13 | Here is are some pointers to documentation: 14 | * how to create all dvi/pdf files at once, see documentation/make-project 15 | * how to submit your work, see documentation/submitting-patches 16 | * how to use git, see documentation/git-howto 17 | * read about support from organizations in documentation/support 18 | * for a rough todo list, see documentation/todo-list 19 | * for technical rules governing internal references, see documentation/rules 20 | For more information, please see the website at the address above. 21 | 22 | 23 | To get in touch with the maintainer(s) of this project please email 24 | 25 | stacks.project@gmail.com 26 | -------------------------------------------------------------------------------- /bibliography.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | 6 | \begin{document} 7 | 8 | \title{Bibliography} 9 | 10 | \maketitle 11 | 12 | \bibliography{my} 13 | \nocite{*} 14 | \bibliographystyle{amsalpha} 15 | 16 | \end{document} 17 | -------------------------------------------------------------------------------- /chapters.tex: -------------------------------------------------------------------------------- 1 | \begin{multicols}{2}[\section{Other chapters}] 2 | \noindent 3 | Preliminaries 4 | \begin{enumerate} 5 | \item \hyperref[introduction-section-phantom]{Introduction} 6 | \item \hyperref[conventions-section-phantom]{Conventions} 7 | \item \hyperref[sets-section-phantom]{Set Theory} 8 | \item \hyperref[categories-section-phantom]{Categories} 9 | \item \hyperref[topology-section-phantom]{Topology} 10 | \item \hyperref[sheaves-section-phantom]{Sheaves on Spaces} 11 | \item \hyperref[sites-section-phantom]{Sites and Sheaves} 12 | \item \hyperref[stacks-section-phantom]{Stacks} 13 | \item \hyperref[fields-section-phantom]{Fields} 14 | \item \hyperref[algebra-section-phantom]{Commutative Algebra} 15 | \item \hyperref[brauer-section-phantom]{Brauer Groups} 16 | \item \hyperref[homology-section-phantom]{Homological Algebra} 17 | \item \hyperref[derived-section-phantom]{Derived Categories} 18 | \item \hyperref[simplicial-section-phantom]{Simplicial Methods} 19 | \item \hyperref[more-algebra-section-phantom]{More on Algebra} 20 | \item \hyperref[smoothing-section-phantom]{Smoothing Ring Maps} 21 | \item \hyperref[modules-section-phantom]{Sheaves of Modules} 22 | \item \hyperref[sites-modules-section-phantom]{Modules on Sites} 23 | \item \hyperref[injectives-section-phantom]{Injectives} 24 | \item \hyperref[cohomology-section-phantom]{Cohomology of Sheaves} 25 | \item \hyperref[sites-cohomology-section-phantom]{Cohomology on Sites} 26 | \item \hyperref[dga-section-phantom]{Differential Graded Algebra} 27 | \item \hyperref[dpa-section-phantom]{Divided Power Algebra} 28 | \item \hyperref[sdga-section-phantom]{Differential Graded Sheaves} 29 | \item \hyperref[hypercovering-section-phantom]{Hypercoverings} 30 | \end{enumerate} 31 | Schemes 32 | \begin{enumerate} 33 | \setcounter{enumi}{25} 34 | \item \hyperref[schemes-section-phantom]{Schemes} 35 | \item \hyperref[constructions-section-phantom]{Constructions of Schemes} 36 | \item \hyperref[properties-section-phantom]{Properties of Schemes} 37 | \item \hyperref[morphisms-section-phantom]{Morphisms of Schemes} 38 | \item \hyperref[coherent-section-phantom]{Cohomology of Schemes} 39 | \item \hyperref[divisors-section-phantom]{Divisors} 40 | \item \hyperref[limits-section-phantom]{Limits of Schemes} 41 | \item \hyperref[varieties-section-phantom]{Varieties} 42 | \item \hyperref[topologies-section-phantom]{Topologies on Schemes} 43 | \item \hyperref[descent-section-phantom]{Descent} 44 | \item \hyperref[perfect-section-phantom]{Derived Categories of Schemes} 45 | \item \hyperref[more-morphisms-section-phantom]{More on Morphisms} 46 | \item \hyperref[flat-section-phantom]{More on Flatness} 47 | \item \hyperref[groupoids-section-phantom]{Groupoid Schemes} 48 | \item \hyperref[more-groupoids-section-phantom]{More on Groupoid Schemes} 49 | \item \hyperref[etale-section-phantom]{\'Etale Morphisms of Schemes} 50 | \end{enumerate} 51 | Topics in Scheme Theory 52 | \begin{enumerate} 53 | \setcounter{enumi}{41} 54 | \item \hyperref[chow-section-phantom]{Chow Homology} 55 | \item \hyperref[intersection-section-phantom]{Intersection Theory} 56 | \item \hyperref[pic-section-phantom]{Picard Schemes of Curves} 57 | \item \hyperref[weil-section-phantom]{Weil Cohomology Theories} 58 | \item \hyperref[adequate-section-phantom]{Adequate Modules} 59 | \item \hyperref[dualizing-section-phantom]{Dualizing Complexes} 60 | \item \hyperref[duality-section-phantom]{Duality for Schemes} 61 | \item \hyperref[discriminant-section-phantom]{Discriminants and Differents} 62 | \item \hyperref[derham-section-phantom]{de Rham Cohomology} 63 | \item \hyperref[local-cohomology-section-phantom]{Local Cohomology} 64 | \item \hyperref[algebraization-section-phantom]{Algebraic and Formal Geometry} 65 | \item \hyperref[curves-section-phantom]{Algebraic Curves} 66 | \item \hyperref[resolve-section-phantom]{Resolution of Surfaces} 67 | \item \hyperref[models-section-phantom]{Semistable Reduction} 68 | \item \hyperref[functors-section-phantom]{Functors and Morphisms} 69 | \item \hyperref[equiv-section-phantom]{Derived Categories of Varieties} 70 | \item \hyperref[pione-section-phantom]{Fundamental Groups of Schemes} 71 | \item \hyperref[etale-cohomology-section-phantom]{\'Etale Cohomology} 72 | \item \hyperref[crystalline-section-phantom]{Crystalline Cohomology} 73 | \item \hyperref[proetale-section-phantom]{Pro-\'etale Cohomology} 74 | \item \hyperref[relative-cycles-section-phantom]{Relative Cycles} 75 | \item \hyperref[more-etale-section-phantom]{More \'Etale Cohomology} 76 | \item \hyperref[trace-section-phantom]{The Trace Formula} 77 | \end{enumerate} 78 | Algebraic Spaces 79 | \begin{enumerate} 80 | \setcounter{enumi}{64} 81 | \item \hyperref[spaces-section-phantom]{Algebraic Spaces} 82 | \item \hyperref[spaces-properties-section-phantom]{Properties of Algebraic Spaces} 83 | \item \hyperref[spaces-morphisms-section-phantom]{Morphisms of Algebraic Spaces} 84 | \item \hyperref[decent-spaces-section-phantom]{Decent Algebraic Spaces} 85 | \item \hyperref[spaces-cohomology-section-phantom]{Cohomology of Algebraic Spaces} 86 | \item \hyperref[spaces-limits-section-phantom]{Limits of Algebraic Spaces} 87 | \item \hyperref[spaces-divisors-section-phantom]{Divisors on Algebraic Spaces} 88 | \item \hyperref[spaces-over-fields-section-phantom]{Algebraic Spaces over Fields} 89 | \item \hyperref[spaces-topologies-section-phantom]{Topologies on Algebraic Spaces} 90 | \item \hyperref[spaces-descent-section-phantom]{Descent and Algebraic Spaces} 91 | \item \hyperref[spaces-perfect-section-phantom]{Derived Categories of Spaces} 92 | \item \hyperref[spaces-more-morphisms-section-phantom]{More on Morphisms of Spaces} 93 | \item \hyperref[spaces-flat-section-phantom]{Flatness on Algebraic Spaces} 94 | \item \hyperref[spaces-groupoids-section-phantom]{Groupoids in Algebraic Spaces} 95 | \item \hyperref[spaces-more-groupoids-section-phantom]{More on Groupoids in Spaces} 96 | \item \hyperref[bootstrap-section-phantom]{Bootstrap} 97 | \item \hyperref[spaces-pushouts-section-phantom]{Pushouts of Algebraic Spaces} 98 | \end{enumerate} 99 | Topics in Geometry 100 | \begin{enumerate} 101 | \setcounter{enumi}{81} 102 | \item \hyperref[spaces-chow-section-phantom]{Chow Groups of Spaces} 103 | \item \hyperref[groupoids-quotients-section-phantom]{Quotients of Groupoids} 104 | \item \hyperref[spaces-more-cohomology-section-phantom]{More on Cohomology of Spaces} 105 | \item \hyperref[spaces-simplicial-section-phantom]{Simplicial Spaces} 106 | \item \hyperref[spaces-duality-section-phantom]{Duality for Spaces} 107 | \item \hyperref[formal-spaces-section-phantom]{Formal Algebraic Spaces} 108 | \item \hyperref[restricted-section-phantom]{Algebraization of Formal Spaces} 109 | \item \hyperref[spaces-resolve-section-phantom]{Resolution of Surfaces Revisited} 110 | \end{enumerate} 111 | Deformation Theory 112 | \begin{enumerate} 113 | \setcounter{enumi}{89} 114 | \item \hyperref[formal-defos-section-phantom]{Formal Deformation Theory} 115 | \item \hyperref[defos-section-phantom]{Deformation Theory} 116 | \item \hyperref[cotangent-section-phantom]{The Cotangent Complex} 117 | \item \hyperref[examples-defos-section-phantom]{Deformation Problems} 118 | \end{enumerate} 119 | Algebraic Stacks 120 | \begin{enumerate} 121 | \setcounter{enumi}{93} 122 | \item \hyperref[algebraic-section-phantom]{Algebraic Stacks} 123 | \item \hyperref[examples-stacks-section-phantom]{Examples of Stacks} 124 | \item \hyperref[stacks-sheaves-section-phantom]{Sheaves on Algebraic Stacks} 125 | \item \hyperref[criteria-section-phantom]{Criteria for Representability} 126 | \item \hyperref[artin-section-phantom]{Artin's Axioms} 127 | \item \hyperref[quot-section-phantom]{Quot and Hilbert Spaces} 128 | \item \hyperref[stacks-properties-section-phantom]{Properties of Algebraic Stacks} 129 | \item \hyperref[stacks-morphisms-section-phantom]{Morphisms of Algebraic Stacks} 130 | \item \hyperref[stacks-limits-section-phantom]{Limits of Algebraic Stacks} 131 | \item \hyperref[stacks-cohomology-section-phantom]{Cohomology of Algebraic Stacks} 132 | \item \hyperref[stacks-perfect-section-phantom]{Derived Categories of Stacks} 133 | \item \hyperref[stacks-introduction-section-phantom]{Introducing Algebraic Stacks} 134 | \item \hyperref[stacks-more-morphisms-section-phantom]{More on Morphisms of Stacks} 135 | \item \hyperref[stacks-geometry-section-phantom]{The Geometry of Stacks} 136 | \end{enumerate} 137 | Topics in Moduli Theory 138 | \begin{enumerate} 139 | \setcounter{enumi}{107} 140 | \item \hyperref[moduli-section-phantom]{Moduli Stacks} 141 | \item \hyperref[moduli-curves-section-phantom]{Moduli of Curves} 142 | \end{enumerate} 143 | Miscellany 144 | \begin{enumerate} 145 | \setcounter{enumi}{109} 146 | \item \hyperref[examples-section-phantom]{Examples} 147 | \item \hyperref[exercises-section-phantom]{Exercises} 148 | \item \hyperref[guide-section-phantom]{Guide to Literature} 149 | \item \hyperref[desirables-section-phantom]{Desirables} 150 | \item \hyperref[coding-section-phantom]{Coding Style} 151 | \item \hyperref[obsolete-section-phantom]{Obsolete} 152 | \item \hyperref[fdl-section-phantom]{GNU Free Documentation License} 153 | \item \hyperref[index-section-phantom]{Auto Generated Index} 154 | \end{enumerate} 155 | \end{multicols} 156 | -------------------------------------------------------------------------------- /coding.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | \begin{document} 6 | 7 | \title{Coding Style} 8 | 9 | 10 | \maketitle 11 | 12 | \phantomsection 13 | \label{section-phantom} 14 | 15 | \tableofcontents 16 | 17 | \section{List of style comments} 18 | \label{section-style} 19 | 20 | \noindent 21 | These will be changed over time, but having some here now 22 | will hopefully encourage a consistent LaTeX style. 23 | We will call ``code\footnote{It is all Knuth's fault. See \cite{Knuth}.}'' 24 | the contents of the source files. 25 | 26 | \begin{enumerate} 27 | \item Keep all lines in all tex files to at most 80 characters. 28 | \item Do not use indentation in the tex file. Use syntax highlighting in your 29 | editor, instead of indentation, to visualize environments, etc. 30 | \item Use 31 | \begin{verbatim} 32 | \medskip\noindent 33 | \end{verbatim} 34 | to start a new paragraph, and use 35 | \begin{verbatim} 36 | \noindent 37 | \end{verbatim} 38 | to start a new paragraph just after an environment. 39 | \item Do not break the code for mathematical formulas across 40 | lines if possible. If the complete code complete with enclosing 41 | dollar signs does not fit on the line, then start with the first 42 | dollar sign on the first character of the next line. If it still 43 | does not fit, find a mathematically reasonable spot to break 44 | the code. 45 | \item Displayed math equations should be coded as follows 46 | \begin{verbatim} 47 | $$ 48 | ... 49 | ... 50 | $$ 51 | \end{verbatim} 52 | In other words, start with a double dollar sign on a line by itself 53 | and end similarly. 54 | \item {\it Do not use any macros}. Rationale: This makes it easier 55 | to read the tex file, and start editing an arbitrary part 56 | without having to learn innumerable macros. 57 | And it doesn't make it harder or more timeconsuming to write. 58 | Of course the disadvantage is that the same mathematical object 59 | may be TeXed differently in different places in the text, but 60 | this should be easy to spot. 61 | \item The theorem environments we use are: 62 | ``theorem'', ``proposition'', ``lemma'' (plain), 63 | ``definition'', ``example'', ``exercise'', ``situation'' (definition), 64 | ``remark'', ``remarks'' (remark). Of course there is also 65 | a ``proof'' environment. 66 | \item An environment ``foo'' should be coded as follows 67 | \begin{verbatim} 68 | \begin{foo} 69 | ... 70 | ... 71 | \end{foo} 72 | \end{verbatim} 73 | similarly to the way displayed equations are coded. 74 | \item Instead of a ``corollary'', just use ``lemma'' environment 75 | since likely the result will be used to prove the next bigger 76 | theorem anyway. 77 | \item Directly following each lemma, proposition, or theorem 78 | is the proof of said lemma, proposition, or theorem. No nested 79 | proofs please. 80 | \item The files preamble.tex, chapters.tex and fdl.tex are special 81 | tex files. Apart from these, each tex file 82 | has the following structure 83 | \begin{verbatim} 84 | \input{preamble} 85 | \begin{document} 86 | \title{Title} 87 | \maketitle 88 | \tableofcontents 89 | ... 90 | ... 91 | \input{chapters} 92 | \bibliography{my} 93 | \bibliographystyle{amsalpha} 94 | \end{document} 95 | \end{verbatim} 96 | \item Try to add labels to lemmas, propositions, theorems, and even 97 | remarks, exercise, and other environments. 98 | If labelling a lemma use something like 99 | \begin{verbatim} 100 | \begin{lemma} 101 | \label{lemma-bar} 102 | ... 103 | \end{lemma} 104 | \end{verbatim} 105 | Similarly for all other environments. In other words, the label 106 | of a environment named ``foo'' starts with ``foo-''. In addition to 107 | this please make all labels consist only of lower case letters, 108 | digits, and the symbol ``-''. 109 | \item Never refer to ``the lemma above'' (or proposition, etc). 110 | Instead use: 111 | \begin{verbatim} 112 | Lemma \ref{lemma-bar} above 113 | \end{verbatim} 114 | This means that later 115 | moving lemmas around is basically harmless. 116 | \item Cross-file referencing. To reference a lemma labeled 117 | ``lemma-bar'' in the file foo.tex which has title 118 | ``Foo'', please use the following code 119 | \begin{verbatim} 120 | Foo, Lemma \ref{foo-lemma-bar} 121 | \end{verbatim} 122 | If this does not work, then take a look at the file 123 | preamble.tex to find the correct expression to use. 124 | This will produce the ``Foo, Lemma $<$link$>$'' in the 125 | output file so it will be clear that the link points 126 | out of the file. 127 | \item If at all possible avoid forward references in proof 128 | environments. (It should be possible to write an automated 129 | test for this.) 130 | \item Do not start any sentence with a mathematical symbol. 131 | \item Do not have a sentence of the type ``This follows from 132 | the following'' just before a lemma, proposition, or theorem. 133 | Every sentence ends with a period. 134 | \item State all hypotheses in each lemma, proposition, theorem. 135 | This makes it easier for readers to see if a given 136 | lemma, proposition, or theorem applies to their particular 137 | problem. 138 | \item Keep proofs short; less than 1 page in pdf or dvi. 139 | You can always achieve this by splitting out the proof in lemmas 140 | etc. 141 | \item In a defining property foobar use 142 | \begin{verbatim} 143 | {\it foobar} 144 | \end{verbatim} 145 | in the code inside the definition environment. 146 | Similarly if the definition occurs in the text of the document. 147 | This will make it easier for the reader to see what it is 148 | that is being defined. 149 | \item Put any definition that will be used outside the section 150 | it is in, in its own definition environment. Temporary definitions 151 | may be made in the text. A tricky case is that of mathematical 152 | constructions (which are often definitions involving interrelated 153 | lemmas). Maybe a good solution is to have them in their own 154 | short section so users can refer to the section instead of 155 | a definition. 156 | \item Do not number equations unless they are actually being 157 | referenced somewhere in the text. We can always add labels later. 158 | \item In statements of lemmas, propositions and theorems and 159 | in proofs keep the sentences short. For example, instead of 160 | ``Let $R$ be a ring and let $M$ be an $R$-module.'' write 161 | ``Let $R$ be a ring. Let $M$ be an $R$-module.''. Rationale: 162 | This makes it easier to parse the trickier parts of proofs and 163 | statements. 164 | \item Use the 165 | \begin{verbatim} 166 | \section 167 | \end{verbatim} 168 | command to make sections, but try to avoid using subsections 169 | and subsubsections. 170 | \item Avoid using complicated latex constructions. 171 | \end{enumerate} 172 | 173 | 174 | 175 | 176 | 177 | \input{chapters} 178 | 179 | \bibliography{my} 180 | \bibliographystyle{amsalpha} 181 | 182 | \end{document} 183 | -------------------------------------------------------------------------------- /conventions.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here 4 | % 5 | \begin{document} 6 | 7 | \title{Conventions} 8 | 9 | 10 | \maketitle 11 | 12 | \phantomsection 13 | \label{section-phantom} 14 | 15 | \tableofcontents 16 | 17 | \section{Comments} 18 | \label{section-comments} 19 | 20 | \noindent 21 | The philosophy behind the conventions used in writing these documents is 22 | to choose those conventions that work. 23 | 24 | \section{Set theory} 25 | \label{section-sets} 26 | 27 | \noindent 28 | We use Zermelo-Fraenkel set theory with the axiom of choice. 29 | See \cite{Kunen}. We do not use 30 | universes (different from SGA4). We do not stress set-theoretic issues, 31 | but we make sure everything is correct (of course) and so we do not ignore 32 | them either. 33 | 34 | 35 | \section{Categories} 36 | \label{section-categories} 37 | 38 | \noindent 39 | A category $\mathcal{C}$ consists of a set of objects and, for each pair 40 | of objects, 41 | a set of morphisms between them. In other words, it is what is called 42 | a ``small'' category in other texts. We will use ``big'' categories 43 | (categories whose objects form a proper class) 44 | as well, but only those that are listed in Categories, 45 | Remark \ref{categories-remark-big-categories}. 46 | 47 | \section{Algebra} 48 | \label{section-algebra} 49 | 50 | \noindent 51 | In these notes a ring is a commutative ring with a $1$. Hence the 52 | category of rings has an initial object $\mathbf{Z}$ and a final 53 | object $\{0\}$ (this is the unique ring where $1 = 0$). Modules are 54 | assumed unitary. See \cite{Eisenbud}. 55 | 56 | \section{Notation} 57 | \label{section-notation} 58 | 59 | \noindent 60 | The natural integers are elements of $\mathbf{N} = \{1, 2, 3, \ldots\}$. 61 | The integers are elements of $\mathbf{Z} = \{\ldots, -2, -1, 0, 1, 2, \ldots\}$. 62 | The field of rational numbers is denoted $\mathbf{Q}$. 63 | The field of real numbers is denoted $\mathbf{R}$. 64 | The field of complex numbers is denoted $\mathbf{C}$. 65 | 66 | \input{chapters} 67 | 68 | \bibliography{my} 69 | \bibliographystyle{amsalpha} 70 | 71 | \end{document} 72 | -------------------------------------------------------------------------------- /desirables.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | \begin{document} 6 | 7 | \title{Desirables} 8 | 9 | \maketitle 10 | 11 | \phantomsection 12 | \label{section-phantom} 13 | 14 | 15 | \tableofcontents 16 | 17 | \section{Introduction} 18 | \label{section-introduction} 19 | 20 | \noindent 21 | This is basically just a list of things that we want to put in the stacks 22 | project. As we add material to the Stacks project continuously this is always 23 | somewhat behind the current state of the Stacks project. In fact, it may have 24 | been a mistake to try and list things we should add, because it seems 25 | impossible to keep it up to date. 26 | 27 | \medskip\noindent 28 | Last updated: Thursday, August 31, 2017. 29 | 30 | 31 | \section{Conventions} 32 | \label{section-conventions} 33 | 34 | \noindent 35 | We should have a chapter with a short list of conventions used in the document. 36 | This chapter already exists, see 37 | Conventions, Section \ref{conventions-section-comments}, 38 | but a lot more could be added there. Especially useful would be to find 39 | ``hidden'' conventions and tacit assumptions and put those there. 40 | 41 | 42 | \section{Sites and Topoi} 43 | \label{section-sites} 44 | 45 | \noindent 46 | We have a chapter on sites and sheaves, see 47 | Sites, Section \ref{sites-section-introduction}. 48 | We have a chapter on ringed sites (and topoi) and modules on them, see 49 | Modules on Sites, Section \ref{sites-modules-section-introduction}. 50 | We have a chapter on cohomology in this setting, see 51 | Cohomology on Sites, Section \ref{sites-cohomology-section-introduction}. 52 | But a lot more could be added, especially in the chapter on cohomology. 53 | 54 | 55 | \section{Stacks} 56 | \label{section-stacks} 57 | 58 | \noindent 59 | We have a chapter on (abstract) stacks, see 60 | Stacks, Section \ref{stacks-section-introduction}. 61 | It would be nice if 62 | \begin{enumerate} 63 | \item improve the discussion on ``stackyfication'', 64 | \item give examples of stackyfication, 65 | \item more examples in general, 66 | \item improve the discussion of gerbes. 67 | \end{enumerate} 68 | Example result which has not been added yet: Given a sheaf of abelian 69 | groups $\mathcal{F}$ 70 | over $\mathcal{C}$ the set of equivalence classes of gerbes banded by 71 | $\mathcal{F}$ is bijective to $H^2(\mathcal{C}, \mathcal{F})$. 72 | 73 | 74 | \section{Simplicial methods} 75 | \label{section-simplicial} 76 | 77 | \noindent 78 | We have a chapter on simplicial methods, see 79 | Simplicial, Section \ref{simplicial-section-introduction}. 80 | This has to be reviewed and improved. The discussion of 81 | the relationship between simplicial homotopy (also known as 82 | combinatorial homotopy) and Kan complexes should be improved upon. 83 | There is a chapter on simplicial spaces, see 84 | Simplicial Spaces, Section \ref{spaces-simplicial-section-introduction}. 85 | This chapter briefly discusses 86 | simplicial topological spaces, simplicial sites, and simplicial topoi. 87 | We can further develop ``simplicial algebraic geometry'' to discuss 88 | simplicial schemes (or simplicial algebraic spaces, or 89 | simplicial algebraic stacks) and treat geometric questions, their cohomology, 90 | etc. 91 | 92 | 93 | \section{Cohomology of schemes} 94 | \label{section-schemes-cohomology} 95 | 96 | \noindent 97 | There is already a chapter on cohomology of quasi-coherent sheaves, see 98 | Cohomology of Schemes, Section \ref{coherent-section-introduction}. 99 | We have a chapter discussing the derived category of 100 | quasi-coherent sheaves on a scheme, see 101 | Derived Categories of Schemes, Section \ref{perfect-section-introduction}. 102 | We have a chapter discussing duality for Noetherian schemes 103 | and relative duality for morphisms of schemes, see 104 | Duality for Schemes, Section \ref{duality-section-introduction}. 105 | We also have chapters on \'etale cohomology of schemes and on 106 | crystalline cohomology of schemes. But most of the material in these 107 | chapters is very basic and a lot more could/should be added there. 108 | 109 | 110 | \section{Deformation theory \`a la Schlessinger} 111 | \label{section-deformation-schlessinger} 112 | 113 | \noindent 114 | We have a chapter on this material, see 115 | Formal Deformation Theory, Section \ref{formal-defos-section-introduction}. 116 | We have a chapter discussing examples of the general theory, see 117 | Deformation Problems, Section \ref{examples-defos-section-introduction}. 118 | We have a chapter, see 119 | Deformation Theory, Section \ref{defos-section-introduction} 120 | which discusses deformations of rings (and modules), 121 | deformations of ringed spaces (and sheaves of modules), 122 | deformations of ringed topoi (and sheaves of modules). 123 | In this chapter we use the naive cotangent complex 124 | to describe obstructions, first order deformations, and 125 | infinitesimal automorphisms. This material has found some 126 | applications to algebraicity of moduli stacks in later chapters. 127 | There is also a chapter discussing the full cotangent complex, see 128 | Cotangent, Section \ref{cotangent-section-introduction}. 129 | 130 | 131 | \section{Definition of algebraic stacks} 132 | \label{section-definition-algebraic-stacks} 133 | 134 | \noindent 135 | An algebraic stack is a stack in groupoids over the category of schemes 136 | with the fppf topology that has a diagonal representable by algebraic 137 | spaces and is the target of a surjective smooth morphism from a scheme. 138 | See Algebraic Stacks, Section \ref{algebraic-section-algebraic-stacks}. 139 | A ``Deligne-Mumford stack'' is an algebraic stack for which there exists 140 | a scheme and a surjective \'etale morphism from that scheme to it 141 | as in the paper \cite{DM} of Deligne and Mumford, see 142 | Algebraic Stacks, Definition \ref{algebraic-definition-deligne-mumford}. 143 | We will reserve the term ``Artin stack'' for a stack such as in the papers by 144 | Artin, see \cite{ArtinI}, \cite{ArtinII}, and \cite{ArtinVersal}. 145 | A possible definition is that an Artin stack is an algebraic stack 146 | $\mathcal{X}$ over a locally Noetherian scheme $S$ such that 147 | $\mathcal{X} \to S$ is 148 | locally of finite type\footnote{Namely, these are exactly the algebraic 149 | stacks over $S$ satisfying Artin's axioms [-1], [0], [1], [2], [3], [4], [5] 150 | of Artin's Axioms, Section \ref{artin-section-axioms}.}. 151 | 152 | 153 | \section{Examples of schemes, algebraic spaces, algebraic stacks} 154 | \label{section-examples-stacks} 155 | 156 | \noindent 157 | The Stacks project currently contains two chapters discussing 158 | moduli stacks and their properties, see 159 | Moduli Stacks, Section \ref{moduli-section-introduction} and 160 | Moduli of Curves, Section \ref{moduli-curves-section-introduction}. 161 | Over time we intend to add more, for example: 162 | \begin{enumerate} 163 | \item $\mathcal{A}_g$, 164 | i.e., principally polarized abelian schemes of genus $g$, 165 | \item $\mathcal{A}_1 = \mathcal{M}_{1, 1}$, i.e., 166 | $1$-pointed smooth projective genus $1$ curves, 167 | \item $\mathcal{M}_{g, n}$, i.e., smooth projective genus $g$-curves 168 | with $n$ pairwise distinct labeled points, 169 | \item $\overline{\mathcal{M}}_{g, n}$, i.e., 170 | stable $n$-pointed nodal projective genus $g$-curves, 171 | \item $\SheafHom_S(\mathcal{X}, \mathcal{Y})$, moduli of morphisms 172 | (with suitable conditions on the stacks $\mathcal{X}$, $\mathcal{Y}$ 173 | and the base scheme $S$), 174 | \item $\textit{Bun}_G(X) = \SheafHom_S(X, BG)$, the stack of $G$-bundles 175 | of the geometric Langlands programme (with suitable conditions on the scheme 176 | $X$, the group scheme $G$, and the base scheme $S$), 177 | \item $\Picardstack_{\mathcal{X}/S}$, i.e., the Picard stack associated 178 | to an algebraic stack over a base scheme (or space). 179 | \end{enumerate} 180 | More generally, the Stacks project is somewhat 181 | lacking in geometrically meaningful examples. 182 | 183 | 184 | \section{Properties of algebraic stacks} 185 | \label{section-stacks-properties} 186 | 187 | \noindent 188 | This is perhaps one of the easier projects to work on, as most of the 189 | basic theory is there now. Of course these things are really properties 190 | of morphisms of stacks. We can define singularities (up to smooth factors) 191 | etc. Prove that a connected normal stack is irreducible, etc. 192 | 193 | 194 | \section{Lisse \'etale site of an algebraic stack} 195 | \label{section-lisse-etale} 196 | 197 | \noindent 198 | This has been introduced in 199 | Cohomology of Stacks, Section \ref{stacks-cohomology-section-lisse-etale}. 200 | An example to show that it is not functorial with respect to $1$-morphisms 201 | of algebraic stacks is discussed in 202 | Examples, Section \ref{examples-section-lisse-etale-not-functorial}. 203 | Of course a lot more could be said about this, but it turns out 204 | to be very useful to prove things using the ``big'' \'etale site 205 | as much as possible. 206 | 207 | 208 | 209 | \section{Things you always wanted to know but were afraid to ask} 210 | \label{section-stacks-fun-lemmas} 211 | 212 | \noindent 213 | There are going to be lots of lemmas that you use over and over again 214 | that are useful but aren't really mentioned specifically in the literature, 215 | or it isn't easy to find references for. Bag of tricks. 216 | 217 | \medskip\noindent 218 | Example: Given two groupoids in schemes $R\Rightarrow U$ and 219 | $R' \Rightarrow U'$ what does it mean to have a $1$-morphism 220 | $[U/R] \to [U'/R']$ purely in terms of groupoids in schemes. 221 | 222 | 223 | 224 | \section{Quasi-coherent sheaves on stacks} 225 | \label{section-quasi-coherent} 226 | 227 | \noindent 228 | These are defined and discussed in the chapter 229 | Cohomology of Stacks, Section \ref{stacks-cohomology-section-introduction}. 230 | Derived categories of modules are discussed in the chapter 231 | Derived Categories of Stacks, Section \ref{stacks-perfect-section-introduction}. 232 | A lot more could be added to these chapters. 233 | 234 | 235 | 236 | \section{Flat and smooth} 237 | \label{section-flat-smooth} 238 | 239 | \noindent 240 | Artin's theorem that having a flat surjection from a scheme is a replacement 241 | for the smooth surjective condition. This is now available as 242 | Criteria for Representability, Theorem \ref{criteria-theorem-bootstrap}. 243 | 244 | 245 | \section{Artin's representability theorem} 246 | \label{section-representability} 247 | 248 | \noindent 249 | This is discussed in the chapter 250 | Artin's Axioms, Section \ref{artin-section-introduction}. 251 | We also have an application, see 252 | Quot, Theorem \ref{quot-theorem-coherent-algebraic}. 253 | There should be a lot more applications and the chapter 254 | itself has to be cleaned up as well. 255 | 256 | 257 | \section{DM stacks are finitely covered by schemes} 258 | \label{section-dm-finite-cover} 259 | 260 | \noindent 261 | We already have the corresponding result for algebraic spaces, see 262 | Limits of Spaces, Section \ref{spaces-limits-section-finite-cover}. 263 | What is missing is the result for DM and quasi-DM stacks. 264 | 265 | 266 | \section{Martin Olsson's paper on properness} 267 | \label{section-proper-parametrization} 268 | 269 | \noindent 270 | This proves two notions of proper are the same. The first part of this 271 | is now available in the form of Chow's lemma for algebraic stacks, see 272 | More on Morphisms of Stacks, Theorem 273 | \ref{stacks-more-morphisms-theorem-chow-finite-type}. 274 | As a consequence we show that it suffices to use DVR's 275 | in checking the valuative criterion for properness for 276 | algebraic stacks in certain cases, see 277 | More on Morphisms of Stacks, Section 278 | \ref{stacks-more-morphisms-section-Noetherian-valuative-criterion}. 279 | 280 | 281 | \section{Proper pushforward of coherent sheaves} 282 | \label{section-proper-pushforward} 283 | 284 | \noindent 285 | We can start working on this now that we have Chow's lemma for 286 | algebraic stacks, see previous section. 287 | 288 | 289 | \section{Keel and Mori} 290 | \label{section-keel-mori} 291 | 292 | \noindent 293 | See \cite{K-M}. Their result has been added in 294 | More on Morphisms of Stacks, Section 295 | \ref{stacks-more-morphisms-section-Keel-Mori}. 296 | 297 | 298 | \section{Add more here} 299 | \label{section-add-more} 300 | 301 | \noindent 302 | Actually, no we should never have started this list as part of 303 | the Stacks project itself! There is a todo list somewhere else 304 | which is much easier to update. 305 | 306 | 307 | \input{chapters} 308 | 309 | 310 | \bibliography{my} 311 | \bibliographystyle{amsalpha} 312 | 313 | \end{document} 314 | -------------------------------------------------------------------------------- /documentation/bib-conventions: -------------------------------------------------------------------------------- 1 | Some conventions regarding the bibliography (my.bib): 2 | 3 | * Each key = value pair on one line 4 | 5 | * always use {}, no "" 6 | 7 | * make sure to use -- dashes in pages 8 | 9 | * write fields in caps 10 | 11 | * use the biblatex way of JOURNAL and SHORTJOURNAL 12 | 13 | * use EPRINT and EPRINTTYPE according to biblatex: 14 | this gives the best results, in case you decide to stick to bibtex it's 15 | easy to parse these 16 | 17 | * AUTHOR is specified by the format "Family name, First name(s)", and 18 | whenever a second name is used it's spelt completely 19 | 20 | * I haven't decided yet on an indentation format 21 | 22 | * make the types (the @book etc) consistent. As the fields are in 23 | uppercase already, this should be uppercase too 24 | -------------------------------------------------------------------------------- /documentation/git-howto: -------------------------------------------------------------------------------- 1 | How to use git with the stacks project 2 | -------------------------------------- 3 | 4 | I assume you have cloned the git repository using the command 5 | 6 | git clone git://github.com/stacks/stacks-project.git 7 | 8 | Then you will have a directory called stacks. In the rest of this howto we 9 | assume that you have changed directory into stacks. 10 | 11 | 12 | Warning 13 | ------- 14 | 15 | It is easy to make mistakes using git, so it is a good idea to back up your 16 | changes by simply copying them somewhere safe before trying something tricky. 17 | 18 | 19 | Pulling updates 20 | --------------- 21 | 22 | From time to time type 23 | 24 | git pull 25 | 26 | to automatically pull new updates from github 27 | 28 | 29 | Working on the project (simplest version) 30 | ----------------------------------------- 31 | 32 | Create a new branch that you will use to make changes to the project. 33 | 34 | git branch newbranch 35 | 36 | The reason for doing this is that it is a bit confusing to deal with the 37 | consequences of pulling updates when you have edited the master branch. Switch 38 | to the new branch by using the command 39 | 40 | git checkout newbranch 41 | 42 | Of course you can switch back to the master branch by executing 43 | 44 | git checkout master 45 | 46 | whenever you want. Making sure that you are on newbranch can be done by typing 47 | 48 | git branch 49 | 50 | the branch that has a * next to it is the one you are currently on. Assuming 51 | you are on newbranch, make edits, etc. Whenever you want to add your changes to 52 | newbranch you type 53 | 54 | git commit -a 55 | 56 | It brings up an editor where you can write a short commit message. Keep going 57 | like this until you are happy with the result and want to submit your changes. 58 | To do this, make sure you have committed your latest changes, and the type 59 | 60 | git format-patch -n master..newbranch --stdout > my.patch 61 | 62 | This creates the file my.patch which you can email to stacks.project@gmail.com 63 | for inclusion in the project. 64 | 65 | 66 | Keeping in sync with the main repository at github 67 | -------------------------------------------------- 68 | 69 | If you are worried about keeping in sync with the repository at github you 70 | can do the following steps 71 | 72 | git checkout master 73 | git pull 74 | git checkout newbranch 75 | git rebase master 76 | 77 | The result of these steps is that the master branch is synced with the master 78 | branch at github and that your branch newbranch is rebased on 79 | this synced version of the master branch. Actually the last step may lead to 80 | ``conflicts''. This means that you have edited some lines that have also been 81 | changed in the origin repository (but in a different way). Whenever this 82 | happens you have to ``resolve'' the conflicts. This is done by editing the 83 | affected files A, B,... (you can find them by grepping for <<<< and >>>>), 84 | editing the troublesome spots in A, B,..., marking the file done by 85 | 86 | git add A, 87 | git add B, 88 | ... 89 | 90 | and then continuing with the rebase procedure typing 91 | 92 | git rebase --continue 93 | 94 | until done. Create and email patches using git format-patch as explained above. 95 | (In fact this is the reason for using git rebase instead of git merge.) 96 | 97 | 98 | More information 99 | ---------------- 100 | 101 | There is a lot more you can do with git. For example you can set it up so that 102 | the maintainer of the stacks project can pull changes directly from your own 103 | repository. To learn more see https://git-scm.com and 104 | https://www.kernel.org/pub/software/scm/git/docs/ 105 | 106 | Do assign labels to new theorems, propositions, etc., but don't bother to 107 | assign tags. 108 | -------------------------------------------------------------------------------- /documentation/make-project: -------------------------------------------------------------------------------- 1 | How to make the project 2 | ----------------------- 3 | 4 | These instructions require GNU Make or another Make clone -- your system likely 5 | has one. Because the index is created using a python script, you also need 6 | python. To create the dvi files type 7 | 8 | make dvis 9 | 10 | on the command line inside the directory containing the Makefile. To create the 11 | pdf files similarly type 12 | 13 | make pdfs 14 | 15 | To create the book type 16 | 17 | make book 18 | 19 | which will create both book.dvi and book.pdf. The command 20 | 21 | make all 22 | 23 | will do all of the above at once. After doing this you can copy the dvi/pdf 24 | files to a directory of choice. The command 25 | 26 | make tags 27 | 28 | will compile a version of the project with tagged up lemmas, propositions, and 29 | theorems. The resulting dvis and pdfs will be put in the subdirectory tags/tmp. 30 | The command 31 | 32 | make web 33 | 34 | creates files book.tex, tags, and my.bib in a target directory WEBDIR; these 35 | files are meant to be parsed by plastex. The command will fail if WEBDIR does 36 | not exist. 37 | 38 | Please email if you run into any problems. 39 | -------------------------------------------------------------------------------- /documentation/rules: -------------------------------------------------------------------------------- 1 | Unwritten rules regarding format latex files in the stacks project 2 | ------------------------------------------------------------------ 3 | 4 | Avoid reading this document at all cost! 5 | 6 | 7 | Chapters and titles of chapters 8 | ------------------------------- 9 | 10 | To each chapter there are associated 3 names: the file name, the title of 11 | the chapter, and the short title 12 | 13 | Rules for these: the file name is of the form .tex where is a 14 | string of characters from a...z and - which we think of as a separator. 15 | 16 | Lists of chapters occur in the following files 17 | 18 | Makefile 19 | tags/Makefile 20 | preamble.tex 21 | chapters.tex 22 | scripts/fix_titles_refs.py 23 | scripts/functions.py 24 | 25 | Whenever a chapter is added or renamed each of the above files has to be 26 | edited to reflect the changes. Since this happens quite rarely we do not 27 | worry about the duplication. 28 | 29 | The canonical ordered list of (maintained) file names of chapters is the 30 | variable LIJST in the Makefile. Extra chapters which are added by scripts are 31 | 32 | fdl the license 33 | index auto generated index of definitions 34 | 35 | The titles of the chapters can be found by looking for the \title{} macro 36 | in the tex files. 37 | 38 | The short titles of the chapters can be found in scripts/fix_titles_refs.py 39 | 40 | 41 | Latex labels 42 | ------------ 43 | 44 | A typical latex label is defined in the tex files by a line of the form 45 | 46 | \label{lemma-locally-finite-type-Jacobson} 47 | 48 | in one of the latex files. The actual label (it is sometimes called a 49 | "short label" for reasons that will be explained later) is a string of 50 | characters from a...z or A...Z or 0...9 or - which we think of as a 51 | separator. The first part of the short label is one of 52 | 53 | 'definition', 'lemma', 'proposition', 'theorem', 'remark', 'remarks', 54 | 'example', 'exercise', 'situation', 'equation', 'section', 55 | 'subsection', 'subsubsection', 'item' 56 | 57 | see list_of_standard_labels in scripts/functions.py. The same short label 58 | can be defined in different chapter files. We define the long label 59 | associated to a short label in the chapter .tex to be 60 | 61 | - 62 | 63 | In the example above the short label lemma-locally-finite-type-Jacobson 64 | occurs in the chapter varieties.tex hence its long label is 65 | 66 | varieties-lemma-locally-finite-type-Jacobson 67 | 68 | There is a one to one correspondence between long labels and occurrences 69 | of the latex command '\label{...}' 70 | 71 | 72 | References 73 | ---------- 74 | 75 | To refer to a short label inside the same chapter use 76 | 77 | \ref{} 78 | 79 | To refer to the short label from another chapter use 80 | 81 | \ref{} 82 | 83 | where is the long label associated to . This works thanks to 84 | the setup of crossreferences (using xr-hyper) in the file preamble.tex 85 | However there are some additional rules to follow when doing this. The 86 | easiest way to explain this is by giving some examples. First some examples 87 | using short labels 88 | 89 | Lemma \ref{lemma-integral-closure-ground-field} 90 | Proposition \ref{proposition-units-general} 91 | (\ref{equation-canonical-presentation}) 92 | 93 | The canonical format of an internal reference is 94 | 95 | \ref{} 96 | 97 | except when referring to items or equations. Next some examples using long 98 | labels 99 | 100 | Morphisms, Lemma \ref{morphisms-lemma-finite-type-noetherian} 101 | Properties, Lemma \ref{properties-lemma-Noetherian-topology} 102 | Algebra, Theorem \ref{algebra-theorem-nullstellensatz} 103 | 104 | The canonical format of an external reference is 105 | 106 | , \ref{} 107 | 108 | When referring to multiple lemmas in a row you can use a construction like 109 | 110 | Lemmas \ref{lemma-geometrically-reduced-at-point} and 111 | \ref{lemma-geometrically-reduced} 112 | 113 | Use grep to find more example of this nature. Run scripts/fix_titles_refs.py 114 | to see if the references are formed correctly. 115 | 116 | 117 | References to papers from the literature 118 | ---------------------------------------- 119 | 120 | These are sprinkled throughout the text, but do not occur in the statements 121 | or proofs of lemmas, propositions, and theorems. Instead, in the LaTeX files 122 | we use a special environment 'reference' whose text contains pointer to the 123 | literature for the mathematics occurring in the environment this is placed in. 124 | This can be done for any environment which has a label, in other words, for 125 | 126 | 'lemma', 'proposition', 'theorem', 'remark', 'remarks', 'example', 127 | 'exercise', 'situation', 'equation', 'definition' 128 | 129 | This should be coded either like this 130 | 131 | \begin{lemma} 132 | \label{lemma-ABC} 133 | \begin{reference} 134 | \cite[page 13]{DEF} 135 | \end{reference} 136 | .... 137 | \end{lemma} 138 | 139 | or in case there are multiple references for a single result or some 140 | explanation is warranted, like this 141 | 142 | \begin{lemma} 143 | \label{lemma-ABC} 144 | \begin{reference} 145 | The first half of this lemma can be found in \cite[page 13]{DEF} and the 146 | second half in \cite[III, Lemma 14.2.3]{EGA}. 147 | \end{reference} 148 | .... 149 | \end{lemma} 150 | 151 | 152 | 153 | Latex style 154 | ----------- 155 | 156 | Obviously you can argue about this forever. Some of these rules have to do with 157 | readability of the latex files and some have to do with the overall setup of the 158 | project as well as the tags system (which is discussed elsewhere). 159 | 160 | * Every line has at most 80 characters 161 | 162 | * The following are on a line by themselves 163 | \begin{...} 164 | \end{...} 165 | \label{...} 166 | \title{...} 167 | $$ 168 | 169 | * The following are flush left 170 | \item 171 | \xymatrix 172 | \medskip 173 | \section 174 | \subsection 175 | \subsubsection 176 | \phantomsection 177 | 178 | * Every environment of the type 179 | 'lemma', 'proposition', 'theorem', 'remark', 'remarks', 180 | 'example', 'exercise', 'situation', 'equation', 'definition' 181 | is labeled. In fact every such environment starts with the following 182 | two lines 183 | \begin{} 184 | \label{} 185 | 186 | * There are no nested environments, except the 'equation' and 'reference' 187 | environments are allowed inside other environments. 188 | 189 | * Every environment of the type 190 | 'lemma', 'proposition', 'theorem' 191 | has a proof. 192 | 193 | * Every 'section', 'subsection', 'subsubsection', 'phantomsection' has a 194 | label which is defined on the next line. 195 | 196 | * If an item has a label it is defined on the line following the \item macro. 197 | 198 | * Every definition defines something. The terms being defined are found 199 | by looking for the patterns {\it ...} 200 | 201 | * Proofs do not refer to results later in the stacks project. They also do not 202 | refer to the result itself. 203 | 204 | * We do not use the long label to refer to something inside the same chapter. 205 | 206 | * Every chapter starts with 207 | 208 | \input{preamble} 209 | \begin{document} 210 | \title{...} 211 | \maketitle 212 | \phantomsection 213 | \label{section-phantom} 214 | \tableofcontents 215 | 216 | * Every chapter ends with 217 | 218 | \input{chapters} 219 | \bibliography{my} 220 | \bibliographystyle{amsalpha} 221 | \end{document} 222 | 223 | * Every chapter has at least one citation. 224 | 225 | * No footnotes in math mode 226 | -------------------------------------------------------------------------------- /documentation/submitting-patches: -------------------------------------------------------------------------------- 1 | How to get your changes into the project 2 | ---------------------------------------- 3 | 4 | (1) Easiest and quickest way: Simply edit any of the LaTeX files and email the 5 | new version. 6 | 7 | (2) It is sometimes convenient to send only the difference between the new 8 | version and the old one. Please use "diff -u" in this case to produce the 9 | patch. It will help if you follow the suggestions below, or do something with 10 | equivalent endproduct. To create a patch for a single file, say stacks.tex, 11 | you can do the following. First download stacks.tex. Make a copy: 12 | 13 | cp stacks.tex stacks.tex.orig 14 | 15 | and then edit stacks.tex as you like. (Or, if you've already edited the file, 16 | you download and save the version from the web directly as stacks.tex.orig.) To 17 | make the patch use 18 | 19 | diff -u stacks.tex.orig stacks.tex > stacks.tex.patch 20 | 21 | Email the patchfile. Please include PATCH in the subject line. 22 | 23 | (3) Nontrivial method: Create a patch for the whole project, 24 | especially useful if you are editing multiple files. To do this you can use the 25 | following steps. 26 | (3a) Install git, see https://git-scm.com 27 | (3b) Clone the project. Type 28 | git clone git://github.com/stacks/stacks-project.git 29 | (3c) Change into the stacks directory. Run make, edit files, etc. 30 | (3d) Produce patch by running 31 | git diff > patchfile.patch 32 | (3e) Email the patchfile. 33 | This works as long as you do not use any git commands in step (3c). 34 | 35 | (4) Technologically advanced method: If you want to use more of the features 36 | of git, see the file git-howto. 37 | -------------------------------------------------------------------------------- /documentation/support: -------------------------------------------------------------------------------- 1 | Thanks to Columbia University and its mathematics department for hosting the Stacks project on its server. 2 | 3 | 4 | Aise Johan de Jong is a faculty member of Columbia University. 5 | 6 | 7 | This material is based upon work supported by the National Science Foundation under Grant Numbers 1601160, 1303247, 0970108, 0600425, and 0554442. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. 8 | 9 | 10 | Aise Johan de Jong was supported by a grant from the Simons Foundation (230625 to de Jong). 11 | 12 | 13 | Pieter Belmans visit to Columbia University was supported by the aforementioned Simons Foundation grant. 14 | -------------------------------------------------------------------------------- /documentation/todo-list: -------------------------------------------------------------------------------- 1 | We need somebody to add a bit more to the section on the snake lemma in 2 | algebra.tex. There should be a bit more about kernels, cokernels, pushouts, 3 | and fibre products of modules and abelian groups. As well we need a tiny bit 4 | about exact functors between module categories, or more generally some 5 | categories whose objects are abelian groups with a bit of extra structure 6 | (but do not formalize this notion because that is just awful). And then 7 | point out that the notions agree with those in categories.tex via the 8 | material in homology.tex (without proof, because it comes later). 9 | 10 | 11 | Add more material on algebraic stacks. 12 | 13 | 14 | Algebraic Spaces: It might be useful to list all the properties $P$ such 15 | that: $f$ has $P \Rightarrow \Delta_f$ has $P$. Then if $f$ is stable under 16 | base change, then $g \circ f$ and $g$ have $P \Rightarrow f$ has $P$. 17 | Notable exceptions are quasi-compact and finite 18 | type and this explains the relevance of qcqs and finite presentation. 19 | 20 | 21 | For non-representable morphisms (of Artin stacks), one can define 22 | "unramified $=$ $R$-unramified" as "locally of finite type and diagonal 23 | etale" or as "locally of finite type and formally unramified" and "etale" 24 | as "locally of finite presentation, flat, and unramified". This looks like 25 | a circular definition but in each step we take the diagonal. 26 | 27 | 28 | For stacks there is also a notion of "formally Deligne-Mumford". One gets 29 | the very pleasing list: 30 | 31 | * DM $=$ formally DM 32 | * R-unramified $=$ formally unramified + loc. of finite type 33 | * etale $=$ formally etale + loc. of finite presentation 34 | 35 | Here, the increasing finiteness hypothesis can be explained by the fact 36 | the diagonal of anything is locally of finite type and the diagonal of 37 | locally of finite type is locally of finite presentation. Also 38 | 39 | * DM $\Leftrightarrow$ diagonal unramified 40 | * unramified $\Rightarrow$ diagonal etale. 41 | 42 | 43 | Define quasi-finite morphisms of algebraic stacks. 44 | 45 | 46 | Limits of Schemes: Absolute Noetherian approximation. Add a second proof 47 | following Temkin's proof in [Relative RZ-spaces, section 1.1]. Look also 48 | at David Rydh's paper [Noetherian approximation of algebraic spaces and 49 | stacks]. In fact, using this method one gets a short proof of a more 50 | general approximation result: $X$, $S$ qc and qs schemes, then $X \to S$ 51 | can be approximated as affine and finite presentation and if $X \to S$ is 52 | of finite type then we can do closed immersion and finite presentation. 53 | The main point here will be to excise push-outs from the proof. 54 | 55 | 56 | Introduce the notion: "pseudo-noetherian" (suggested by Brian Conrad) as 57 | a scheme/stack $X$ which is quasi-compact, quasi-separated and has the 58 | property that any quasi-coherent sheaf is the direct limit of finitely 59 | presented sheaves. David Rydh suggests: require that this holds on $X'$ 60 | for any finitely presented $X' \to X$ as this turns out to be quite useful. 61 | Examples of pseudo-noetherian stacks are noetherian stacks, qcqs algebraic 62 | spaces and qcqs stacks with quasi-finite diagonal. 63 | 64 | 65 | Add the equivalence (for morphisms of algebraic spaces): 66 | 67 | * radicial + loc. separated $\Leftrightarrow$ diagonal nil-immersion 68 | 69 | Not known whether there exist radicial non-quasi-separated morphisms 70 | (necessarily not locally separated). 71 | 72 | 73 | Also, for a stack (with algebraic points) one would have to interpret 74 | ``radicial'' as "there is exactly one point in every fiber and the residue 75 | field extension is inseparable". The definition of universally injective as 76 | $X(K) \to S(K)$ injective is not good for stacks (perhaps ok if we restrict 77 | to $K$ algebraically closed) unless we pass to the associated sheaf. Again 78 | we have: 79 | 80 | * universally injective $\Leftrightarrow$ diagonal surjective 81 | 82 | 83 | Write a chapter on push-outs in the stacks project. This may have been 84 | one of the essential parts of the first conception of EGA V (later moved to 85 | Chapter VI). The algebra/scheme part is worked out in detail by Ferrand 86 | "Conducteur, Descente et Pincement" and it generalizes to algebraic spaces 87 | (the correct level of generality). 88 | 89 | 90 | Rewrite parts of the chapter on Chow homology and Chern classes in order 91 | to have intersections with supports where relevant. There should be 92 | ``explicit'' supports and not just of the order of saying that the product 93 | $D \cdot \alpha$ is supported in $Supp(D) \cap Supp(\alpha)$. 94 | 95 | 96 | Chapter on Etale cohomology: 97 | 98 | * Do a bit more on Galois cohomology to prove that vanishing of Brauer 99 | groups of all finite extensions implies cohomological dimension < 2 100 | * Picard groups of curves: show that the n-torsion in the Picard group 101 | of a smooth projective curve over an algebraically closed field is 102 | isomorphic to (Z/nZ)^{2g}. Currently the proof uses unproven material 103 | about Jacobians and Abelian varieties. 104 | * For the section "The trace formula" onwards the material has not yet been 105 | integrated with the rest of the Stacks project 106 | 107 | 108 | Write sections on Brauer groups: for each case of algebra, schemes, 109 | spaces, stacks. We already have a bit of theory for Brauer groups of fields. 110 | 111 | 112 | Start a chapter on noncommutative algebra. We already have a tiny bit in the 113 | chapter on differential graded algebra. 114 | 115 | 116 | Keel and Mori (some of it is already there). Etc, etc. See also the 117 | chapter Desirables. 118 | 119 | 120 | Put the following (suggested by David Rydh) in the stacks project: 121 | Using ZMT, one proves the fact that if $f : X \to Y$ is quasi-finite and 122 | separated then the subset $U$ of $y$'s such that $f$ restricted to 123 | $Spec(\mathcal{O}_{Y, y})$ is finite is open. This is almost a one-liner: 124 | The question is local so we can assume that $Y$ is affine. Take a ZMT 125 | factorization $X \to W \to Y$. Then $U = Y \ (image of W \ X)$. 126 | Indeed, the closure of a subset commutes with flat base change. In the same 127 | spirit, one easily shows (without ZMT) that if $f : X \to Y$ is 128 | quasi-affine then the subset of $y$'s such that $f$ restricted to 129 | $Spec(\mathcal{O}_{Y,y})$ is affine is open. 130 | 131 | 132 | (Not completely sure this is correct. Haven't worked out all the details.) 133 | Show that if $G$ is a flat group scheme over an Artinian local ring $A$, 134 | and $G$ acts on the scheme $X$ over $A$ such that 135 | 136 | 1. the special fibre $X_0$ is a torsor under $G_0$, and 137 | 2. $A \subset \Gamma(X, O_X)$ 138 | 139 | then $X$ is a $G$-torsor over $S$. Generalize to $A$ just local with 140 | (locally?) nilpotent maximal ideal. 141 | 142 | 143 | Show that if $(U, R, s, t, c)$ is a groupoid scheme with $U = Spec(k)$ 144 | and $s$, $t$ finite type, then $(U, R, s, t, c)$ is defined over a field 145 | $k_0$ which is a subfield of $k$ of finite index. 146 | 147 | 148 | Redo the sections on syntomic ring maps using the material on Koszul 149 | sequences in rings. 150 | 151 | 152 | Improve the chapter "Simplicial Methods" in the following way: 153 | 154 | 1. Distinguish more clearly between general material, material on 155 | (co)simplicial sets, and material on (co)simplicial objects in abelian 156 | categories. Maybe rearrange things so general material comes first? 157 | 2. Introduce the functor from semi-simplicial objects in an 158 | abelian category to simplicial objects in the same. 159 | 3. Prove the Dold-Kan correspondence directly using 2. 160 | 4. Introduce Eilenberg-Maclane objects, etc and explain the 161 | significance of these in view of Dold-Kan. 162 | 5. Say something about derived functors of non-additive functors? 163 | 164 | 165 | Split the chapter "Cohomology of Algebraic Stacks" into two: 166 | 167 | 1. A chapter discussing cohomology of a single O_X-module (analogous to the 168 | chapters "Cohomology of Schemes" and "Cohomology of Spaces", and 169 | 2. A chapter on derived categories of algebraic stacks. 170 | 171 | When making the split make sure that the proof of QCoh forms a weak Serre 172 | subcategory of Mod(O_{lisse-etale}) goes into the first chapter and gets a 173 | proof which avoids using the functor Lg_! 174 | 175 | 176 | Extend the definition of "numerical polynomial" (Tag 00JX) to multivariate 177 | numerical polynomials. In Kleiman's "Toward a numerical theory of ampleness" 178 | Chapter I, Section 1, the definition of "numerical polynomial" is given, and 179 | an equivalent characterization is given without proof in 180 | Chapter I, Section 2, Lemma 1. 181 | 182 | 183 | Upgrade the chapter on intersection theory to work over arbitrary fields. 184 | -------------------------------------------------------------------------------- /fdl.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | \begin{document} 6 | %--------------------------------------------------------------------- 7 | %\tableofcontents 8 | 9 | \title{GNU Free Documentation License} 10 | \maketitle 11 | 12 | \phantomsection 13 | \label{section-phantom} 14 | 15 | \begin{center} 16 | 17 | Version 1.2, November 2002 18 | 19 | 20 | Copyright \copyright 2000, 2001, 2002 Free Software Foundation, Inc. 21 | 22 | \bigskip 23 | 24 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 25 | 26 | \bigskip 27 | 28 | Everyone is permitted to copy and distribute verbatim copies 29 | of this license document, but changing it is not allowed. 30 | \end{center} 31 | 32 | 33 | \begin{center} 34 | {\bf\large Preamble} 35 | \end{center} 36 | 37 | The purpose of this License is to make a manual, textbook, or other 38 | functional and useful document "free" in the sense of freedom: to 39 | assure everyone the effective freedom to copy and redistribute it, 40 | with or without modifying it, either commercially or noncommercially. 41 | Secondarily, this License preserves for the author and publisher a way 42 | to get credit for their work, while not being considered responsible 43 | for modifications made by others. 44 | 45 | This License is a kind of "copyleft", which means that derivative 46 | works of the document must themselves be free in the same sense. It 47 | complements the GNU General Public License, which is a copyleft 48 | license designed for free software. 49 | 50 | We have designed this License in order to use it for manuals for free 51 | software, because free software needs free documentation: a free 52 | program should come with manuals providing the same freedoms that the 53 | software does. But this License is not limited to software manuals; 54 | it can be used for any textual work, regardless of subject matter or 55 | whether it is published as a printed book. We recommend this License 56 | principally for works whose purpose is instruction or reference. 57 | 58 | 59 | \section{APPLICABILITY AND DEFINITIONS} 60 | \label{section-applicability-and-definitions} 61 | 62 | This License applies to any manual or other work, in any medium, that 63 | contains a notice placed by the copyright holder saying it can be 64 | distributed under the terms of this License. Such a notice grants a 65 | world-wide, royalty-free license, unlimited in duration, to use that 66 | work under the conditions stated herein. The \textbf{"Document"}, below, 67 | refers to any such manual or work. Any member of the public is a 68 | licensee, and is addressed as \textbf{"you"}. You accept the license if you 69 | copy, modify or distribute the work in a way requiring permission 70 | under copyright law. 71 | 72 | A \textbf{"Modified Version"} of the Document means any work containing the 73 | Document or a portion of it, either copied verbatim, or with 74 | modifications and/or translated into another language. 75 | 76 | A \textbf{"Secondary Section"} is a named appendix or a front-matter section of 77 | the Document that deals exclusively with the relationship of the 78 | publishers or authors of the Document to the Document's overall subject 79 | (or to related matters) and contains nothing that could fall directly 80 | within that overall subject. (Thus, if the Document is in part a 81 | textbook of mathematics, a Secondary Section may not explain any 82 | mathematics.) The relationship could be a matter of historical 83 | connection with the subject or with related matters, or of legal, 84 | commercial, philosophical, ethical or political position regarding 85 | them. 86 | 87 | The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles 88 | are designated, as being those of Invariant Sections, in the notice 89 | that says that the Document is released under this License. If a 90 | section does not fit the above definition of Secondary then it is not 91 | allowed to be designated as Invariant. The Document may contain zero 92 | Invariant Sections. If the Document does not identify any Invariant 93 | Sections then there are none. 94 | 95 | The \textbf{"Cover Texts"} are certain short passages of text that are listed, 96 | as Front-Cover Texts or Back-Cover Texts, in the notice that says that 97 | the Document is released under this License. A Front-Cover Text may 98 | be at most 5 words, and a Back-Cover Text may be at most 25 words. 99 | 100 | A \textbf{"Transparent"} copy of the Document means a machine-readable copy, 101 | represented in a format whose specification is available to the 102 | general public, that is suitable for revising the document 103 | straightforwardly with generic text editors or (for images composed of 104 | pixels) generic paint programs or (for drawings) some widely available 105 | drawing editor, and that is suitable for input to text formatters or 106 | for automatic translation to a variety of formats suitable for input 107 | to text formatters. A copy made in an otherwise Transparent file 108 | format whose markup, or absence of markup, has been arranged to thwart 109 | or discourage subsequent modification by readers is not Transparent. 110 | An image format is not Transparent if used for any substantial amount 111 | of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. 112 | 113 | Examples of suitable formats for Transparent copies include plain 114 | ASCII without markup, Texinfo input format, LaTeX input format, SGML 115 | or XML using a publicly available DTD, and standard-conforming simple 116 | HTML, PostScript or PDF designed for human modification. Examples of 117 | transparent image formats include PNG, XCF and JPG. Opaque formats 118 | include proprietary formats that can be read and edited only by 119 | proprietary word processors, SGML or XML for which the DTD and/or 120 | processing tools are not generally available, and the 121 | machine-generated HTML, PostScript or PDF produced by some word 122 | processors for output purposes only. 123 | 124 | The \textbf{"Title Page"} means, for a printed book, the title page itself, 125 | plus such following pages as are needed to hold, legibly, the material 126 | this License requires to appear in the title page. For works in 127 | formats which do not have any title page as such, "Title Page" means 128 | the text near the most prominent appearance of the work's title, 129 | preceding the beginning of the body of the text. 130 | 131 | A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose 132 | title either is precisely XYZ or contains XYZ in parentheses following 133 | text that translates XYZ in another language. (Here XYZ stands for a 134 | specific section name mentioned below, such as \textbf{"Acknowledgements"}, 135 | \textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) 136 | To \textbf{"Preserve the Title"} 137 | of such a section when you modify the Document means that it remains a 138 | section "Entitled XYZ" according to this definition. 139 | 140 | The Document may include Warranty Disclaimers next to the notice which 141 | states that this License applies to the Document. These Warranty 142 | Disclaimers are considered to be included by reference in this 143 | License, but only as regards disclaiming warranties: any other 144 | implication that these Warranty Disclaimers may have is void and has 145 | no effect on the meaning of this License. 146 | 147 | 148 | \section{VERBATIM COPYING} 149 | \label{section-verbatim-copying} 150 | 151 | You may copy and distribute the Document in any medium, either 152 | commercially or noncommercially, provided that this License, the 153 | copyright notices, and the license notice saying this License applies 154 | to the Document are reproduced in all copies, and that you add no other 155 | conditions whatsoever to those of this License. You may not use 156 | technical measures to obstruct or control the reading or further 157 | copying of the copies you make or distribute. However, you may accept 158 | compensation in exchange for copies. If you distribute a large enough 159 | number of copies you must also follow the conditions in section 3. 160 | 161 | You may also lend copies, under the same conditions stated above, and 162 | you may publicly display copies. 163 | 164 | 165 | \section{COPYING IN QUANTITY} 166 | \label{section-copying-in-quantity} 167 | 168 | 169 | If you publish printed copies (or copies in media that commonly have 170 | printed covers) of the Document, numbering more than 100, and the 171 | Document's license notice requires Cover Texts, you must enclose the 172 | copies in covers that carry, clearly and legibly, all these Cover 173 | Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on 174 | the back cover. Both covers must also clearly and legibly identify 175 | you as the publisher of these copies. The front cover must present 176 | the full title with all words of the title equally prominent and 177 | visible. You may add other material on the covers in addition. 178 | Copying with changes limited to the covers, as long as they preserve 179 | the title of the Document and satisfy these conditions, can be treated 180 | as verbatim copying in other respects. 181 | 182 | If the required texts for either cover are too voluminous to fit 183 | legibly, you should put the first ones listed (as many as fit 184 | reasonably) on the actual cover, and continue the rest onto adjacent 185 | pages. 186 | 187 | If you publish or distribute Opaque copies of the Document numbering 188 | more than 100, you must either include a machine-readable Transparent 189 | copy along with each Opaque copy, or state in or with each Opaque copy 190 | a computer-network location from which the general network-using 191 | public has access to download using public-standard network protocols 192 | a complete Transparent copy of the Document, free of added material. 193 | If you use the latter option, you must take reasonably prudent steps, 194 | when you begin distribution of Opaque copies in quantity, to ensure 195 | that this Transparent copy will remain thus accessible at the stated 196 | location until at least one year after the last time you distribute an 197 | Opaque copy (directly or through your agents or retailers) of that 198 | edition to the public. 199 | 200 | It is requested, but not required, that you contact the authors of the 201 | Document well before redistributing any large number of copies, to give 202 | them a chance to provide you with an updated version of the Document. 203 | 204 | 205 | \section{MODIFICATIONS} 206 | \label{section-modifications} 207 | 208 | You may copy and distribute a Modified Version of the Document under 209 | the conditions of sections 2 and 3 above, provided that you release 210 | the Modified Version under precisely this License, with the Modified 211 | Version filling the role of the Document, thus licensing distribution 212 | and modification of the Modified Version to whoever possesses a copy 213 | of it. In addition, you must do these things in the Modified Version: 214 | 215 | \begin{itemize} 216 | \item[A.] 217 | Use in the Title Page (and on the covers, if any) a title distinct 218 | from that of the Document, and from those of previous versions 219 | (which should, if there were any, be listed in the History section 220 | of the Document). You may use the same title as a previous version 221 | if the original publisher of that version gives permission. 222 | 223 | \item[B.] 224 | List on the Title Page, as authors, one or more persons or entities 225 | responsible for authorship of the modifications in the Modified 226 | Version, together with at least five of the principal authors of the 227 | Document (all of its principal authors, if it has fewer than five), 228 | unless they release you from this requirement. 229 | 230 | \item[C.] 231 | State on the Title page the name of the publisher of the 232 | Modified Version, as the publisher. 233 | 234 | \item[D.] 235 | Preserve all the copyright notices of the Document. 236 | 237 | \item[E.] 238 | Add an appropriate copyright notice for your modifications 239 | adjacent to the other copyright notices. 240 | 241 | \item[F.] 242 | Include, immediately after the copyright notices, a license notice 243 | giving the public permission to use the Modified Version under the 244 | terms of this License, in the form shown in the Addendum below. 245 | 246 | \item[G.] 247 | Preserve in that license notice the full lists of Invariant Sections 248 | and required Cover Texts given in the Document's license notice. 249 | 250 | \item[H.] 251 | Include an unaltered copy of this License. 252 | 253 | \item[I.] 254 | Preserve the section Entitled "History", Preserve its Title, and add 255 | to it an item stating at least the title, year, new authors, and 256 | publisher of the Modified Version as given on the Title Page. If 257 | there is no section Entitled "History" in the Document, create one 258 | stating the title, year, authors, and publisher of the Document as 259 | given on its Title Page, then add an item describing the Modified 260 | Version as stated in the previous sentence. 261 | 262 | \item[J.] 263 | Preserve the network location, if any, given in the Document for 264 | public access to a Transparent copy of the Document, and likewise 265 | the network locations given in the Document for previous versions 266 | it was based on. These may be placed in the "History" section. 267 | You may omit a network location for a work that was published at 268 | least four years before the Document itself, or if the original 269 | publisher of the version it refers to gives permission. 270 | 271 | \item[K.] 272 | For any section Entitled "Acknowledgements" or "Dedications", 273 | Preserve the Title of the section, and preserve in the section all 274 | the substance and tone of each of the contributor acknowledgements 275 | and/or dedications given therein. 276 | 277 | \item[L.] 278 | Preserve all the Invariant Sections of the Document, 279 | unaltered in their text and in their titles. Section numbers 280 | or the equivalent are not considered part of the section titles. 281 | 282 | \item[M.] 283 | Delete any section Entitled "Endorsements". Such a section 284 | may not be included in the Modified Version. 285 | 286 | \item[N.] 287 | Do not retitle any existing section to be Entitled "Endorsements" 288 | or to conflict in title with any Invariant Section. 289 | 290 | \item[O.] 291 | Preserve any Warranty Disclaimers. 292 | \end{itemize} 293 | 294 | If the Modified Version includes new front-matter sections or 295 | appendices that qualify as Secondary Sections and contain no material 296 | copied from the Document, you may at your option designate some or all 297 | of these sections as invariant. To do this, add their titles to the 298 | list of Invariant Sections in the Modified Version's license notice. 299 | These titles must be distinct from any other section titles. 300 | 301 | You may add a section Entitled "Endorsements", provided it contains 302 | nothing but endorsements of your Modified Version by various 303 | parties--for example, statements of peer review or that the text has 304 | been approved by an organization as the authoritative definition of a 305 | standard. 306 | 307 | You may add a passage of up to five words as a Front-Cover Text, and a 308 | passage of up to 25 words as a Back-Cover Text, to the end of the list 309 | of Cover Texts in the Modified Version. Only one passage of 310 | Front-Cover Text and one of Back-Cover Text may be added by (or 311 | through arrangements made by) any one entity. If the Document already 312 | includes a cover text for the same cover, previously added by you or 313 | by arrangement made by the same entity you are acting on behalf of, 314 | you may not add another; but you may replace the old one, on explicit 315 | permission from the previous publisher that added the old one. 316 | 317 | The author(s) and publisher(s) of the Document do not by this License 318 | give permission to use their names for publicity for or to assert or 319 | imply endorsement of any Modified Version. 320 | 321 | 322 | \section{COMBINING DOCUMENTS} 323 | \label{section-combining-documents} 324 | 325 | 326 | You may combine the Document with other documents released under this 327 | License, under the terms defined in section 4 above for modified 328 | versions, provided that you include in the combination all of the 329 | Invariant Sections of all of the original documents, unmodified, and 330 | list them all as Invariant Sections of your combined work in its 331 | license notice, and that you preserve all their Warranty Disclaimers. 332 | 333 | The combined work need only contain one copy of this License, and 334 | multiple identical Invariant Sections may be replaced with a single 335 | copy. If there are multiple Invariant Sections with the same name but 336 | different contents, make the title of each such section unique by 337 | adding at the end of it, in parentheses, the name of the original 338 | author or publisher of that section if known, or else a unique number. 339 | Make the same adjustment to the section titles in the list of 340 | Invariant Sections in the license notice of the combined work. 341 | 342 | In the combination, you must combine any sections Entitled "History" 343 | in the various original documents, forming one section Entitled 344 | "History"; likewise combine any sections Entitled "Acknowledgements", 345 | and any sections Entitled "Dedications". You must delete all sections 346 | Entitled "Endorsements". 347 | 348 | \section{COLLECTIONS OF DOCUMENTS} 349 | \label{section-collections-of-documents} 350 | 351 | You may make a collection consisting of the Document and other documents 352 | released under this License, and replace the individual copies of this 353 | License in the various documents with a single copy that is included in 354 | the collection, provided that you follow the rules of this License for 355 | verbatim copying of each of the documents in all other respects. 356 | 357 | You may extract a single document from such a collection, and distribute 358 | it individually under this License, provided you insert a copy of this 359 | License into the extracted document, and follow this License in all 360 | other respects regarding verbatim copying of that document. 361 | 362 | 363 | \section{AGGREGATION WITH INDEPENDENT WORKS} 364 | \label{section-aggregation-with-independent-works} 365 | 366 | 367 | A compilation of the Document or its derivatives with other separate 368 | and independent documents or works, in or on a volume of a storage or 369 | distribution medium, is called an "aggregate" if the copyright 370 | resulting from the compilation is not used to limit the legal rights 371 | of the compilation's users beyond what the individual works permit. 372 | When the Document is included in an aggregate, this License does not 373 | apply to the other works in the aggregate which are not themselves 374 | derivative works of the Document. 375 | 376 | If the Cover Text requirement of section 3 is applicable to these 377 | copies of the Document, then if the Document is less than one half of 378 | the entire aggregate, the Document's Cover Texts may be placed on 379 | covers that bracket the Document within the aggregate, or the 380 | electronic equivalent of covers if the Document is in electronic form. 381 | Otherwise they must appear on printed covers that bracket the whole 382 | aggregate. 383 | 384 | 385 | \section{TRANSLATION} 386 | \label{section-translation} 387 | 388 | 389 | Translation is considered a kind of modification, so you may 390 | distribute translations of the Document under the terms of section 4. 391 | Replacing Invariant Sections with translations requires special 392 | permission from their copyright holders, but you may include 393 | translations of some or all Invariant Sections in addition to the 394 | original versions of these Invariant Sections. You may include a 395 | translation of this License, and all the license notices in the 396 | Document, and any Warranty Disclaimers, provided that you also include 397 | the original English version of this License and the original versions 398 | of those notices and disclaimers. In case of a disagreement between 399 | the translation and the original version of this License or a notice 400 | or disclaimer, the original version will prevail. 401 | 402 | If a section in the Document is Entitled "Acknowledgements", 403 | "Dedications", or "History", the requirement (section 4) to Preserve 404 | its Title (section 1) will typically require changing the actual 405 | title. 406 | 407 | 408 | \section{TERMINATION} 409 | \label{section-termination} 410 | 411 | 412 | You may not copy, modify, sublicense, or distribute the Document except 413 | as expressly provided for under this License. Any other attempt to 414 | copy, modify, sublicense or distribute the Document is void, and will 415 | automatically terminate your rights under this License. However, 416 | parties who have received copies, or rights, from you under this 417 | License will not have their licenses terminated so long as such 418 | parties remain in full compliance. 419 | 420 | 421 | \section{FUTURE REVISIONS OF THIS LICENSE} 422 | \label{section-future-revisions-of-this-license} 423 | 424 | 425 | The Free Software Foundation may publish new, revised versions 426 | of the GNU Free Documentation License from time to time. Such new 427 | versions will be similar in spirit to the present version, but may 428 | differ in detail to address new problems or concerns. See 429 | https://www.gnu.org/copyleft/. 430 | 431 | Each version of the License is given a distinguishing version number. 432 | If the Document specifies that a particular numbered version of this 433 | License "or any later version" applies to it, you have the option of 434 | following the terms and conditions either of that specified version or 435 | of any later version that has been published (not as a draft) by the 436 | Free Software Foundation. If the Document does not specify a version 437 | number of this License, you may choose any version ever published (not 438 | as a draft) by the Free Software Foundation. 439 | 440 | 441 | \section{ADDENDUM: How to use this License for your documents} 442 | \label{section-addendum-how-to-use-this-license-for-your-documents} 443 | 444 | To use this License in a document you have written, include a copy of 445 | the License in the document and put the following copyright and 446 | license notices just after the title page: 447 | 448 | \bigskip 449 | \begin{quote} 450 | Copyright \copyright YEAR YOUR NAME. 451 | Permission is granted to copy, distribute and/or modify this document 452 | under the terms of the GNU Free Documentation License, Version 1.2 453 | or any later version published by the Free Software Foundation; 454 | with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 455 | A copy of the license is included in the section entitled "GNU 456 | Free Documentation License". 457 | \end{quote} 458 | \bigskip 459 | 460 | If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, 461 | replace the "with...Texts." line with this: 462 | 463 | \bigskip 464 | \begin{quote} 465 | with the Invariant Sections being LIST THEIR TITLES, with the 466 | Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. 467 | \end{quote} 468 | \bigskip 469 | 470 | If you have Invariant Sections without Cover Texts, or some other 471 | combination of the three, merge those two alternatives to suit the 472 | situation. 473 | 474 | If your document contains nontrivial examples of program code, we 475 | recommend releasing these examples in parallel under your choice of 476 | free software license, such as the GNU General Public License, 477 | to permit their use in free software. 478 | 479 | %--------------------------------------------------------------------- 480 | \input{chapters} 481 | \end{document} 482 | -------------------------------------------------------------------------------- /hyperref.cfg: -------------------------------------------------------------------------------- 1 | \ProvidesFile{hyperref.cfg}% 2 | % Change default driver to "hypertex" 3 | \providecommand*{\Hy@defaultdriver}{hypertex}% 4 | \endinput 5 | -------------------------------------------------------------------------------- /introduction.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | \begin{document} 6 | 7 | \title{Introduction} 8 | 9 | 10 | \maketitle 11 | 12 | \phantomsection 13 | \label{section-phantom} 14 | 15 | \begin{verbatim} 16 | Copyright (C) 2005 -- 2020 Johan de Jong 17 | Permission is granted to copy, distribute and/or modify this 18 | document under the terms of the GNU Free Documentation License, 19 | Version 1.2 or any later version published by the Free Software 20 | Foundation; with no Invariant Sections, no Front-Cover Texts, 21 | and no Back-Cover Texts. A copy of the license is included in 22 | the section entitled "GNU Free Documentation License". 23 | \end{verbatim} 24 | 25 | \tableofcontents 26 | 27 | 28 | \section{Overview} 29 | \label{section-overview} 30 | 31 | \noindent 32 | Besides the book by Laumon and Moret-Bailly, see \cite{LM-B}, and the work 33 | (in progress) by Fulton et al, we think there is a place for an open source 34 | textbook on algebraic stacks and the algebraic geometry that is needed 35 | to define them. The Stacks Project attempts to do this by building the 36 | foundations starting with commutative algebra and proceeding via the 37 | theory of schemes and algebraic spaces to a comprehensive foundation for 38 | the theory of algebraic stacks. 39 | 40 | \medskip\noindent 41 | We expect this material to be read online as a key feature are the hyperlinks 42 | giving quick access to internal references spread over many different pages. 43 | If you use an embedded pdf or dvi viewer in your browser, the cross file 44 | links should work. 45 | 46 | \medskip\noindent 47 | This project is a collaborative effort and we encourage you to help out. 48 | Please email any typos or errors you find while reading or 49 | any suggestions, additional material, or examples you have to 50 | \href{mailto:stacks.project@gmail.com}{stacks.project@gmail.com}. 51 | You can download a tarball containing all source files, extract, 52 | run make, and use a dvi or pdf viewer locally. Please feel free to 53 | edit the LaTeX files and email your improvements. 54 | 55 | 56 | \section{Attribution} 57 | \label{section-attribution} 58 | 59 | \noindent 60 | The scope of this work is such that it is a daunting task to attribute 61 | correctly and succinctly all of those mathematicians whose work has led 62 | to the development of the theory we try to explain here. We hope eventually 63 | to generate enough community interest to find contributors willing to write 64 | sections with historical remarks for each and every chapter. 65 | 66 | \medskip\noindent 67 | Those who contributed to this work are listed on the title page of the book 68 | version of this work and 69 | \href{https://stacks.math.columbia.edu/tex/CONTRIBUTORS}{online}. 70 | Here we would like to name a selection of major contributions: 71 | \begin{enumerate} 72 | \item Jarod Alper contributed a chapter discussing the literature 73 | on algebraic stacks, see 74 | Guide to Literature, Section \ref{guide-section-short-introductions}. 75 | \item Bhargav Bhatt wrote the initial version of a chapter 76 | on \'etale morphisms of schemes, see 77 | \'Etale Morphisms, Section \ref{etale-section-introduction}. 78 | \item Bhargav Bhatt wrote the initial version of 79 | More on Algebra, Section \ref{more-algebra-section-formal-glueing}. 80 | \item Kiran Kedlaya contributed the initial writeup of 81 | Descent, Section \ref{descent-section-descent-universally-injective}. 82 | \item The initial versions of 83 | \begin{enumerate} 84 | \item Algebra, Section \ref{algebra-section-oka-families}, 85 | \item Injectives, Section \ref{injectives-section-baer}, and 86 | \item the chapter on fields, see 87 | Fields, Section \ref{fields-section-introduction}. 88 | \end{enumerate} 89 | are from 90 | \href{https://math.uchicago.edu/~amathew/cr.html}{The CRing Project}, 91 | courtesy of Akhil Mathew et al. 92 | \item Alex Perry wrote the material on projective modules, 93 | Mittag-Leffler modules, including the proof of 94 | Algebra, Theorem \ref{algebra-theorem-ffdescent-projectivity}. 95 | \item Alex Perry wrote the chapter on deformation theory a la Schlessinger 96 | and Rim, see 97 | Formal Deformation Theory, Section \ref{formal-defos-section-introduction}. 98 | \item Thibaut Pugin, Zachary Maddock and Min Lee took notes for 99 | a course which formed the basis for a chapter on \'etale cohomology 100 | and a chapter on the trace formula. See 101 | \'Etale Cohomology, Section \ref{etale-cohomology-section-introduction} 102 | and 103 | The Trace Formula, Section \ref{trace-section-introduction}. 104 | \item David Rydh has contributed many helpful comments, pointed out several 105 | mistakes, helped out in an essential way with the material on residual gerbes, 106 | and was the originator for the material in 107 | More on Groupoids in Spaces, Sections 108 | \ref{spaces-more-groupoids-section-finite} and 109 | \ref{spaces-more-groupoids-section-etale-localize}. 110 | \item Burt Totaro contributed Examples, Sections 111 | \ref{examples-section-non-descending-property-projective}, 112 | \ref{examples-section-non-effective-descent-projective}, 113 | and 114 | Properties of Stacks, Section \ref{stacks-properties-section-dimension}. 115 | \item The chapter on pro-\'etale cohomology, see 116 | Pro-\'etale Cohomology, Section \ref{proetale-section-introduction}, 117 | is taken from a paper by Bhargav Bhatt and Peter Scholze. 118 | \item Bhargav Bhatt contributed Examples, Sections 119 | \ref{examples-section-non-algebraic-hom-stack} and 120 | \ref{examples-section-flat-not-colimit-flat-finitely-presented}. 121 | \item Ofer Gabber found mistakes, contributed corrections and he 122 | contributed 123 | Varieties, Lemma \ref{varieties-lemma-image-connected-component}, 124 | Formal Spaces, Lemma \ref{formal-spaces-lemma-completion-countably-indexed}, 125 | the material in 126 | More on Groupoids, Section \ref{more-groupoids-section-ind-quasi-affine}, 127 | the main result of 128 | Properties of Spaces, Section \ref{spaces-properties-section-fpqc}, 129 | and the proof of 130 | More on Flatness, Proposition 131 | \ref{flat-proposition-finite-type-injective-into-flat-mod-m}. 132 | \item J\'anos Koll\'ar contributed 133 | Algebra, Lemma \ref{algebra-lemma-hart-serre-loc-thm} and 134 | Local Cohomology, Proposition \ref{local-cohomology-proposition-kollar}. 135 | \item Kiran Kedlaya wrote the initial version of 136 | More on Algebra, Section \ref{more-algebra-section-beauville-laszlo}. 137 | \item Matthew Emerton, Toby Gee, and Brandon Levin contributed 138 | some results on thickenings, in particular 139 | More on Morphisms of Stacks, Lemmas 140 | \ref{stacks-more-morphisms-lemma-reduced-diagonal}, 141 | \ref{stacks-more-morphisms-lemma-thickening-diagonals}, and 142 | \ref{stacks-more-morphisms-lemma-thickening-properties}. 143 | \item Lena Min Ji wrote the initial version of 144 | More on Algebra, Section \ref{more-algebra-section-principal-radical-ideals}. 145 | \item Matthew Emerton and Toby Gee wrote the initial versions of 146 | Geometry of Stacks, 147 | Sections \ref{stacks-geometry-section-multiplicities} and 148 | \ref{stacks-geometry-section-dimension-of-algebraic-stacks}. 149 | \end{enumerate} 150 | 151 | 152 | 153 | \input{chapters} 154 | 155 | \bibliography{my} 156 | \bibliographystyle{amsalpha} 157 | 158 | \end{document} 159 | -------------------------------------------------------------------------------- /preamble.tex: -------------------------------------------------------------------------------- 1 | \IfFileExists{stacks-project.cls}{% 2 | \documentclass{stacks-project} 3 | }{% 4 | \documentclass{amsart} 5 | } 6 | 7 | % For dealing with references we use the comment environment 8 | \usepackage{verbatim} 9 | \newenvironment{reference}{\comment}{\endcomment} 10 | %\newenvironment{reference}{}{} 11 | \newenvironment{slogan}{\comment}{\endcomment} 12 | \newenvironment{history}{\comment}{\endcomment} 13 | 14 | % For commutative diagrams we use Xy-pic 15 | \usepackage[all]{xy} 16 | 17 | % We use 2cell for 2-commutative diagrams. 18 | \xyoption{2cell} 19 | \UseAllTwocells 20 | 21 | % We use multicol for the list of chapters between chapters 22 | \usepackage{multicol} 23 | 24 | % This is generally recommended for better output 25 | \usepackage{lmodern} 26 | \usepackage[T1]{fontenc} 27 | 28 | % For cross-file-references 29 | \usepackage{xr-hyper} 30 | 31 | % Package for hypertext links: 32 | \usepackage{hyperref} 33 | 34 | % For any local file, say "hello.tex" you want to link to please 35 | % use \externaldocument[hello-]{hello} 36 | \externaldocument[introduction-]{introduction} 37 | \externaldocument[conventions-]{conventions} 38 | \externaldocument[sets-]{sets} 39 | \externaldocument[categories-]{categories} 40 | \externaldocument[topology-]{topology} 41 | \externaldocument[sheaves-]{sheaves} 42 | \externaldocument[sites-]{sites} 43 | \externaldocument[stacks-]{stacks} 44 | \externaldocument[fields-]{fields} 45 | \externaldocument[algebra-]{algebra} 46 | \externaldocument[brauer-]{brauer} 47 | \externaldocument[homology-]{homology} 48 | \externaldocument[derived-]{derived} 49 | \externaldocument[simplicial-]{simplicial} 50 | \externaldocument[more-algebra-]{more-algebra} 51 | \externaldocument[smoothing-]{smoothing} 52 | \externaldocument[modules-]{modules} 53 | \externaldocument[sites-modules-]{sites-modules} 54 | \externaldocument[injectives-]{injectives} 55 | \externaldocument[cohomology-]{cohomology} 56 | \externaldocument[sites-cohomology-]{sites-cohomology} 57 | \externaldocument[dga-]{dga} 58 | \externaldocument[dpa-]{dpa} 59 | \externaldocument[sdga-]{sdga} 60 | \externaldocument[hypercovering-]{hypercovering} 61 | \externaldocument[schemes-]{schemes} 62 | \externaldocument[constructions-]{constructions} 63 | \externaldocument[properties-]{properties} 64 | \externaldocument[morphisms-]{morphisms} 65 | \externaldocument[coherent-]{coherent} 66 | \externaldocument[divisors-]{divisors} 67 | \externaldocument[limits-]{limits} 68 | \externaldocument[varieties-]{varieties} 69 | \externaldocument[topologies-]{topologies} 70 | \externaldocument[descent-]{descent} 71 | \externaldocument[perfect-]{perfect} 72 | \externaldocument[more-morphisms-]{more-morphisms} 73 | \externaldocument[flat-]{flat} 74 | \externaldocument[groupoids-]{groupoids} 75 | \externaldocument[more-groupoids-]{more-groupoids} 76 | \externaldocument[etale-]{etale} 77 | \externaldocument[chow-]{chow} 78 | \externaldocument[intersection-]{intersection} 79 | \externaldocument[pic-]{pic} 80 | \externaldocument[weil-]{weil} 81 | \externaldocument[adequate-]{adequate} 82 | \externaldocument[dualizing-]{dualizing} 83 | \externaldocument[duality-]{duality} 84 | \externaldocument[discriminant-]{discriminant} 85 | \externaldocument[derham-]{derham} 86 | \externaldocument[local-cohomology-]{local-cohomology} 87 | \externaldocument[algebraization-]{algebraization} 88 | \externaldocument[curves-]{curves} 89 | \externaldocument[resolve-]{resolve} 90 | \externaldocument[models-]{models} 91 | \externaldocument[functors-]{functors} 92 | \externaldocument[equiv-]{equiv} 93 | \externaldocument[pione-]{pione} 94 | \externaldocument[etale-cohomology-]{etale-cohomology} 95 | \externaldocument[proetale-]{proetale} 96 | \externaldocument[relative-cycles-]{relative-cycles} 97 | \externaldocument[more-etale-]{more-etale} 98 | \externaldocument[trace-]{trace} 99 | \externaldocument[crystalline-]{crystalline} 100 | \externaldocument[spaces-]{spaces} 101 | \externaldocument[spaces-properties-]{spaces-properties} 102 | \externaldocument[spaces-morphisms-]{spaces-morphisms} 103 | \externaldocument[decent-spaces-]{decent-spaces} 104 | \externaldocument[spaces-cohomology-]{spaces-cohomology} 105 | \externaldocument[spaces-limits-]{spaces-limits} 106 | \externaldocument[spaces-divisors-]{spaces-divisors} 107 | \externaldocument[spaces-over-fields-]{spaces-over-fields} 108 | \externaldocument[spaces-topologies-]{spaces-topologies} 109 | \externaldocument[spaces-descent-]{spaces-descent} 110 | \externaldocument[spaces-perfect-]{spaces-perfect} 111 | \externaldocument[spaces-more-morphisms-]{spaces-more-morphisms} 112 | \externaldocument[spaces-flat-]{spaces-flat} 113 | \externaldocument[spaces-groupoids-]{spaces-groupoids} 114 | \externaldocument[spaces-more-groupoids-]{spaces-more-groupoids} 115 | \externaldocument[bootstrap-]{bootstrap} 116 | \externaldocument[spaces-pushouts-]{spaces-pushouts} 117 | \externaldocument[spaces-chow-]{spaces-chow} 118 | \externaldocument[groupoids-quotients-]{groupoids-quotients} 119 | \externaldocument[spaces-more-cohomology-]{spaces-more-cohomology} 120 | \externaldocument[spaces-simplicial-]{spaces-simplicial} 121 | \externaldocument[spaces-duality-]{spaces-duality} 122 | \externaldocument[formal-spaces-]{formal-spaces} 123 | \externaldocument[restricted-]{restricted} 124 | \externaldocument[spaces-resolve-]{spaces-resolve} 125 | \externaldocument[formal-defos-]{formal-defos} 126 | \externaldocument[defos-]{defos} 127 | \externaldocument[cotangent-]{cotangent} 128 | \externaldocument[examples-defos-]{examples-defos} 129 | \externaldocument[algebraic-]{algebraic} 130 | \externaldocument[examples-stacks-]{examples-stacks} 131 | \externaldocument[stacks-sheaves-]{stacks-sheaves} 132 | \externaldocument[criteria-]{criteria} 133 | \externaldocument[artin-]{artin} 134 | \externaldocument[quot-]{quot} 135 | \externaldocument[stacks-properties-]{stacks-properties} 136 | \externaldocument[stacks-morphisms-]{stacks-morphisms} 137 | \externaldocument[stacks-limits-]{stacks-limits} 138 | \externaldocument[stacks-cohomology-]{stacks-cohomology} 139 | \externaldocument[stacks-perfect-]{stacks-perfect} 140 | \externaldocument[stacks-introduction-]{stacks-introduction} 141 | \externaldocument[stacks-more-morphisms-]{stacks-more-morphisms} 142 | \externaldocument[stacks-geometry-]{stacks-geometry} 143 | \externaldocument[moduli-]{moduli} 144 | \externaldocument[moduli-curves-]{moduli-curves} 145 | \externaldocument[examples-]{examples} 146 | \externaldocument[exercises-]{exercises} 147 | \externaldocument[guide-]{guide} 148 | \externaldocument[desirables-]{desirables} 149 | \externaldocument[coding-]{coding} 150 | \externaldocument[obsolete-]{obsolete} 151 | \externaldocument[fdl-]{fdl} 152 | \externaldocument[index-]{index} 153 | 154 | % Theorem environments. 155 | % 156 | \theoremstyle{plain} 157 | \newtheorem{theorem}[subsection]{Theorem} 158 | \newtheorem{proposition}[subsection]{Proposition} 159 | \newtheorem{lemma}[subsection]{Lemma} 160 | 161 | \theoremstyle{definition} 162 | \newtheorem{definition}[subsection]{Definition} 163 | \newtheorem{example}[subsection]{Example} 164 | \newtheorem{exercise}[subsection]{Exercise} 165 | \newtheorem{situation}[subsection]{Situation} 166 | 167 | \theoremstyle{remark} 168 | \newtheorem{remark}[subsection]{Remark} 169 | \newtheorem{remarks}[subsection]{Remarks} 170 | 171 | \numberwithin{equation}{subsection} 172 | 173 | % Macros 174 | % 175 | \def\lim{\mathop{\mathrm{lim}}\nolimits} 176 | \def\colim{\mathop{\mathrm{colim}}\nolimits} 177 | \def\Spec{\mathop{\mathrm{Spec}}} 178 | \def\Hom{\mathop{\mathrm{Hom}}\nolimits} 179 | \def\Ext{\mathop{\mathrm{Ext}}\nolimits} 180 | \def\SheafHom{\mathop{\mathcal{H}\!\mathit{om}}\nolimits} 181 | \def\SheafExt{\mathop{\mathcal{E}\!\mathit{xt}}\nolimits} 182 | \def\Sch{\mathit{Sch}} 183 | \def\Mor{\mathop{\mathrm{Mor}}\nolimits} 184 | \def\Ob{\mathop{\mathrm{Ob}}\nolimits} 185 | \def\Sh{\mathop{\mathit{Sh}}\nolimits} 186 | \def\NL{\mathop{N\!L}\nolimits} 187 | \def\CH{\mathop{\mathrm{CH}}\nolimits} 188 | \def\proetale{{pro\text{-}\acute{e}tale}} 189 | \def\etale{{\acute{e}tale}} 190 | \def\QCoh{\mathit{QCoh}} 191 | \def\Ker{\mathop{\mathrm{Ker}}} 192 | \def\Im{\mathop{\mathrm{Im}}} 193 | \def\Coker{\mathop{\mathrm{Coker}}} 194 | \def\Coim{\mathop{\mathrm{Coim}}} 195 | 196 | % Boxtimes 197 | % 198 | \DeclareMathSymbol{\boxtimes}{\mathbin}{AMSa}{"02} 199 | 200 | % 201 | % Macros for moduli stacks/spaces 202 | % 203 | \def\QCohstack{\mathcal{QC}\!\mathit{oh}} 204 | \def\Cohstack{\mathcal{C}\!\mathit{oh}} 205 | \def\Spacesstack{\mathcal{S}\!\mathit{paces}} 206 | \def\Quotfunctor{\mathrm{Quot}} 207 | \def\Hilbfunctor{\mathrm{Hilb}} 208 | \def\Curvesstack{\mathcal{C}\!\mathit{urves}} 209 | \def\Polarizedstack{\mathcal{P}\!\mathit{olarized}} 210 | \def\Complexesstack{\mathcal{C}\!\mathit{omplexes}} 211 | % \Pic is the operator that assigns to X its picard group, usage \Pic(X) 212 | % \Picardstack_{X/B} denotes the Picard stack of X over B 213 | % \Picardfunctor_{X/B} denotes the Picard functor of X over B 214 | \def\Pic{\mathop{\mathrm{Pic}}\nolimits} 215 | \def\Picardstack{\mathcal{P}\!\mathit{ic}} 216 | \def\Picardfunctor{\mathrm{Pic}} 217 | \def\Deformationcategory{\mathcal{D}\!\mathit{ef}} 218 | -------------------------------------------------------------------------------- /scripts/add_tags.py: -------------------------------------------------------------------------------- 1 | from functions import * 2 | 3 | path = './' 4 | 5 | tags = get_tags(path) 6 | 7 | new_tags = get_new_tags(path, tags) 8 | 9 | print("About to write", len(new_tags), "new tags. Here is the list:") 10 | print() 11 | print_new_tags(new_tags) 12 | print() 13 | var = input("Do you want to do this? (no/yes)") 14 | if var == "yes": 15 | write_new_tags(path, new_tags) 16 | print("Tags were written.") 17 | else: 18 | print("No tags were written.") 19 | -------------------------------------------------------------------------------- /scripts/first-homotopy.gp: -------------------------------------------------------------------------------- 1 | /* Given a vector a returns i where i is the 2 | smallest index with a[i] minimal among the entries of a. */ 3 | smallest(a) = 4 | { 5 | local(n, f, i, j); 6 | n = length(a); 7 | f = a[1]; 8 | i = 1; 9 | j = 2; 10 | while(j <= n, 11 | if(a[j] < f, f = a[j]; i = j); 12 | j = j + 1 13 | ); 14 | return(i) 15 | } 16 | 17 | /* Given a vector a and an index i returns j where 18 | j > i is the smallest index with a[j] = a[i], if such an index does 19 | not exist j is the smallest index such that a[j] > a[i] is minimal among 20 | the entries if a bigger than a[i]. */ 21 | next_smallest(a, i) = 22 | { 23 | local(n, f, j, g, k); 24 | n = length(a); 25 | f = a[i]; 26 | j = i + 1; 27 | while(j <= n, 28 | if(a[j] == f, return(j)); 29 | j = j + 1 30 | ); 31 | j = 1; 32 | g = f - 1; 33 | while(j <= n, 34 | if(a[j] > f, if((a[j] < g) || (g < f), g = a[j]; k = j)); 35 | j = j + 1 36 | ); 37 | return(k) 38 | } 39 | 40 | /* Given a vector a makes the unique permutation s such that 41 | a[s[1]] <= a[s[2]] <= ... <= a[s[n]] 42 | and 43 | a[s[i]] = a[s[i + 1]] implies s[i] < s[i + 1]. */ 44 | make_sigma(a) = 45 | { 46 | local(n, b, t, i); 47 | n = length(a); 48 | b = vector(n); 49 | t = smallest(a); 50 | b[1] = t; 51 | i = 2; 52 | while(i <= n, 53 | t = next_smallest(a, t); 54 | b[i] = t; 55 | i = i + 1 56 | ); 57 | return(b) 58 | } 59 | 60 | /* Given a permutation s of length n and 1 <= a <= n makes the 61 | unique permutation sa such that 62 | sa[i] = s[i] for 1 <= i < a, and 63 | sa[a] < sa[a + 1] < ... < sa[n]. 64 | Of course this implies that sa[j] for j >= a omits the values 65 | s[i] (i < a) which have already been mapped to. */ 66 | make_sigma_a(s, a) = 67 | { 68 | local(n, sa, i, j, k); 69 | n = length(s); 70 | sa = vector(n); 71 | i = 1; 72 | while(i < a, 73 | sa[i] = s[i]; 74 | i = i + 1; 75 | ); 76 | i = 1; 77 | j = a; 78 | while((i <= n) && (j <= n), 79 | k = 1; 80 | while(k < a, 81 | if(s[k] == i, i = i + 1; k = 0); 82 | k = k + 1 83 | ); 84 | sa[j] = i; 85 | j = j + 1; 86 | i = i + 1 87 | ); 88 | return(sa) 89 | } 90 | 91 | /* Computes the sign of a permutation. */ 92 | sign_perm(s) = 93 | { 94 | local(n, i, j, t); 95 | n = length(s); 96 | t = 1; 97 | i = 1; 98 | while(i < n, 99 | j = i + 1; 100 | while(j <= n, 101 | if(s[i] > s[j], t = -t); 102 | j = j + 1 103 | ); 104 | i = i + 1 105 | ); 106 | return(t) 107 | } 108 | 109 | /* Given a vector a and an index i returns the vector which 110 | omits the value a[i]. */ 111 | hati(a, i) = 112 | { 113 | local(n, j, b); 114 | n = length(a); 115 | b = vector(n - 1); 116 | j = 1; 117 | while(j <= n - 1, 118 | if(j < i, b[j] = a[j]); 119 | if(i <= j, b[j] = a[j + 1]); 120 | j = j + 1 121 | ); 122 | return(b) 123 | } 124 | 125 | /* Given a vector a of length n which we think of as a multi-index 126 | a[1]...a[n] 127 | we compute a list 128 | [[l1, [a1], ..., [ln, [an]] 129 | where li is an integer and ai is a multi-index of length n - 1 such that 130 | d(s)_a = \sum li s_ai 131 | in the cech complex. */ 132 | diff_single(a) = 133 | { 134 | local(n, i, uit); 135 | n = length(a); 136 | uit = vector(n); 137 | i = 1; 138 | while(i <= n, 139 | uit[i] = [(-1)^(i - 1), hati(a, i)]; 140 | i = i + 1 141 | ); 142 | return(uit) 143 | } 144 | 145 | /* Given a list 146 | lijst = [[l1, [a1], ..., [ln, [an]] 147 | compute a list 148 | [[ll', [a1'], ..., [lm', [am']] 149 | such that 150 | sum li d(s)_ai = sum li' s_{ai'} 151 | in the Cech complex. */ 152 | diff(lijst) = 153 | { 154 | local(n, uit, i, t, m, j); 155 | n = length(lijst); 156 | uit = []; 157 | i = 1; 158 | while(i <= n, 159 | t = diff_single(lijst[i][2]); 160 | m = length(t); 161 | j = 1; 162 | while(j <= m, 163 | t[j][1] = lijst[i][1]*t[j][1]; 164 | j = j + 1 165 | ); 166 | uit = concat(uit, t); 167 | i = i + 1 168 | ); 169 | return(uit) 170 | } 171 | 172 | /* Given a vector a of length n which we think of as a multi-index 173 | a[1]...a[n] 174 | we compute a list 175 | [[l1, [a1], ..., [ln, [an]] 176 | where li is an integer and ai is a multi-index of length n - 1 such that 177 | h(s)_a = \sum li s_ai 178 | in the cech complex, where h is the homotopy of Equation 179 | \ref{equation-first-homotopy} comparing Cech cochain with 180 | semi-alternating cochains in the proof of 181 | Cohomology, Lemma \ref{cohomology-lemma-alternating-usual}. */ 182 | h_single(m) = 183 | { 184 | local(n, uit, s, e, t, a, sa, ea, i); 185 | n = length(m); 186 | uit = vector(n); 187 | s = make_sigma(m); 188 | e = sign_perm(s); 189 | t = vector(n + 1); 190 | a = 1; 191 | while(a <= n, 192 | sa = make_sigma_a(s, a); 193 | ea = sign_perm(sa); 194 | i = 1; 195 | while(i <= a, 196 | t[i] = m[s[i]]; 197 | i = i + 1 198 | ); 199 | i = a; 200 | while(i <= n, 201 | t[i + 1] = m[sa[i]]; 202 | i = i + 1 203 | ); 204 | uit[a] = [(-1)^(a - 1)*ea, t]; 205 | a = a + 1 206 | ); 207 | return(uit) 208 | } 209 | 210 | /* Given a list 211 | lijst = [[l1, [a1], ..., [ln, [an]] 212 | compute a list 213 | [[ll', [a1'], ..., [lm', [am']] 214 | such that 215 | sum li h(s)_ai = sum li' s_{ai'} 216 | in the Cech complex. */ 217 | h(lijst) = 218 | { 219 | local(n, uit, i, t, m, j); 220 | n = length(lijst); 221 | uit = []; 222 | i = 1; 223 | while(i <= n, 224 | t = h_single(lijst[i][2]); 225 | m = length(t); 226 | j = 1; 227 | while(j <= m, 228 | t[j][1] = lijst[i][1]*t[j][1]; 229 | j = j + 1 230 | ); 231 | uit = concat(uit, t); 232 | i = i + 1 233 | ); 234 | return(uit) 235 | } 236 | 237 | /* Given a list 238 | lijst = [[l1, [a1], ..., [ln, [an]] 239 | compute a list 240 | [[ll', [a1'], ..., [lm', [am']] 241 | such that 242 | sum li s_ai = sum li' s_{ai'} 243 | in the Cech complex and such that the new list has no repeats. */ 244 | reduce(lijst) = 245 | { 246 | local(n, uit, i, j); 247 | n = length(lijst); 248 | uit = []; 249 | i = 1; 250 | while(i <= n, 251 | j = i + 1; 252 | while(j <= n, 253 | if(lijst[i][2] == lijst[j][2], 254 | lijst[i][1] = lijst[i][1] + lijst[j][1]; 255 | lijst[j][1] = 0 256 | ); 257 | j = j + 1 258 | ); 259 | if(lijst[i][1] <> 0, uit = concat(uit, [lijst[i]])); 260 | i = i + 1 261 | ); 262 | return(uit) 263 | } 264 | 265 | /* The outcome should be [] in order for formula 266 | Cohomology, Equation \ref{cohomology-equation-homotopy} 267 | to be correct. */ 268 | test(m) = 269 | { 270 | local(n, s, ms, i, lijst); 271 | n = length(m); 272 | s = make_sigma(m); 273 | ms = vector(n); 274 | i = 1; 275 | while(i <= n, 276 | ms[i] = m[s[i]]; 277 | i = i + 1 278 | ); 279 | lijst = [[-1, m], [sign_perm(s), ms]]; 280 | return(reduce(concat(lijst, concat(h(diff_single(m)), diff(h_single(m)))))) 281 | } 282 | 283 | /* Does 1000 random tests with multi-indices having d entries. */ 284 | test_random(d) = 285 | { 286 | local(m, i, j); 287 | m = vector(d); 288 | i = 1; 289 | while(i <= 1000, 290 | j = 1; 291 | while(j <= d, 292 | m[j] = random(d); 293 | j = j + 1 294 | ); 295 | if(test(m) <> [], print("Error for m = ", m,".")); 296 | i = i + 1 297 | ) 298 | } 299 | -------------------------------------------------------------------------------- /scripts/functions.py: -------------------------------------------------------------------------------- 1 | # Find location of repository 2 | def get_path(): 3 | from sys import argv 4 | if not len(argv) == 2: 5 | print() 6 | print("This script needs exactly one argument") 7 | print("namely the path to the stacks project directory") 8 | print() 9 | raise Exception('Wrong arguments') 10 | path = argv[1] 11 | path.rstrip("/") 12 | path = path + "/" 13 | return path 14 | 15 | # Assuming there is a title on the line, find it. 16 | def find_title(line): 17 | n = line.find("\\title{") 18 | if n < 0: 19 | return "" 20 | n = n + 6 21 | m = find_sub_clause(line, n, "{", "}") 22 | title = line[n + 1 : m] 23 | return title 24 | 25 | # Returns list of terms being defined, which are pieces of the form 26 | # {\it definition-text} 27 | def find_defined_terms(def_text): 28 | def_terms = [] 29 | n = def_text.find("{\\it ") 30 | while n >= 0: 31 | m = find_sub_clause(def_text, n, "{", "}") 32 | def_terms.append(def_text[n : m + 1]) 33 | n = def_text.find("{\\it ", m) 34 | return def_terms 35 | 36 | # Spits out the git version of the git repository in the path 37 | def git_version(path): 38 | from subprocess import Popen, PIPE, STDOUT 39 | cmd = 'git --git-dir=' + path + '.git log --pretty=format:%h -n1' 40 | p = Popen(cmd, shell=True, text=True, stdout=PIPE).stdout 41 | version = p.read() 42 | p.close() 43 | return version 44 | 45 | # Check if the line contains a label 46 | def is_label(env_text): 47 | n = env_text.find("\\label{") 48 | if n < 0: 49 | return 0 50 | return 1 51 | 52 | # Check if there are references on the line 53 | def contains_ref(line): 54 | n = line.find("\\ref{") 55 | if n < 0: 56 | return 0 57 | return 1 58 | 59 | # returns all long labels for a given name 60 | def get_all_labels(path, name): 61 | labels = [] 62 | tex_file = open(path + name + ".tex", 'r') 63 | verbatim = 0 64 | for line in tex_file: 65 | # Check for verbatim, because we do not add labels from 66 | # verbatim environments. 67 | verbatim = verbatim + beginning_of_verbatim(line) 68 | if verbatim: 69 | if end_of_verbatim(line): 70 | verbatim = 0 71 | continue 72 | 73 | label = find_label(line) 74 | if label: 75 | label = name + "-" + label 76 | labels.append(label) 77 | tex_file.close() 78 | return labels 79 | 80 | # returns all long labels in the project 81 | def all_labels(path): 82 | lijstje = list_text_files(path) 83 | labels = [] 84 | for name in lijstje: 85 | extra = get_all_labels(path, name) 86 | labels = labels + extra 87 | return labels 88 | 89 | # Structure of tags: 90 | # Already created tags are listed in the file tags/tags 91 | # Each line of tags/tags is of the form 92 | # tag,full_label 93 | # with no spaces and where 94 | # tag: the actual tag 95 | # full_label: label with "name-" prepended if the label occurs 96 | # in the file name.tex 97 | # See also the file tags/tags for an example. 98 | # We can also have lines starting with a hash # marking comments. 99 | # We may want to change the name/label if a result moves from one file to 100 | # another, or if we split a long file into two pieces. We may also 101 | # sometimes change the label of a result (eg if there is a typo in the 102 | # label itself). But the tags should never change. 103 | 104 | # The first tag is 0000 and the last tag is ZZZZ 105 | # Starting at tag 04E6 we no longer use O 106 | def next_tag(tag): 107 | next = list(tag) 108 | S = "0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ" 109 | i = 3 110 | while i >= 0: 111 | n = S.find(next[i]) 112 | if n == 34: 113 | next[i] = '0' 114 | else: 115 | next[i] = S[n + 1] 116 | break 117 | i = i - 1 118 | return next[0] + next[1] + next[2] + next[3] 119 | 120 | # Function producing a list of new tags to assign to LaTeX labels 121 | def get_new_tags(path, tags): 122 | last_tag = tags[-1][0] 123 | label_tags = dict((tags[n][1], tags[n][0]) for n in range(0, len(tags))) 124 | lijstje = list_text_files(path) 125 | new_tags = [] 126 | for name in lijstje: 127 | labels = get_all_labels(path, name) 128 | n = 0 129 | while n < len(labels): 130 | if labels[n] not in label_tags: 131 | last_tag = next_tag(last_tag) 132 | new_tags.append([last_tag, labels[n]]) 133 | n = n + 1 134 | parts = get_parts(path) 135 | for part in parts: 136 | if parts[part][1] not in label_tags: 137 | last_tag = next_tag(last_tag) 138 | new_tags.append([last_tag, parts[part][1]]) 139 | return new_tags 140 | 141 | # print out the new tags as found by get_new_tags 142 | def print_new_tags(new_tags): 143 | n = 0 144 | while n < len(new_tags): 145 | print(new_tags[n][0] + "," + new_tags[n][1]) 146 | n = n + 1 147 | return 148 | 149 | # write the new tags to tags/tags 150 | def write_new_tags(path, new_tags): 151 | tag_file = open(path + "tags/tags", 'a') 152 | n = 0 153 | while n < len(new_tags): 154 | tag_file.write(new_tags[n][0] + "," + new_tags[n][1] + "\n") 155 | n = n + 1 156 | tag_file.close() 157 | return 158 | 159 | def get_parts(path): 160 | lijst = list_text_files(path) 161 | lijst.append('index') 162 | lijst.append('xxx') 163 | parts = {} 164 | chapters = open(path + "chapters.tex", 'r') 165 | n = 0 166 | name = lijst[n] 167 | for line in chapters: 168 | if line.find(name + '-section-phantom') >= 0: 169 | n = n + 1 170 | name = lijst[n] 171 | if line.find('\\') < 0: 172 | title = line.rstrip() 173 | label = 'book-part-' + "-".join(title.lower().split()) 174 | parts[name] = [title, label] 175 | chapters.close() 176 | return(parts) 177 | 178 | ######################################################################## 179 | # 180 | # 181 | # The rest of the code is shared with the code in the file 182 | # functions.py in stacks-tools 183 | # 184 | # 185 | ######################################################################## 186 | 187 | # We also have labels for 188 | # 'section', 'subsection', 'subsubsection' (every one of these has a label) 189 | # 'item' (typically an item does not have a label) 190 | list_of_labeled_envs = ['lemma', 'proposition', 'theorem', 'remark', 'remarks', 'example', 'exercise', 'situation', 'equation', 'definition'] 191 | 192 | # Standard labels 193 | list_of_standard_labels = ['definition', 'lemma', 'proposition', 'theorem', 'remark', 'remarks', 'example', 'exercise', 'situation', 'equation', 'section', 'subsection', 'subsubsection', 'item'] 194 | 195 | # List the stems of the TeX files in the project 196 | # in the correct order 197 | def list_text_files(path): 198 | Makefile_file = open(path + "Makefile", 'r') 199 | for line in Makefile_file: 200 | n = line.find("LIJST = ") 201 | if n == 0: 202 | break 203 | lijst = "" 204 | while line.find("\\") >= 0: 205 | line = line.rstrip() 206 | line = line.rstrip("\\") 207 | lijst = lijst + " " + line 208 | line = Makefile_file.readline() 209 | Makefile_file.close() 210 | lijst = lijst + " " + line 211 | lijst = lijst.replace("LIJST = ", "") 212 | lijst = lijst + " fdl" 213 | return lijst.split() 214 | 215 | # Check if the line contains the title of the document 216 | def is_title(line): 217 | n = line.find("\\title{") 218 | if n < 0: 219 | return 0 220 | return 1 221 | 222 | # See if line starts a definition 223 | def beginning_of_definition(line): 224 | n = line.find("\\begin{definition}") 225 | if n == 0: 226 | return 1 227 | return 0 228 | 229 | # See if line ends a definition 230 | def end_of_definition(line): 231 | n = line.find("\\end{definition}") 232 | if n == 0: 233 | return 1 234 | return 0 235 | 236 | # Find clause starting in specific spot with specific open and close characters 237 | def find_sub_clause(text, spot, open, close): 238 | nr_braces = 0 239 | while nr_braces >= 0: 240 | spot = spot + 1 241 | if text[spot] == open: 242 | nr_braces = nr_braces + 1 243 | if text[spot] == close: 244 | nr_braces = nr_braces - 1 245 | return spot 246 | 247 | # Returns short label. Does not assume there is a label on the line 248 | def find_label(env_text): 249 | n = env_text.find("\\label{") 250 | if n < 0: 251 | return "" 252 | n = n + 6 253 | m = find_sub_clause(env_text, n, "{", "}") 254 | label = env_text[n + 1 : m] 255 | return label 256 | 257 | # See if line starts verbatim environment, 258 | # also check if the \begin{verbatim} starts the line 259 | def beginning_of_verbatim(line): 260 | n = line.find("\\begin{verbatim}") 261 | if n > 0: 262 | raise Exception('\\begin{verbatim} not at start of line.') 263 | if n == 0: 264 | return 1 265 | else: 266 | return 0 267 | 268 | # See if line ends verbatim environment, 269 | # also check if the \begin{verbatim} starts the line 270 | def end_of_verbatim(line): 271 | n = line.find("\\end{verbatim}") 272 | if n > 0: 273 | raise Exception('\\end{verbatim} not at start of line.') 274 | if n == 0: 275 | return 1 276 | return 0 277 | 278 | # Silly function 279 | def get_tag_line(line): 280 | line = line.rstrip() 281 | return line.split(",") 282 | 283 | # Get all active tags in the project 284 | def get_tags(path): 285 | tags = [] 286 | tag_file = open(path + "tags/tags", 'r') 287 | for line in tag_file: 288 | if not line.find("#") == 0: 289 | tags.append(get_tag_line(line)) 290 | tag_file.close() 291 | return tags 292 | 293 | # Check if environment should have a label 294 | # The input should be a line from latex file containing the 295 | # \begin{environment} statement 296 | def labeled_env(env): 297 | n = 0 298 | while n < len(list_of_labeled_envs): 299 | if env.find('\\begin{' + list_of_labeled_envs[n] + '}') == 0: 300 | return 1 301 | n = n + 1 302 | return 0 303 | 304 | # Replace refs to refs with full labels 305 | def replace_refs(line, name): 306 | n = 0 307 | while n < len(list_of_standard_labels): 308 | text = "\\ref{" + list_of_standard_labels[n] + "-" 309 | repl = "\\ref{" + name + "-" + list_of_standard_labels[n] + "-" 310 | line = line.replace(text, repl) 311 | n = n + 1 312 | return line 313 | 314 | # Chapters unmodified 315 | def print_chapters(path): 316 | chapters = open(path + "chapters.tex", 'r') 317 | for line in chapters: 318 | print(line, end = '') 319 | chapters.close() 320 | return 321 | 322 | # Print version and date 323 | def print_version(path): 324 | from datetime import date 325 | now = date.today() 326 | version = git_version(path) 327 | print("Version " + version + ", compiled on " + now.strftime('%h %d, %Y.')) 328 | 329 | 330 | # Print license blurp 331 | def print_license_blurp(path): 332 | filename = path + 'introduction.tex' 333 | introduction = open(filename, 'r') 334 | inside = 0 335 | for line in introduction: 336 | if line.find('\\begin{verbatim}') == 0: 337 | inside = 1 338 | if inside == 0: 339 | continue 340 | print(line, end = '') 341 | if line.find('\\end{verbatim}') == 0: 342 | inside = 0 343 | introduction.close() 344 | -------------------------------------------------------------------------------- /scripts/latex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script makes some assumptions that only apply to the stacks project. 4 | # But if you know how to read this script then it should be fairly easy to 5 | # figure out what they are and adapt them to your specific case. 6 | 7 | # Stacks Project Directory 8 | SPD=$1 9 | 10 | # Latex command to use 11 | LATEX=$2 12 | 13 | # Stem of latex file 14 | STEM=$3 15 | 16 | # Temporary directory 17 | TMPD=`mktemp -d --tmpdir=$SPD/tmp` 18 | 19 | # Symbolically link files that are hopefully not modified during process 20 | ln -s $SPD/preamble.tex $SPD/chapters.tex $SPD/hyperref.cfg \ 21 | $SPD/stacks-project.cls $SPD/$STEM.tex $TMPD 22 | 23 | # Exceptional cases 24 | if [ "$STEM" == "tmp/index" ]; then STEM="index"; fi 25 | if [ "$STEM" == "tmp/book" ]; then 26 | STEM="book"; 27 | ln -s $SPD/stacks-project-book.cls $TMPD; 28 | fi 29 | 30 | # Link to bibliography file 31 | ln -s $SPD/$STEM.bbl $TMPD 32 | 33 | # Copy working files 34 | cp *.aux $TMPD 35 | cp $STEM.toc $TMPD 36 | 37 | # Latex the file in temporary directory 38 | cd $TMPD 39 | $LATEX $STEM.tex 40 | 41 | # Move newly created files back to stacks project directory 42 | [ -f $STEM.pdf ] && mv $STEM.pdf $SPD 43 | [ -f $STEM.dvi ] && mv $STEM.dvi $SPD 44 | [ -f $STEM.aux ] && mv $STEM.aux $SPD 45 | [ -f $STEM.toc ] && mv $STEM.toc $SPD 46 | [ -f $STEM.out ] && mv $STEM.out $SPD 47 | [ -f $STEM.log ] && mv $STEM.log $SPD 48 | 49 | # Remove temporary directory 50 | cd $SPD 51 | rm -r $TMPD 52 | -------------------------------------------------------------------------------- /scripts/make_book.py: -------------------------------------------------------------------------------- 1 | from functions import * 2 | 3 | # Preamble for the book does not have external references 4 | # Use the CJKutf8 5 | # Use stacks-project-book if available 6 | # Use amsbook otherwise 7 | def print_preamble(path): 8 | preamble = open(path + "preamble.tex", 'r') 9 | for line in preamble: 10 | if line.find("%") == 0: 11 | continue 12 | if line.find("externaldocument") >= 0: 13 | continue 14 | if line.find("xr-hyper") >= 0: 15 | line = line.replace("xr-hyper", "CJKutf8") 16 | if line.find("\\IfFileExists{") == 0: 17 | line = line.replace("stacks-project", "stacks-project-book") 18 | if line.find("\\documentclass") == 0: 19 | line = line.replace("amsart", "amsbook") 20 | line = line.replace("stacks-project", "stacks-project-book") 21 | print(line, end = '') 22 | preamble.close() 23 | return 24 | 25 | # Print names contributors 26 | def print_list_contrib(path): 27 | filename = path + 'CONTRIBUTORS' 28 | CONTRIBUTORS = open(filename, 'r') 29 | first = 1 30 | for line in CONTRIBUTORS: 31 | if line.find("%") == 0: 32 | continue 33 | if len(line.rstrip()) == 0: 34 | continue 35 | contributor = line.rstrip() 36 | contributor = contributor.replace("(", "(\\begin{CJK}{UTF8}{min}") 37 | contributor = contributor.replace(")", "\\end{CJK})") 38 | if first: 39 | contributors = contributor 40 | first = 0 41 | continue 42 | contributors = contributors + ", " + contributor 43 | CONTRIBUTORS.close() 44 | contributors = contributors + "." 45 | print(contributors) 46 | 47 | path = get_path() 48 | 49 | print_preamble(path) 50 | 51 | print("\\begin{document}") 52 | print("\\begin{titlepage}") 53 | print("\\pagestyle{empty}") 54 | print("\\setcounter{page}{1}") 55 | print("\\centerline{\\LARGE\\bfseries Stacks Project}") 56 | print("\\vskip1in") 57 | print("\\noindent") 58 | print("\\centerline{") 59 | print_version(path) 60 | print("}") 61 | print("\\vskip1in") 62 | print("\\noindent") 63 | print("The following people have contributed to this work:") 64 | print_list_contrib(path) 65 | print("\\end{titlepage}") 66 | print_license_blurp(path) 67 | 68 | lijstje = list_text_files(path) 69 | lijstje.append("index") 70 | 71 | parts = get_parts(path) 72 | 73 | ext = ".tex" 74 | for name in lijstje: 75 | if name in parts: 76 | print("\\part{" + parts[name][0] + "}") 77 | if name == "index": 78 | filename = path + "tmp/index.tex" 79 | else: 80 | filename = path + name + ext 81 | tex_file = open(filename, 'r') 82 | verbatim = 0 83 | for line in tex_file: 84 | verbatim = verbatim + beginning_of_verbatim(line) 85 | if verbatim: 86 | if end_of_verbatim(line): 87 | verbatim = 0 88 | if name != 'introduction': 89 | print(line, end = '') 90 | continue 91 | if line.find("\\input{preamble}") == 0: 92 | continue 93 | if line.find("\\begin{document}") == 0: 94 | continue 95 | if line.find("\\title{") == 0: 96 | line = line.replace("\\title{", "\\chapter{") 97 | if line.find("\\maketitle") == 0: 98 | continue 99 | if line.find("\\tableofcontents") == 0: 100 | continue 101 | if line.find("\\input{chapters}") == 0: 102 | continue 103 | if line.find("\\bibliography") == 0: 104 | continue 105 | if line.find("\\end{document}") == 0: 106 | continue 107 | if is_label(line): 108 | text = "\\label{" + name + "-" 109 | line = line.replace("\\label{", text) 110 | if contains_ref(line): 111 | line = replace_refs(line, name) 112 | print(line, end = '') 113 | 114 | tex_file.close() 115 | print_chapters(path) 116 | 117 | print("\\bibliography{my}") 118 | print("\\bibliographystyle{amsalpha}") 119 | print("\\end{document}") 120 | -------------------------------------------------------------------------------- /scripts/make_index.py: -------------------------------------------------------------------------------- 1 | from functions import * 2 | 3 | def print_section_title(title): 4 | print("") 5 | print("\\medskip\\noindent") 6 | print("{\\bf " + title + "}") 7 | print("") 8 | print("\\medskip") 9 | return 10 | 11 | def print_def_terms(label, def_terms): 12 | print("") 13 | print("\\noindent") 14 | print("In \\ref{" + label + "}: ") 15 | n = len(def_terms) 16 | m = 0 17 | while m < n: 18 | if m + 1 < n: 19 | print(def_terms[m] + ",") 20 | else: 21 | print(def_terms[m]) 22 | m = m + 1 23 | print("") 24 | return 25 | 26 | def add_def_terms(terms, label, def_terms): 27 | n = 0 28 | while n < len(def_terms): 29 | terms.append([def_terms[n], label]) 30 | n = n + 1 31 | return 32 | 33 | def add_defs(defs, label, def_terms): 34 | defs.append([def_terms, label]) 35 | return 36 | 37 | def find_name(name, label): 38 | if label.find(name + "-definition") == 0: 39 | return 1 40 | else: 41 | return 0 42 | 43 | path = get_path() 44 | lijstje = list_text_files(path) 45 | ext = ".tex" 46 | terms = [] 47 | defs = [] 48 | titles = [] 49 | for name in lijstje: 50 | filename = path + name + ext 51 | tex_file = open(filename, 'r') 52 | in_definition = 0 53 | nr_lines_def = 0 54 | line_nr = 0 55 | have_title = 0 56 | def_text = "" 57 | for line in tex_file: 58 | line_nr = line_nr + 1 59 | if not have_title and is_title(line): 60 | have_title = 1 61 | titles.append(find_title(line)) 62 | if in_definition == 1: 63 | def_text = def_text + " " + line.rstrip() 64 | nr_lines_def = nr_lines_def + 1 65 | if end_of_definition(line) == 1: 66 | in_definition = 0 67 | label = find_label(def_text) 68 | label = name + "-" + label 69 | def_terms = find_defined_terms(def_text) 70 | add_def_terms(terms, label, def_terms) 71 | add_defs(defs, label, def_terms) 72 | else: 73 | in_definition = beginning_of_definition(line) 74 | if in_definition == 1: 75 | nr_lines_def = 1 76 | def_text = line.rstrip() 77 | 78 | tex_file.close() 79 | 80 | 81 | print("\\input{preamble}") 82 | print("\\begin{document}") 83 | print("\\title{Auto generated index}") 84 | print("\\maketitle") 85 | print() 86 | print("\\phantomsection") 87 | print("\\label{section-phantom}") 88 | print() 89 | print("\\tableofcontents") 90 | print() 91 | print("\\frenchspacing") 92 | print() 93 | print() 94 | print("\\begin{multicols}{2}[\\section{Alphabetized definitions}\\label{section-alphabetized}]") 95 | terms.sort(key=lambda x: x[0].lower()) 96 | n = 0 97 | while n < len(terms): 98 | print("\\noindent") 99 | print(terms[n][0]) 100 | print("in \\ref{" + terms[n][1] + "}") 101 | print() 102 | n = n + 1 103 | print("\\end{multicols}") 104 | print() 105 | print("\\begin{multicols}{2}[\\section{Definitions listed per chapter}\\label{section-per-chapter}]") 106 | n = 0 107 | m = 0 108 | for name in lijstje: 109 | print_section_title(titles[m]) 110 | m = m + 1 111 | while n < len(defs) and find_name(name, defs[n][1]): 112 | print_def_terms(defs[n][1], defs[n][0]) 113 | n = n + 1 114 | 115 | print("\\end{multicols}") 116 | print() 117 | print("\\input{chapters}") 118 | print("\\end{document}") 119 | -------------------------------------------------------------------------------- /scripts/second-homotopy.gp: -------------------------------------------------------------------------------- 1 | /* Given a vector a and an index i returns the vector which 2 | omits the value a[i]. */ 3 | hati(a, i) = 4 | { 5 | local(n, j, b); 6 | n = length(a); 7 | b = vector(n - 1); 8 | j = 1; 9 | while(j <= n - 1, 10 | if(j < i, b[j] = a[j]); 11 | if(i <= j, b[j] = a[j + 1]); 12 | j = j + 1 13 | ); 14 | return(b) 15 | } 16 | 17 | /* Given a vector a and an index i returns the vector which 18 | doubles the value a[i]. */ 19 | doublei(a, i) = 20 | { 21 | local(n, j, b); 22 | n = length(a); 23 | b = vector(n + 1); 24 | j = 1; 25 | while(j <= n + 1, 26 | if(j <= i, b[j] = a[j]); 27 | if(i < j, b[j] = a[j - 1]); 28 | j = j + 1 29 | ); 30 | return(b) 31 | } 32 | 33 | /* Given a vector a of length n which we think of as a multi-index 34 | a[1]...a[n] 35 | we compute a list 36 | [[l1, [a1], ..., [ln, [an]] 37 | where li is an integer and ai is a multi-index of length n - 1 such that 38 | d(s)_a = \sum li s_ai 39 | in the cech complex. */ 40 | diff_single(a) = 41 | { 42 | local(n, i, uit); 43 | n = length(a); 44 | uit = vector(n); 45 | i = 1; 46 | while(i <= n, 47 | uit[i] = [(-1)^(i - 1), hati(a, i)]; 48 | i = i + 1 49 | ); 50 | return(uit) 51 | } 52 | 53 | /* Given a list 54 | lijst = [[l1, [a1], ..., [ln, [an]] 55 | compute a list 56 | [[ll', [a1'], ..., [lm', [am']] 57 | such that 58 | sum li d(s)_ai = sum li' s_{ai'} 59 | in the Cech complex. */ 60 | diff(lijst) = 61 | { 62 | local(n, uit, i, t, m, j); 63 | n = length(lijst); 64 | uit = []; 65 | i = 1; 66 | while(i <= n, 67 | t = diff_single(lijst[i][2]); 68 | m = length(t); 69 | j = 1; 70 | while(j <= m, 71 | t[j][1] = lijst[i][1]*t[j][1]; 72 | j = j + 1 73 | ); 74 | uit = concat(uit, t); 75 | i = i + 1 76 | ); 77 | return(uit) 78 | } 79 | 80 | /* Computes the number of equal entries of the vector m starting at index i. */ 81 | nrequal(m, a) = 82 | { 83 | local(n, nr, i); 84 | n = length(m); 85 | nr = 1; 86 | i = a + 1; 87 | while((i <= n) && (m[i] == m[a]), i = i + 1; nr = nr + 1); 88 | return(nr) 89 | } 90 | 91 | /* Given a vector a of length n which we think of as a multi-index 92 | a[1]...a[n] 93 | we compute a list 94 | [[l1, [a1], ..., [ln, [an]] 95 | where li is an integer and ai is a multi-index of length n - 1 such that 96 | h(s)_a = \sum li s_ai 97 | in the cech complex, where h is the homotopy of Equation 98 | \ref{equation-second-homotopy} comparing semi-orderd Cech cochains with 99 | ordered cochains in the proof of 100 | Cohomology, Lemma \ref{cohomology-lemma-alternating-usual}. */ 101 | h_single(m) = 102 | { 103 | local(n, uit, s, a, t); 104 | n = length(m); 105 | uit = []; 106 | s = 0; 107 | a = 1; 108 | while(a <= n, 109 | if(((a == 1) || (m[a - 1] < m[a])) && (nrequal(m, a) > 1), 110 | if(s == 0, 111 | t = doublei(m, a); 112 | uit = concat(uit, [[(-1)^(a - 1), t]]) 113 | ); 114 | s = s + 1 115 | ); 116 | a = a + 1 117 | ); 118 | return(uit) 119 | } 120 | 121 | h(lijst) = 122 | { 123 | local(n, uit, i, t, m, j); 124 | n = length(lijst); 125 | uit = []; 126 | i = 1; 127 | while(i <= n, 128 | t = h_single(lijst[i][2]); 129 | m = length(t); 130 | j = 1; 131 | while(j <= m, 132 | t[j][1] = lijst[i][1]*t[j][1]; 133 | j = j + 1 134 | ); 135 | uit = concat(uit, t); 136 | i = i + 1 137 | ); 138 | return(uit) 139 | } 140 | 141 | /* Given a list 142 | lijst = [[l1, [a1], ..., [ln, [an]] 143 | compute a list 144 | [[ll', [a1'], ..., [lm', [am']] 145 | such that 146 | sum li s_ai = sum li' s_{ai'} 147 | in the Cech complex and such that the new list has no repeats. */ 148 | reduce(lijst) = 149 | { 150 | local(n, uit, i, j); 151 | n = length(lijst); 152 | uit = []; 153 | i = 1; 154 | while(i <= n, 155 | j = i + 1; 156 | while(j <= n, 157 | if(lijst[i][2] == lijst[j][2], 158 | lijst[i][1] = lijst[i][1] + lijst[j][1]; 159 | lijst[j][1] = 0 160 | ); 161 | j = j + 1 162 | ); 163 | if(lijst[i][1] <> 0, uit = concat(uit, [lijst[i]])); 164 | i = i + 1 165 | ); 166 | return(uit) 167 | } 168 | 169 | test(m) = 170 | { 171 | local(n, e, i, lijst); 172 | n = length(m); 173 | e = 1; 174 | i = 1; 175 | while(i < n, 176 | if(m[i] == m[i + 1], e = 0); 177 | i = i + 1 178 | ); 179 | if(e == 0, lijst = [[-1, m]], lijst = []); 180 | return(reduce(concat(lijst, concat(h(diff_single(m)), diff(h_single(m)))))) 181 | } 182 | 183 | /* Does all tests with multi-indices having d entries. */ 184 | test_all(d) = 185 | { 186 | local(m, bits, i, j); 187 | m = vector(d); 188 | m[1] = 0; 189 | bits = vector(d - 1); 190 | i = 1; 191 | while(i, 192 | j = 2; 193 | while(j <= d, 194 | m[j] = m[j - 1] + bits[d - j + 1]; 195 | j = j + 1 196 | ); 197 | if(test(m) <> [], error("Did not work for m = ", m)); 198 | j = 1; 199 | while((j <= d - 1) && (bits[j] == 1), j = j + 1); 200 | if(j == d, print("Success!"); return); 201 | bits[j] = 1; 202 | j = j - 1; 203 | while(j >= 1, bits[j] = 0; j = j - 1); 204 | ) 205 | } 206 | -------------------------------------------------------------------------------- /scripts/signs.gp: -------------------------------------------------------------------------------- 1 | /* epsilon = a*N*M + b*N*P + c*N*R + d*M*P + e*M*R + f*P*R */ 2 | epsilon = 0*N*M + 1*N*P + 1*N*R + 0*M*P + 0*M*R + 1*P*R + R 3 | /* + g*N + h*M + i*P + j*R */ 4 | 5 | fill(aa, bb, cc, dd) = 6 | { 7 | local(AA); 8 | AA = subst(subst(subst(subst(epsilon, N, aa), M, bb), P, cc), R, dd); 9 | return(AA) 10 | } 11 | 12 | 13 | /* Cup product is a map of complexes */ 14 | 15 | test1() = 16 | { 17 | local(AA, BB); 18 | AA = p + 1 + fill(n, m, p + 1, r); 19 | BB = fill(n + 1, m, p + 1, r) + r; 20 | return(AA - BB) 21 | } 22 | 23 | test2() = 24 | { 25 | local(AA, BB); 26 | AA = p + 1 + fill(n, m, p + 1, r) + n - r; 27 | BB = n + fill(n, m + 1, p + 1, r) + p + 1 - r; 28 | return(AA - BB) 29 | } 30 | 31 | test3() = 32 | { 33 | local(AA, BB); 34 | AA = fill(n + 1, m, p + 1, r) + r; 35 | BB = 1 + n + fill(n, m + 1, p + 1, r - 1); 36 | return(AA - BB) 37 | } 38 | 39 | test4() = 40 | { 41 | local(AA, BB); 42 | AA = fill(n, m, p, r); 43 | BB = n + fill(n, m + 1, p + 1, r) - r; 44 | return(AA - BB) 45 | } 46 | 47 | test5() = 48 | { 49 | local(AA, BB); 50 | AA = fill(n, m, p, r - 1); 51 | BB = fill(n + 1, m, p + 1, r); 52 | return(AA - BB) 53 | } 54 | 55 | test1 56 | test2 57 | test3 58 | test4 59 | test5 60 | 61 | 62 | /* The associativity of cup product */ 63 | 64 | associative() = 65 | { 66 | local(AA, BB, CC, DD); 67 | AA = fill(a + b, c, p, r); 68 | BB = fill(a, b, r, s); 69 | CC = fill(a, b + c, p, s); 70 | DD = fill(b, c, p - s, r - s); 71 | return(AA + BB - CC - DD) 72 | } 73 | 74 | associative 75 | 76 | 77 | /* The graded commutativity of cup product */ 78 | 79 | chi(t) = 80 | { 81 | return (t*(t + 1)/2) 82 | } 83 | 84 | commutative() = 85 | { 86 | local(AA, BB, CC, DD); 87 | AA = fill(n, m, p, r) + (n - r)*(m - (p - r)); 88 | BB = n*m + chi(p) + fill(m, n, p, p - r) + chi(r) + chi(p -r); 89 | return(AA - BB) 90 | } 91 | 92 | commutative 93 | -------------------------------------------------------------------------------- /scripts/tag_up.py: -------------------------------------------------------------------------------- 1 | from functions import * 2 | 3 | from sys import argv 4 | if not len(argv) == 3: 5 | print() 6 | print("This script needs exactly two arguments") 7 | print("namely the path to the stacks project") 8 | print("and the stem of the tex file") 9 | print() 10 | raise Exception('Wrong arguments') 11 | 12 | path = argv[1] 13 | path.rstrip("/") 14 | path = path + "/" 15 | 16 | name = argv[2] 17 | 18 | def replace_newtheorem(line): 19 | if line.find("\\newtheorem{") == 0: 20 | line = line.replace("]{", "]{\\href{https://stacks.math.columbia.edu/tag/\\TAG}{",1) 21 | line = line.rstrip() 22 | return line + "}\n" 23 | if line.find("\\documentclass") == 0: 24 | line = line.replace("\\documentclass", "\\documentclass[oneside]") 25 | return line 26 | return line 27 | 28 | 29 | 30 | # File preamble.tex is a special case and we do it separately 31 | if name == "preamble": 32 | tex_file = open(path + name + ".tex", 'r') 33 | for line in tex_file: 34 | print(replace_newtheorem(line), end = '') 35 | 36 | version = git_version(path) 37 | 38 | from datetime import date 39 | now = date.today() 40 | 41 | print("\\usepackage{marginnote}") 42 | print("\\renewcommand*{\\marginfont}{\\normalfont}") 43 | 44 | print("\\date{This is a chapter of the Stacks Project, version " + version + ", compiled on " + now.strftime('%h %d, %Y.}')) 45 | 46 | tex_file.close() 47 | 48 | from sys import exit 49 | exit() 50 | 51 | 52 | 53 | 54 | tags = get_tags(path) 55 | 56 | label_tags = dict((tags[n][1], tags[n][0]) for n in range(0, len(tags))) 57 | 58 | if name == "book": 59 | tex_file = open(path + "tmp/" + name + ".tex", 'r') 60 | else: 61 | tex_file = open(path + name + ".tex", 'r') 62 | 63 | document = 0 64 | verbatim = 0 65 | for line in tex_file: 66 | 67 | # Check for verbatim 68 | verbatim = verbatim + beginning_of_verbatim(line) 69 | if verbatim: 70 | if end_of_verbatim(line): 71 | verbatim = 0 72 | print(line, end = '') 73 | continue 74 | 75 | # Do stuff in preamble or just after \begin{document} 76 | if not document: 77 | if name == "book": 78 | line = replace_newtheorem(line) 79 | if line.find("\\begin{document}") == 0: 80 | print("\\usepackage{marginnote}") 81 | print("\\renewcommand*{\\marginfont}{\\normalfont}") 82 | print(line, end = '') 83 | if line.find("\\begin{document}") == 0: 84 | print("\\newcommand{\\TAG}{ZZZZ}") 85 | document = 1 86 | continue 87 | 88 | # labels all get hypertargets 89 | if is_label(line): 90 | short = find_label(line) 91 | if name == "book": 92 | label = short 93 | else: 94 | label = name + "-" + short 95 | print(line, end = '') 96 | # don't put in hypertarget if label does not have a tag 97 | if label in label_tags: 98 | print("\\hypertarget{" + label_tags[label] + "}{}") 99 | # there is a bug in marginnotes that eats subsection titles... 100 | if short.find("subsection") >= 0: 101 | line = tex_file.readline() 102 | print(line, end = '') 103 | line = tex_file.readline() 104 | print(line, end = '') 105 | print("\\reversemarginpar\\marginnote{" + label_tags[label] + "}") 106 | else: 107 | print("\\reversemarginpar\\marginnote{" + label_tags[label] + "}") 108 | continue 109 | 110 | # Lines with labeled environments 111 | if labeled_env(line): 112 | oldline = line 113 | line = tex_file.readline() 114 | short = find_label(line) 115 | if name == "book": 116 | label = short 117 | else: 118 | label = name + "-" + short 119 | if not label in label_tags: 120 | # ZZZZ is used as pointer to nonexistent tags 121 | print("\\renewcommand{\\TAG}{ZZZZ}") 122 | print(oldline, end = '') 123 | print(line, end = '') 124 | continue 125 | print("\\renewcommand{\\TAG}{" + label_tags[label] + "}") 126 | print(oldline, end = '') 127 | print(line, end = '') 128 | print("\\reversemarginpar\\marginnote{" + label_tags[label] + "}\\hypertarget{" + label_tags[label] + "}{}") 129 | continue 130 | 131 | if line.find("\\begin{reference}") == 0: 132 | print("\\normalmarginpar\\marginnote{") 133 | continue 134 | 135 | if line.find("\\end{reference}") == 0: 136 | print("}") 137 | continue 138 | 139 | print(line, end = '') 140 | 141 | tex_file.close() 142 | -------------------------------------------------------------------------------- /scripts/theta.gp: -------------------------------------------------------------------------------- 1 | p = 3 2 | 3 | /* 4 | We will use z and l as the variables, where l corresponds to what 5 | is called lambda in the text; then we have 6 | xi = z^p - l 7 | in this notation. 8 | */ 9 | 10 | /* 11 | This computes z^i xi^[n] 12 | */ 13 | monomial(t) = 14 | { 15 | local(i, n); 16 | i = t[1]; 17 | n = t[2]; 18 | return( z^i * (z^p - l)^n * (n!)^(-1)) 19 | } 20 | 21 | /* 22 | This finds the "leading coefficient" c in the expansion 23 | f = sum c_{i, n} z^i xi^[n] 24 | */ 25 | leading(f) = 26 | { 27 | local(d, c, i, n); 28 | if(f == 0, return([0, 0, 0])); 29 | d = poldegree(f, z); 30 | c = polcoeff(f, d, z); 31 | i = d % p; 32 | n = (d - i)/p; 33 | c = c * (n!); 34 | return([i, n, c]) 35 | } 36 | 37 | /* 38 | This function associates to a polynomial f in z and l 39 | the coefficients c_{i, n} such that 40 | f = sum c_{i, n} z^i xi^[n] 41 | */ 42 | decompose(f) = 43 | { 44 | local(t, u); 45 | t = leading(f); 46 | u = [t]; 47 | while(t[1] + t[2] > 0, 48 | f = f - t[3]*monomial(t); 49 | t = leading(f); 50 | u = concat(u, [t]); 51 | ); 52 | return(u) 53 | } 54 | 55 | /* 56 | This puts a sequence of coefficients c_{i, n} 57 | back into a polynomial in z and l. 58 | */ 59 | putback(u) = 60 | { 61 | local(f, j); 62 | f = 0; 63 | j = 1; 64 | while(j <= length(u), 65 | f = f + u[j][3]*monomial(u[j]); 66 | j = j + 1 67 | ); 68 | return(f) 69 | } 70 | 71 | /* 72 | Is each of the coefficients c_{i, n} p-adically integral? 73 | */ 74 | is_integral(u) = 75 | { 76 | local(j, c); 77 | j = 1; 78 | while(j <= length(u), 79 | c = u[j][3]; 80 | if(valuation(c, p) < 0, return(0)); 81 | j = j + 1 82 | ); 83 | return(1) 84 | } 85 | 86 | /* 87 | Our choice of theta. Have to use capitalized theta as 88 | theta already exits in pari/gp. 89 | */ 90 | Theta_monomial(t) = 91 | { 92 | local(j, m); 93 | j = t[1]; 94 | m = t[2]; 95 | if(j >= p, error("Power z too high.")); 96 | if(m == 0, return([[j + 1, 0, p*t[3]/(j + 1)], [0, 0, 0]])); 97 | if(j == p - 1, return([[0, m + 1, t[3]], [0, 0, 0]])); 98 | return( 99 | [[j + 1, m, p*t[3]/(j + 1 + p*m)], [j, m - 1, - t[3]*p*l/(j + 1 + p*m)]] 100 | ) 101 | } 102 | 103 | Theta(u) = 104 | { 105 | local(v, i, t, tt); 106 | v = []; 107 | i = 1; 108 | while(i <= length(u), 109 | t = u[i]; 110 | tt = Theta_monomial(t); 111 | while(tt[2][3], 112 | v = concat(v, [tt[1]]); 113 | t = tt[2]; 114 | tt = Theta_monomial(t) 115 | ); 116 | v = concat(v, [tt[1]]); 117 | i = i + 1 118 | ); 119 | return(v) 120 | } 121 | 122 | /* 123 | Tests decompose and putback 124 | */ 125 | test_decompose_putback(m) = 126 | { 127 | local(i, j); 128 | i = 0; 129 | while(i <= p*m, 130 | if(z^i - putback(decompose(z^i)), error("Problem with code!")); 131 | i = i + 1 132 | ); 133 | i = 0; 134 | while(i <= p - 1, 135 | j = 0; 136 | while(j <= m, 137 | if(z^i * (z^p - l)^j/(j!) - putback([[i, j, 1]]), 138 | error("Problem with code!")); 139 | j = j + 1 140 | ); 141 | i = i + 1 142 | ) 143 | } 144 | 145 | /* 146 | Tests that theta indeed is an right inverse to differentiation 147 | with respect to z. 148 | */ 149 | test_theta(m) = 150 | { 151 | local(i, j, u, n, c, k); 152 | i = 0; 153 | while(i <= p - 1, 154 | j = 0; 155 | while(j <= m, 156 | if(p*putback([[i, j, 1]]) - 157 | deriv(putback(Theta([[i, j, 1]])), z), 158 | error("Problem with code!")); 159 | /* Test formula for theta in paper. */ 160 | if((i < p - 1) && (j > 0), 161 | u = Theta([[i, j, 1]]); 162 | n = 1; 163 | while(n <= length(u), 164 | if(u[n][1] <> i + 1, 165 | error("Problem with code!")); 166 | if(u[n][2] <> j - n + 1, 167 | error("Problem with code!")); 168 | c = (-1)^(n + 1)*l^(n - 1)*p^n; 169 | c = c/prod(k = 1, n, i + 1 + p*(j - k + 1)); 170 | if(u[n][3] <> c, 171 | error("Problem with code!")); 172 | n = n + 1 173 | ) 174 | ); 175 | j = j + 1 176 | ); 177 | i = i + 1 178 | ) 179 | } 180 | 181 | /* 182 | Tests that theta indeed is an right inverse to differentiation 183 | with respect to z. 184 | */ 185 | test_integrality(m) = 186 | { 187 | local(i, j); 188 | i = 0; 189 | while(i <= p - 1, 190 | j = 0; 191 | while(j <= m, 192 | u = decompose(Theta(putback([[i, j, 1]]))); 193 | if(is_integral(u),, 194 | print("Not integral for [i, j] = [", i, "," j,"]"); 195 | print(u); 196 | ); 197 | j = j + 1 198 | ); 199 | i = i + 1 200 | ) 201 | } 202 | 203 | 204 | /* 205 | Print nonzero values of p - theta o partial_z on basis elements 206 | */ 207 | test_factor(m) = 208 | { 209 | local(i, j, t, f, g, u, v, h); 210 | i = 0; 211 | while(i <= p - 1, 212 | j = 0; 213 | while(j <= m, 214 | t = [i, j, 1]; 215 | f = p * putback([t]); 216 | g = putback([t]); 217 | h = deriv(g, z); 218 | u = decompose(h); 219 | v = Theta(u); 220 | h = putback(v); 221 | if(f - h, 222 | print(t); 223 | print(f - h) 224 | ); 225 | j = j + 1 226 | ); 227 | i = i + 1 228 | ) 229 | } 230 | 231 | 232 | /* 233 | Print nonzero values o 234 | (theta tensor 1) o d_1 - d_1 o theta 235 | on basis elements 236 | */ 237 | test_horizontal(m) = 238 | { 239 | local(i, j, t, f, g, u, v, h); 240 | i = 0; 241 | while(i <= p - 1, 242 | j = 0; 243 | while(j <= m, 244 | t = [i, j, 1]; 245 | f = putback([t]); 246 | g = deriv(f, l); 247 | u = decompose(g); 248 | v = Theta(u); 249 | h = putback(v); 250 | u = Theta([t]); 251 | f = putback(u); 252 | g = deriv(f, l); 253 | if(g - h, 254 | print(t); 255 | print(h - g) 256 | ); 257 | j = j + 1 258 | ); 259 | i = i + 1 260 | ) 261 | } 262 | 263 | -------------------------------------------------------------------------------- /scripts/web_book.py: -------------------------------------------------------------------------------- 1 | from functions import * 2 | 3 | # Preamble for the web-book to be parsed by plastex 4 | # All refs are internal in canonical form 5 | # documentclass book 6 | # load amsmath package for plastex 7 | # Ignore reference, slogan, history environments 8 | # Do not bother with multicol and xr-hyper packages 9 | def print_preamble(path): 10 | preamble = open(path + "preamble.tex", 'r') 11 | next(preamble) 12 | next(preamble) 13 | next(preamble) 14 | next(preamble) 15 | next(preamble) 16 | print("\\documentclass{book}") 17 | print("\\usepackage{amsmath}") 18 | for line in preamble: 19 | if line.find("%") == 0: 20 | continue 21 | if line.find("externaldocument") >= 0: 22 | continue 23 | if line.find("\\newenvironment{reference}") >= 0: 24 | continue 25 | if line.find("\\newenvironment{slogan}") >= 0: 26 | continue 27 | if line.find("\\newenvironment{history}") >= 0: 28 | continue 29 | if line.find("multicol")>= 0: 30 | continue 31 | if line.find("xr-hyper") >= 0: 32 | continue 33 | print(line, end = '') 34 | preamble.close() 35 | return 36 | 37 | path = get_path() 38 | 39 | print_preamble(path) 40 | 41 | print("\\begin{document}") 42 | print("\\begin{titlepage}") 43 | print("\\pagestyle{empty}") 44 | print("\\setcounter{page}{1}") 45 | print("\\centerline{\\LARGE\\bfseries Stacks Project}") 46 | print("\\vskip1in") 47 | print("\\noindent") 48 | print("\\centerline{") 49 | print_version(path) 50 | print("}") 51 | print("\\end{titlepage}") 52 | print_license_blurp(path) 53 | 54 | lijstje = list_text_files(path) 55 | 56 | parts = get_parts(path) 57 | 58 | ext = ".tex" 59 | for name in lijstje: 60 | if name in parts: 61 | print("\\part{" + parts[name][0] + "}") 62 | print("\\label{" + parts[name][1] + "}") 63 | 64 | filename = path + name + ext 65 | tex_file = open(filename, 'r') 66 | verbatim = 0 67 | for line in tex_file: 68 | verbatim = verbatim + beginning_of_verbatim(line) 69 | if verbatim: 70 | if end_of_verbatim(line): 71 | verbatim = 0 72 | if name != 'introduction': 73 | print(line, end = '') 74 | continue 75 | if line.find("\\input{preamble}") == 0: 76 | continue 77 | if line.find("\\begin{document}") == 0: 78 | continue 79 | if line.find("\\title{") == 0: 80 | line = line.replace("\\title{", "\\chapter{") 81 | if line.find("\\maketitle") == 0: 82 | continue 83 | if line.find("\\tableofcontents") == 0: 84 | continue 85 | if line.find("\\input{chapters}") == 0: 86 | continue 87 | if line.find("\\bibliography") == 0: 88 | continue 89 | if line.find("\\end{document}") == 0: 90 | continue 91 | if is_label(line): 92 | text = "\\label{" + name + "-" 93 | line = line.replace("\\label{", text) 94 | if contains_ref(line): 95 | line = replace_refs(line, name) 96 | print(line, end = '') 97 | 98 | tex_file.close() 99 | 100 | print("\\bibliography{my}") 101 | print("\\bibliographystyle{amsalpha}") 102 | print("\\end{document}") 103 | -------------------------------------------------------------------------------- /stacks-introduction.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | % OK, start here. 4 | % 5 | \begin{document} 6 | 7 | \title{Introducing Algebraic Stacks} 8 | 9 | \maketitle 10 | 11 | \phantomsection 12 | \label{section-phantom} 13 | 14 | \tableofcontents 15 | 16 | 17 | 18 | 19 | \section{Why read this?} 20 | \label{section-introduction} 21 | 22 | \noindent 23 | We give an informal introduction to algebraic stacks. The goal is to 24 | quickly introduce a simple language which you can use to think 25 | about local and global properties of your favorite moduli problem. 26 | Having done this it should be possible to ask yourself well-posed questions 27 | about moduli problems and to start solving them, whilst assuming a general 28 | theory exists. If you end up with an interesting result, 29 | you can go back to the general theory in the other parts of the stacks 30 | project and fill in the gaps as needed. 31 | 32 | \medskip\noindent 33 | The point of view we take here is close to the point of view taken in 34 | \cite{KatzMazur} and \cite{mumford_picard}. 35 | 36 | 37 | 38 | 39 | 40 | 41 | \section{Preliminary} 42 | \label{section-preliminary} 43 | 44 | \noindent 45 | Let $S$ be a scheme. An {\it elliptic curve} over $S$ is a triple 46 | $(E, f, 0)$ where $E$ is a scheme and $f : E \to S$ and $0 : S \to E$ 47 | are morphisms of schemes such that 48 | \begin{enumerate} 49 | \item $f : E \to S$ is proper, smooth of relative dimension $1$, 50 | \item for every $s \in S$ the fibre $E_s$ is a connected curve 51 | of genus $1$, i.e., $H^0(E_s, \mathcal{O})$ and $H^1(E_s, \mathcal{O})$ 52 | both are $1$-dimensional $\kappa(s)$-vector spaces, and 53 | \item $0$ is a section of $f$. 54 | \end{enumerate} 55 | Given elliptic curves $(E, f, 0)/S$ and $(E', f', 0')/S'$ a 56 | {\it morphism of elliptic curves over $a : S \to S'$} 57 | is a morphism $\alpha : E \to E'$ such that the diagram 58 | $$ 59 | \xymatrix{ 60 | E \ar[rr]_\alpha \ar[d]^f & & E' \ar[d]_{f'} \\ 61 | S \ar@/^5ex/[u]^0 \ar[rr]^a & & S' \ar@/_5ex/[u]_{0'} 62 | } 63 | $$ 64 | is commutative and the inner square is cartesian, in other words the 65 | morphism $\alpha$ induces an isomorphism $E \to S \times_{S'} E'$. 66 | We are going to define the stack of elliptic curves $\mathcal{M}_{1, 1}$. 67 | In the rest of the Stacks project we work out the method introduced in 68 | Deligne and Mumford's paper \cite{DM} which consists in presenting 69 | $\mathcal{M}_{1, 1}$ as a category endowed with a functor 70 | $$ 71 | p : \mathcal{M}_{1, 1} \longrightarrow \Sch, \quad 72 | (E, f, 0)/S \longmapsto S 73 | $$ 74 | This means you work with fibred categories over the categories of schemes, 75 | topologies, stacks fibred in groupoids, coverings, etc, etc. 76 | In this chapter we throw all of that out of the window and 77 | we think about it a bit differently -- probably closer to how the initiators 78 | of the theory started thinking about it themselves. 79 | 80 | 81 | \section{The moduli stack of elliptic curves} 82 | \label{section-moduli-elliptic-curves} 83 | 84 | \noindent 85 | Here is what we are going to do: 86 | \begin{enumerate} 87 | \item Start with your favorite category of schemes $\Sch$. 88 | \item Add a new symbol $\mathcal{M}_{1, 1}$. 89 | \item A morphism $S \to \mathcal{M}_{1, 1}$ {\bf is} an elliptic curve 90 | $(E, f, 0)$ over $S$. 91 | \item A diagram 92 | $$ 93 | \xymatrix{ 94 | S \ar[rr]_a \ar[rd]_{(E, f, 0)} & & S' \ar[ld]^{(E', F', 0')} \\ 95 | & \mathcal{M}_{1, 1} 96 | } 97 | $$ 98 | {\bf is} commutative if and only if there exists a morphism $\alpha : E \to E'$ 99 | of elliptic curves over $a : S \to S'$. We say $\alpha$ {\it witnesses} 100 | the commutativity of the diagram. 101 | \item Note that commutative diagrams glue as follows 102 | $$ 103 | \xymatrix{ 104 | S \ar[rrr]_a \ar[rrrd]_{(E, f, 0)} & & & 105 | S' \ar[d]_{(E', F', 0')} \ar[rrr]_{a'} & & & 106 | S'' \ar[llld]^{(E'', F'', 0'')} 107 | \\ 108 | & & & \mathcal{M}_{1, 1} 109 | } 110 | $$ 111 | because $\alpha' \circ \alpha$ witnesses the commutativity of the outer 112 | triangle if $\alpha$ and $\alpha'$ witness the commutativity of the left 113 | and right triangles. 114 | \item The composition 115 | $$ 116 | S \xrightarrow{a} S' \xrightarrow{(E', f', 0')} \mathcal{M}_{1, 1} 117 | $$ 118 | is given by $(E' \times_{S'} S, f' \times_{S'} S, 0' \times_{S'} S)$. 119 | \end{enumerate} 120 | At the end of this procedure we have enlarged the category $\Sch$ 121 | of schemes with exactly one object... 122 | 123 | \medskip\noindent 124 | Except that we haven't defined what a morphism from $\mathcal{M}_{1, 1}$ 125 | to a scheme $T$ is. The answer is that it 126 | is the weakest possible notion such that compositions make sense. 127 | Thus a morphism $F : \mathcal{M}_{1, 1} \to T$ 128 | is a rule which to every elliptic curve $(E, f, 0)/S$ associates a morphism 129 | $F(E, f, 0) : S \to T$ such that given any commutative diagram 130 | $$ 131 | \xymatrix{ 132 | S \ar[rr]_a \ar[rd]_{(E, f, 0)} & & S' \ar[ld]^{(E', F', 0')} \\ 133 | & \mathcal{M}_{1, 1} 134 | } 135 | $$ 136 | the diagram 137 | $$ 138 | \xymatrix{ 139 | S \ar[rr]_a \ar[rd]_{F(E, f, 0)} & & S' \ar[ld]^{F(E', F', 0')} \\ 140 | & T 141 | } 142 | $$ 143 | is commutative also. An example is the $j$-invariant 144 | $$ 145 | j : \mathcal{M}_{1, 1} \longrightarrow \mathbf{A}^1_{\mathbf{Z}} 146 | $$ 147 | which you may have heard of. Aha, so now we're done... 148 | 149 | \medskip\noindent 150 | Except, no we're not! We still have to define a notion of morphisms 151 | $\mathcal{M}_{1, 1} \to \mathcal{M}_{1, 1}$. This we do in exactly the 152 | same way as before, i.e., a morphism 153 | $F : \mathcal{M}_{1, 1} \to \mathcal{M}_{1, 1}$ 154 | is a rule which to every elliptic curve $(E, f, 0)/S$ associates 155 | another elliptic curve $F(E, f, 0)$ preserving commutativity of 156 | diagrams as above. However, since I don't know of a nontrivial example 157 | of such a functor, I'll just define the set of morphisms from 158 | $\mathcal{M}_{1, 1}$ to itself to consist of the identity for now. 159 | 160 | \medskip\noindent 161 | I hope you see how to add other objects to this enlarged category. 162 | Somehow it seems intuitively clear that given any ``well-behaved'' 163 | moduli problem we can perform the construction above and add an object 164 | to our category. In fact, much of modern day algebraic geometry takes 165 | place in such a universe where $\Sch$ is enlarged with countably many 166 | (explicitly constructed) moduli stacks. 167 | 168 | \medskip\noindent 169 | You may object that the category we obtain isn't a category because 170 | there is a ``vagueness'' about when diagrams commute and which combinations 171 | of diagrams continue to commute as we have to produce a witness 172 | to the commutativity. However, it turns out that this, the idea of having 173 | witnesses to commutativity, is a valid approach to $2$-categories! 174 | Thus we stick with it. 175 | 176 | 177 | 178 | 179 | 180 | 181 | \section{Fibre products} 182 | \label{section-fibre-products} 183 | 184 | \noindent 185 | The question we pose here is what should be the fibre product 186 | $$ 187 | \xymatrix{ 188 | & ? \ar@{..>}[rd] \ar@{..>}[ld] \\ 189 | S \ar[rd]_{(E, f, 0)} & & S' \ar[ld]^{(E', f', 0')} \\ 190 | & \mathcal{M}_{1, 1} 191 | } 192 | $$ 193 | The answer: A morphism from a scheme $T$ into $?$ should be a triple 194 | $(a, a', \alpha)$ where 195 | $a : T \to S$, $a' : T \to S'$ are morphisms of schemes 196 | and where $\alpha : E \times_{S, a} T \to E' \times_{S', a'} T$ is 197 | an isomorphism of elliptic curves over $T$. This makes sense 198 | because of our definition of composition and commutative diagrams 199 | earlier in the discussion. 200 | 201 | \begin{lemma}[Key fact] 202 | \label{lemma-key-fact} 203 | The functor $\Sch^{opp} \to \textit{Sets}$, 204 | $T \mapsto \{(a, a', \alpha)\text{ as above}\}$ 205 | is representable by a scheme $S \times_{\mathcal{M}_{1, 1}} S'$. 206 | \end{lemma} 207 | 208 | \begin{proof} 209 | Idea of proof. Relate this functor to 210 | $$ 211 | \mathit{Isom}_{S \times S'}(E \times S', S \times E') 212 | $$ 213 | and use Grothendieck's theory of Hilbert schemes. 214 | \end{proof} 215 | 216 | \begin{remark} 217 | \label{remark-diagonal} 218 | We have the formula 219 | $S \times_{\mathcal{M}_{1, 1}} S' = 220 | (S \times S') 221 | \times_{\mathcal{M}_{1, 1} \times \mathcal{M}_{1, 1}} 222 | \mathcal{M}_{1, 1}$. 223 | Hence the key fact is a property of the diagonal 224 | $\Delta_{\mathcal{M}_{1, 1}}$ of $\mathcal{M}_{1, 1}$. 225 | \end{remark} 226 | 227 | \noindent 228 | In any case the key fact allows us to make the following definition. 229 | 230 | \begin{definition} 231 | \label{definition-smooth} 232 | We say a morphism $S \to \mathcal{M}_{1, 1}$ is {\it smooth} if for every 233 | morphism $S' \to \mathcal{M}_{1, 1}$ the projection morphism 234 | $$ 235 | S \times_{\mathcal{M}_{1, 1}} S' \longrightarrow S' 236 | $$ 237 | is smooth. 238 | \end{definition} 239 | 240 | \noindent 241 | Note that this is compatible with the notion of a smooth morphism 242 | of schemes as the base change of a smooth morphism is smooth. 243 | Moreover, it is clear how to extend this definition to other properties 244 | of morphisms into $\mathcal{M}_{1, 1}$ (or your own favorite moduli stack). 245 | In particular we will use it below for {\it surjective} morphisms. 246 | 247 | 248 | 249 | 250 | 251 | \section{The definition} 252 | \label{section-definition} 253 | 254 | \noindent 255 | We'll formulate it as a definition and not as a result 256 | since we expect the reader to try out other cases (not just 257 | the stack $\mathcal{M}_{1, 1}$ and not just $\Sch$ the category of all 258 | schemes). 259 | 260 | \begin{definition} 261 | \label{definition-algebraic-stack} 262 | We say $\mathcal{M}_{1, 1}$ is an {\it algebraic stack} if and only if 263 | \begin{enumerate} 264 | \item We have descent for objects for the \'etale topology on $\Sch$. 265 | \item The key fact holds. 266 | \item there exists a surjective and smooth morphism 267 | $S \to \mathcal{M}_{1, 1}$. 268 | \end{enumerate} 269 | \end{definition} 270 | 271 | \noindent 272 | The first condition is a ``sheaf property''. We're going to spell it 273 | out since there is a technical point we should make. 274 | Suppose given a scheme $S$ and an \'etale covering $\{S_i \to S\}$ 275 | and morphisms $e_i : S_i \to \mathcal{M}_{1, 1}$ such that the diagrams 276 | $$ 277 | \xymatrix{ 278 | S_i \times_S S_j \ar[rd]_{e_i \circ \text{pr}_1} \ar[rr]_{\text{id}} & & 279 | S_i \times_S S_j \ar[ld]^{e_j \circ \text{pr}_2} \\ 280 | & \mathcal{M}_{1, 1} 281 | } 282 | $$ 283 | commute. The sheaf condition does {\it not} guarantee the existence of 284 | a morphism $e : S \to \mathcal{M}_{1, 1}$ in this situation. Namely, 285 | we need to pick witnesses $\alpha_{ij}$ for the diagrams above and 286 | require that 287 | $$ 288 | \text{pr}_{02}^*\alpha_{ik} = 289 | \text{pr}_{12}^*\alpha_{jk} \circ \text{pr}_{01}^*\alpha_{ij} 290 | $$ 291 | as witnesses over $S_i \times_S S_j \times_S S_k$. I think it is clear 292 | what this means... If not, then I'm afraid you'll have to read some of the 293 | material on categories fibred in groupoids, etc. In any case, the displayed 294 | equation is often called the {\it cocycle condition}. 295 | A more precise statement of the ``sheaf property'' is: given 296 | $\{S_i \to S\}$, $e_i : S_i \to \mathcal{M}_{1, 1}$ and witnesses 297 | $\alpha_{ij}$ satisfying the cocycle condition, there exists a unique 298 | (up to unique isomorphism) $e : S \to \mathcal{M}_{1, 1}$ with 299 | $e_i \cong e|_{S_i}$ recovering the $\alpha_{ij}$. 300 | 301 | \medskip\noindent 302 | As you can see even formulating a precise statement takes a bit of work. 303 | The proof of this ``sheaf property'' relies on a fundamental 304 | technique in algebraic geometry, namely descent theory. My suggestion 305 | is to initially simply accept the ``sheaf property'' holds, and see what 306 | it implies in practice. In fact, a certain amount of mental agility is 307 | required to boil the ``sheaf property'' down to a manageable statement 308 | that you can fit on a napkin. Perhaps the simplest variant which is 309 | already a bit interesting is the following: Suppose we have a 310 | finite Galois extension $L/K$ of fields with 311 | Galois group $G = \text{Gal}(L/K)$. Set $T = \Spec(L)$ and $S = \Spec(K)$. 312 | Then $\{T \to S\}$ is an \'etale covering. 313 | Let $(E, f, 0)$ be an elliptic curve over $L$. (Yes, this just means 314 | that $E \subset \mathbf{P}^2_L$ is given by a Weierstrass equation 315 | and $0$ is the usual point at infinity.) Denote 316 | $E_\sigma = E \times_{T, \Spec(\sigma)} T$ the base change. 317 | (Yes, this corresponds to applying $\sigma$ to the coefficients of the 318 | Weierstrass equation, or is it $\sigma^{-1}$?) Now, suppose moreover 319 | that for every $\sigma \in G$ we are given an isomorphism 320 | $$ 321 | \alpha_\sigma : E \longrightarrow E_\sigma 322 | $$ 323 | over $T$. The cocycle condition above means in this situation that 324 | $$ 325 | (\alpha_\tau)^\sigma \circ \alpha_\sigma = \alpha_{\tau\sigma} 326 | $$ 327 | for $\sigma, \tau \in G$. If you've ever done any group cohomology 328 | then this should be familiar. Anyway, the ``glueing'' condition on 329 | $\mathcal{M}_{1, 1}$ says that if you have a solution to this 330 | set of equations, then there exists an elliptic curve $E'$ over $S$ 331 | such that $E \cong E' \times_S T$ (it says a little bit more because 332 | it also tells you how to recover the $\alpha_\sigma$). 333 | 334 | \medskip\noindent 335 | Challenge: Can you prove this entirely using only elliptic curves 336 | defined in terms of Weierstrass equations? 337 | 338 | 339 | 340 | 341 | \section{A smooth cover} 342 | \label{section-smooth} 343 | 344 | \noindent 345 | The last thing we have to do is find a smooth cover of $\mathcal{M}_{1, 1}$. 346 | In fact, in some sense the existence of a smooth cover 347 | {\it implies}\footnote{This is a bit of a cheat because 348 | in checking the smoothness you have to prove something close to 349 | the key fact -- after all smoothness is defined in terms of 350 | fibre products. The advantage is that you only have to prove the existence 351 | of these fibre products in the case that on one side you have the morphism 352 | that you are trying to show provides the smooth cover.} the key fact! 353 | In the case of elliptic curves we use the Weierstrass equation to 354 | construct one. 355 | 356 | \medskip\noindent 357 | Set 358 | $$ 359 | W = \Spec(\mathbf{Z}[a_1, a_2, a_3, a_4, a_6, 1/\Delta]) 360 | $$ 361 | where $\Delta \in \mathbf{Z}[a_1, a_2, a_3, a_4, a_6]$ is a certain 362 | polynomial (see below). Set 363 | $$ 364 | \mathbf{P}_W^2 \supset E_W : 365 | zy^2 + a_1 xyz + a_3 yz^2 = x^3 + a_2x^2z + a_4xz^2 + a_6z^3. 366 | $$ 367 | Denote $f_W : E_W \to W$ the projection. Finally, denote $0_W : W \to E_W$ 368 | the section of $f_W$ given by $(0 : 1 : 0)$. It turns out that 369 | there is a degree $12$ homogeneous polynomial $\Delta$ in $a_i$ 370 | where $\deg(a_i) = i$ such that $E_W \to W$ is smooth. 371 | You can find it explicitly by computing partials of the 372 | Weierstrass equation -- of course you can also look it up. You can 373 | also use pari/gp to compute it for you. Here it is 374 | \begin{align*} 375 | \Delta & = -a_6a_1^6 + a_4a_3a_1^5 + ((-a_3^2 - 12a_6)a_2 + a_4^2)a_1^4 + \\ 376 | & (8a_4a_3a_2 + (a_3^3 + 36a_6a_3))a_1^3 + \\ 377 | & ((-8a_3^2 - 48a_6)a_2^2 + 8a_4^2a_2 + (-30a_4a_3^2 + 72a_6a_4))a_1^2 + \\ 378 | & (16a_4a_3a_2^2 + (36a_3^3 + 144a_6a_3)a_2 - 96a_4^2a_3)a_1 + \\ 379 | & (-16a_3^2 - 64a_6)a_2^3 + 16a_4^2a_2^2 + (72a_4a_3^2 + 288a_6a_4)a_2 + \\ 380 | & -27a_3^4 - 216a_6a_3^2 -64a_4^3 - 432a_6^2 381 | \end{align*} 382 | You may recognize the last two terms from the case 383 | $y^2 = x^3 + Ax + B$ having discriminant $-64A^3 - 432B^2 = -16(4A^3 + 27B^2)$. 384 | 385 | \begin{lemma} 386 | \label{lemma-Weierstrass-smooth-cover} 387 | The morphism $W \xrightarrow{(E_W, f_W, 0_W)} \mathcal{M}_{1, 1}$ is smooth 388 | and surjective. 389 | \end{lemma} 390 | 391 | \begin{proof} 392 | Surjectivity follows from the fact that every elliptic curve over a 393 | field has a Weierstrass equation. We give a rough sketch of one 394 | way to prove smoothness. Consider the sub group scheme 395 | $$ 396 | H = 397 | \left\{ 398 | \left( 399 | \begin{matrix} 400 | u^2 & s & 0 \\ 401 | 0 & u^3 & 0 \\ 402 | r & t & 1 403 | \end{matrix} 404 | \right) 405 | \middle| 406 | \begin{matrix} 407 | u\text{ unit} \\ 408 | s, r, t\text{ arbitrary} 409 | \end{matrix} 410 | \right\} 411 | \subset 412 | \text{GL}_{3, \mathbf{Z}} 413 | $$ 414 | There is an action $H \times W \to W$ of $H$ on the Weierstrass scheme $W$. 415 | To find the equations for this action write out what a coordinate change 416 | given by a matrix in $H$ does to the general Weierstrass equation. 417 | Then it turns out the following statements hold 418 | \begin{enumerate} 419 | \item any elliptic curve $(E, f, 0)/S$ has Zariski locally on $S$ 420 | a Weierstrass equation, 421 | \item any two Weierstrass equations for $(E, f, 0)$ differ (Zariski locally) 422 | by an element of $H$. 423 | \end{enumerate} 424 | Considering the fibre product 425 | $S \times_{\mathcal{M}_{1, 1}} W = 426 | \mathit{Isom}_{S \times W}(E \times W, S \times E_W)$ 427 | we conclude that this means that the morphism 428 | $W \to \mathcal{M}_{1, 1}$ is an $H$-torsor. 429 | Since $H \to \Spec(\mathbf{Z})$ is smooth, and since torsors 430 | over smooth group schemes are smooth we win. 431 | \end{proof} 432 | 433 | \begin{remark} 434 | \label{remark-quotient-stack} 435 | The argument sketched above actually shows that 436 | $\mathcal{M}_{1, 1} = [W/H]$ is a global quotient stack. 437 | It is true about 50\% of the time that an argument proving a moduli 438 | stack is algebraic will show that it is a global quotient stack. 439 | \end{remark} 440 | 441 | 442 | 443 | \section{Properties of algebraic stacks} 444 | \label{section-properties} 445 | 446 | \noindent 447 | Ok, so now we know that $\mathcal{M}_{1, 1}$ is an algebraic 448 | stack. What can we do with this? Well, it isn't so much the fact that it 449 | is an algebraic stack that helps us here, but more the point of view that 450 | properties of $\mathcal{M}_{1, 1}$ should be encoded in the properties 451 | of morphisms $S \to \mathcal{M}_{1, 1}$, i.e., in families of elliptic 452 | curves. We list some examples 453 | 454 | \medskip\noindent 455 | {\bf Local properties:} 456 | $$ 457 | \mathcal{M}_{1, 1} \to \Spec(\mathbf{Z})\text{ is smooth} 458 | \Leftrightarrow 459 | W \to \Spec(\mathbf{Z})\text{ is smooth} 460 | $$ 461 | {\bf Idea}. Local properties of an algebraic stack are encoded in the local 462 | properties of its smooth cover. 463 | 464 | \medskip\noindent 465 | {\bf Global properties:} 466 | $$ 467 | \begin{matrix} 468 | \mathcal{M}_{1, 1}\text{ is quasi-compact} \Leftarrow W\text{ is quasi-compact} 469 | \\ 470 | \mathcal{M}_{1, 1}\text{ is irreducible} \Leftarrow W\text{ is irreducible} 471 | \end{matrix} 472 | $$ 473 | {\bf Idea}. Some global properties of an algebraic stack can be read off 474 | from the corresponding property of a {\it suitable}\footnote{I suppose that 475 | it is possible an irreducible algebraic stack exists which doesn't have an 476 | irreducible smooth cover -- but if so it is going to be quite nasty!} 477 | smooth cover. 478 | 479 | \medskip\noindent 480 | {\bf Quasi-coherent sheaves:} 481 | $$ 482 | \QCoh(\mathcal{O}_{\mathcal{M}_{1, 1}}) = 483 | H\text{-equivariant quasi-coherent modules on }W 484 | $$ 485 | {\bf Idea}. On the one hand a quasi-coherent module on $\mathcal{M}_{1, 1}$ 486 | should correspond to a quasi-coherent sheaf $\mathcal{F}_{S, e}$ on $S$ 487 | for each morphism $e : S \to \mathcal{M}_{1, 1}$. In particular for the 488 | morphism $(E_W, f_W, 0_W) : W \to \mathcal{M}_{1, 1}$. Since this morphism is 489 | $H$-equivariant we see the quasi-coherent module $\mathcal{F}_W$ we obtain is 490 | $H$-equivariant. Conversely, given an $H$-equivariant module we can recover 491 | the sheaves $\mathcal{F}_{S, e}$ by descent theory starting with the 492 | observation that $S \times_{e, \mathcal{M}_{1, 1}} W$ is an $H$-torsor. 493 | 494 | \medskip\noindent 495 | {\bf Picard group:} 496 | $$ 497 | \Pic(\mathcal{M}_{1, 1}) = \Pic_H(W) = \mathbf{Z}/12\mathbf{Z} 498 | $$ 499 | {\bf Idea}. We have seen the first equality above. Note that 500 | $\Pic(W) = 0$ because the ring 501 | $\mathbf{Z}[a_1, a_2, a_3, a_4, a_6, 1/\Delta]$ 502 | has trivial class group. 503 | There is an exact sequence 504 | $$ 505 | \mathbf{Z}\Delta \to 506 | \Pic_H(\mathbf{A}^5_{\mathbf{Z}}) \to 507 | \Pic_H(W) \to 0 508 | $$ 509 | The middle group equals $\Hom(H, \mathbf{G}_m) = \mathbf{Z}$. 510 | The image $\Delta$ is $12$ because $\Delta$ has degree $12$. 511 | This argument is roughly correct, see \cite{PicM11}. 512 | 513 | \medskip\noindent 514 | {\bf \'Etale cohomology:} Let $\Lambda$ be a ring. 515 | There is a first quadrant spectral sequence 516 | converging to $H^{p + q}_\etale(\mathcal{M}_{1, 1}, \Lambda)$ 517 | with $E_2$-page 518 | $$ 519 | E_2^{p, q} = H_\etale^q(W \times H \times \ldots \times H, \Lambda) 520 | \quad(p\text{ factors }H) 521 | $$ 522 | {\bf Idea}. Note that 523 | $$ 524 | W \times_{\mathcal{M}_{1, 1}} W \times_{\mathcal{M}_{1, 1}} 525 | \ldots \times_{\mathcal{M}_{1, 1}} W 526 | = W \times H \times \ldots \times H 527 | $$ 528 | because $W \to \mathcal{M}_{1, 1}$ is a $H$-torsor. The spectral 529 | sequence is the {\v C}ech-to-cohomology spectral sequence for 530 | the smooth cover $\{W \to \mathcal{M}_{1, 1}\}$. For example we see that 531 | $H^0_\etale(\mathcal{M}_{1, 1}, \Lambda) = \Lambda$ because 532 | $W$ is connected, and $H^1_\etale(\mathcal{M}_{1, 1}, \Lambda) = 0$ 533 | because $H^1_\etale(W, \Lambda) = 0$ (of course this requires 534 | a proof). Of course, the smooth covering $W \to \mathcal{M}_{1, 1}$ may 535 | not be ``optimal'' for the computation of \'etale cohomology. 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | \input{chapters} 551 | 552 | \bibliography{my} 553 | \bibliographystyle{amsalpha} 554 | 555 | \end{document} 556 | -------------------------------------------------------------------------------- /tags/.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.log 6 | *.pdf 7 | *.ps 8 | *.out 9 | *.toc 10 | *.pyc 11 | *~ 12 | .* 13 | *.gz 14 | *.bz2 15 | *.funny 16 | -------------------------------------------------------------------------------- /tags/Makefile: -------------------------------------------------------------------------------- 1 | # Known suffixes. 2 | .SUFFIXES: .aux .bbl .bib .blg .dvi .htm .html .css .log .out .pdf .ps .tex \ 3 | .toc .foo .bar 4 | 5 | # Master list of stems of tex files in the project. 6 | # Should be the same as in the main Makefile 7 | # except that it includes the bibliography 8 | LIJST = introduction conventions sets categories \ 9 | topology sheaves sites stacks \ 10 | fields algebra brauer \ 11 | homology derived simplicial \ 12 | more-algebra smoothing \ 13 | modules sites-modules \ 14 | injectives cohomology sites-cohomology dga dpa sdga hypercovering \ 15 | schemes constructions properties morphisms coherent divisors limits \ 16 | varieties topologies descent perfect more-morphisms flat groupoids \ 17 | more-groupoids etale \ 18 | chow intersection pic weil \ 19 | adequate dualizing duality discriminant derham local-cohomology \ 20 | algebraization curves resolve models functors equiv \ 21 | pione etale-cohomology \ 22 | crystalline proetale relative-cycles more-etale trace \ 23 | spaces spaces-properties spaces-morphisms decent-spaces \ 24 | spaces-cohomology spaces-limits spaces-divisors spaces-over-fields \ 25 | spaces-topologies \ 26 | spaces-descent spaces-perfect spaces-more-morphisms \ 27 | spaces-flat spaces-groupoids spaces-more-groupoids bootstrap \ 28 | spaces-pushouts spaces-chow \ 29 | groupoids-quotients spaces-more-cohomology spaces-simplicial \ 30 | spaces-duality formal-spaces restricted spaces-resolve \ 31 | formal-defos defos cotangent examples-defos \ 32 | algebraic examples-stacks stacks-sheaves criteria artin quot \ 33 | stacks-properties stacks-morphisms stacks-limits \ 34 | stacks-cohomology stacks-perfect \ 35 | stacks-introduction stacks-more-morphisms stacks-geometry \ 36 | moduli moduli-curves \ 37 | examples exercises guide \ 38 | desirables coding obsolete bibliography 39 | 40 | # book is a special case 41 | LIJST_TAGS = $(LIJST) fdl index 42 | 43 | FOOS = $(patsubst %,%.foo,$(LIJST_TAGS)) 44 | BARS = $(patsubst %,%.bar,$(LIJST_TAGS)) 45 | PDFS = $(patsubst %,%.pdf,$(LIJST_TAGS)) 46 | 47 | PDFLATEX := ../latex.sh "pdflatex" 48 | 49 | .PHONY: all 50 | all: book.pdf $(PDFS) 51 | 52 | # We need the following to cancel the built-in rule for 53 | # dvi files (which uses tex not latex). 54 | %.dvi : %.tex 55 | 56 | # Make aux file 57 | %.foo: %.tex 58 | $(PDFLATEX) $* 59 | $(PDFLATEX) $* 60 | touch $*.foo 61 | 62 | # These do not get bibtexed 63 | index.bar: 64 | touch index.bar 65 | 66 | fdl.bar: 67 | touch fdl.bar 68 | 69 | # Make bbl file 70 | %.bar: %.foo 71 | bibtex $* 72 | touch $*.bar 73 | 74 | # Make pdf file from others 75 | %.pdf: %.tex %.bar $(FOOS) 76 | $(PDFLATEX) $* 77 | $(PDFLATEX) $* 78 | -------------------------------------------------------------------------------- /tags/initial_tags: -------------------------------------------------------------------------------- 1 | # List of current tags in the stacks project 2 | # Each line is of the form 3 | # tag,full_label 4 | # where full label is the label as it occurs in book.tex 5 | # this means that if you see a line 6 | # \label{lemma-separated} 7 | # in the file schemes.tex then the full_label is 8 | # schemes-lemma-separated 9 | 0000,introduction-section-phantom 10 | -------------------------------------------------------------------------------- /tags/latex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Latex command to use 4 | LATEX=$1 5 | 6 | # Stem of latex file 7 | STEM=$2 8 | 9 | # Current directory 10 | OLD=${PWD} 11 | 12 | # Temporary directory 13 | TMPD=`mktemp -d --tmpdir=../../tmp` 14 | 15 | # Symbolically link or copy files to temp dir 16 | # Common for both cases 17 | ln -s $OLD/$STEM.bbl $OLD/hyperref.cfg $OLD/$STEM.tex $TMPD 18 | cp $STEM.toc $TMPD 19 | 20 | # Different 21 | if [ "$STEM" == "book" ]; then 22 | ln -s $OLD/stacks-project-book.cls $TMPD; 23 | cp book.aux $TMPD 24 | else 25 | ln -s $OLD/preamble.tex $OLD/chapters.tex \ 26 | $OLD/stacks-project.cls $TMPD; 27 | cp *.aux $TMPD 28 | fi 29 | 30 | # pdflatex needs .out file 31 | if [ "$LATEX" == "pdflatex" ]; then 32 | cp $STEM.out $TMPD; 33 | fi 34 | 35 | # Latex the file in temporary directory 36 | # Exit without copying the results if there is a latex error. 37 | cd $TMPD 38 | $LATEX $STEM.tex 39 | if [ ! $? == 0 ]; then 40 | rm -rf $TMPD; 41 | exit 1; 42 | fi 43 | 44 | # Move newly created files back to stacks project directory 45 | mv $STEM.pdf $STEM.dvi $STEM.aux $STEM.toc $STEM.out $STEM.log $OLD 46 | 47 | # Remove temporary directory 48 | cd $OLD 49 | rm -rf $TMPD 50 | -------------------------------------------------------------------------------- /tags/tmp/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /tmp/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | --------------------------------------------------------------------------------