├── .github └── workflows │ └── main.yml ├── .gitignore ├── CONTRIBUTING.md ├── CONTRIBUTORS ├── Makefile ├── README.md ├── STYLE.md ├── _config.yml ├── ega0.tex ├── ega0 ├── ega0-1.tex ├── ega0-10.tex ├── ega0-11.tex ├── ega0-12.tex ├── ega0-13.tex ├── ega0-14.tex ├── ega0-2.tex ├── ega0-3.tex ├── ega0-4.tex ├── ega0-5.tex ├── ega0-6.tex ├── ega0-7.tex ├── ega0-8.tex └── ega0-9.tex ├── ega1.tex ├── ega1 ├── ega1-1.tex ├── ega1-10.tex ├── ega1-2.tex ├── ega1-3.tex ├── ega1-4.tex ├── ega1-5.tex ├── ega1-6.tex ├── ega1-7.tex ├── ega1-8.tex └── ega1-9.tex ├── ega2.tex ├── ega2 ├── ega2-1.tex ├── ega2-2.tex ├── ega2-3.tex ├── ega2-4.tex ├── ega2-5.tex ├── ega2-6.tex ├── ega2-7.tex └── ega2-8.tex ├── ega3.tex ├── ega3 ├── ega3-1.tex ├── ega3-2.tex ├── ega3-3.tex ├── ega3-4.tex ├── ega3-5.tex ├── ega3-6.tex └── ega3-7.tex ├── ega4.tex ├── ega4 ├── ega4-1.tex ├── ega4-10.tex ├── ega4-11.tex ├── ega4-12.tex ├── ega4-13.tex ├── ega4-14.tex ├── ega4-15.tex ├── ega4-16.tex ├── ega4-17.tex ├── ega4-18.tex ├── ega4-19.tex ├── ega4-2.tex ├── ega4-20.tex ├── ega4-20.tex.bak ├── ega4-21.tex ├── ega4-3.tex ├── ega4-4.tex ├── ega4-5.tex ├── ega4-6.tex ├── ega4-7.tex ├── ega4-8.tex └── ega4-9.tex ├── intro.tex ├── preamble-base.tex ├── preamble-web.tex ├── preamble.tex ├── ref.tex ├── scripts ├── README.md ├── add-auto-info.sh ├── make_book.py ├── make_web.py ├── tagger.py └── update-ega.sh ├── the.bib └── what.tex /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: PDF release 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | release: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Get latest code 11 | uses: actions/checkout@v2.3.2 12 | 13 | - name: Install TinyTeX 14 | uses: r-lib/actions/setup-tinytex@v2 15 | env: 16 | TINYTEX_INSTALLER: TinyTeX 17 | 18 | - name: Install LaTeX packages 19 | run: | 20 | tlmgr install aurical auxhook bigintcalc bitset cjk etoolbox geometry gettitlestring hycolor hyperref infwarerr intcalc kvdefinekeys kvoptions kvsetkeys letltxmacro ltxcmds marginnote mathpazo microtype pdfescape pdftexcmds refcount titlesec url xcolor 21 | 22 | - name: Build PDFs 23 | run: | 24 | make cleanforce && make all 25 | 26 | # - name: Upload PDF artifact 27 | # uses: actions/upload-artifact@v2 28 | # with: 29 | # name: pdf_file 30 | # path: pdfs/book.pdf 31 | 32 | - name: Set variables 33 | id: vars 34 | run: | 35 | echo "::set-output name=date::$(date +'%Y-%m-%d')" 36 | echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)" 37 | 38 | # - name: Download artifacts 39 | # uses: actions/download-artifact@v2 40 | # with: 41 | # name: pdf_file 42 | 43 | - name: Create release 44 | uses: softprops/action-gh-release@v1 45 | with: 46 | tag_name: ${{ steps.vars.outputs.date }}-${{ steps.vars.outputs.sha8 }} 47 | name: ${{ steps.vars.outputs.date }} (commit ${{ steps.vars.outputs.sha8 }}) 48 | draft: false 49 | prerelease: false 50 | files: | 51 | pdfs/book.pdf 52 | pdfs/ega0.pdf 53 | pdfs/ega1.pdf 54 | pdfs/ega2.pdf 55 | pdfs/ega3.pdf 56 | pdfs/ega4.pdf 57 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | 3 | ## Core latex/pdflatex auxiliary files: 4 | *.aux 5 | *.lof 6 | *.log 7 | *.lot 8 | *.fls 9 | *.out 10 | *.toc 11 | *.fmt 12 | *.fot 13 | *.cb 14 | *.cb2 15 | .*.lb 16 | *.sta 17 | 18 | ## Intermediate documents: 19 | *.dvi 20 | *.xdv 21 | 22 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 23 | *.bbl 24 | *.bcf 25 | *.blg 26 | *-blx.aux 27 | *-blx.bib 28 | *.run.xml 29 | 30 | ## Build tool auxiliary files: 31 | *.fdb_latexmk 32 | *.synctex 33 | *.synctex(busy) 34 | *.synctex.gz 35 | *.synctex.gz(busy) 36 | *.pdfsync 37 | 38 | ## Built files 39 | *.pdf 40 | .DS_STORE 41 | *.pyc 42 | book.tex 43 | *.paux 44 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## notes for contributors 2 | 3 | - please *do not* commit PDF files 4 | - please *do* read the style guide (`STYLE.md`) 5 | - if you have contributed, then add your name to `CONTRIBUTORS` 6 | 7 | ## resources for contributors 8 | 9 | - the notes [here](https://math.berkeley.edu/~mhaiman/math256-fall18-spring19/) are extremely helpful 10 | - reference for section titles [this](https://stacky.net/wiki/index.php?title=EGA_contents) 11 | - an excellent reference for math terms in French [here](http://www-users.math.umn.edu/~kwlan/documents/french-glossary.pdf) 12 | - another reference for math terms in French [here](https://ensiwiki.ensimag.fr/index.php?title=Lexique_scientifique_fran%C3%A7ais-anglais) 13 | - some chapters (I think just V and VI) have already been translated: [check here](https://webusers.imj-prg.fr/~leila.schneps/grothendieckcircle/pubtexts.php) 14 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | % current contributors (last name alphabetical order) 2 | % this file is read by scripts/make_book.py for building book.tex with contributors names. 3 | % also used for web version. 4 | 5 | Mateo Carmona 6 | Tim Holzschuh 7 | Tim Hosgood 8 | Ryan Keleti 9 | Thiago Solovera \& Nery 10 | Wayne Yang 11 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # modified from https://github.com/stacks/stacks-project 2 | # see scripts/README.md 3 | FILES = what intro ega0 ega1 ega2 ega3 ega4 ref 4 | TEX = $(patsubst %,%.tex,$(FILES)) 5 | PDFS = $(patsubst %,%.pdf,$(FILES)) 6 | PDFLATEX = pdflatex 7 | PDF_DIR = $(CURDIR)/pdfs 8 | WEBNAME = ega 9 | 10 | .PHONY: default 11 | default: $(TEX) 12 | @echo "make pdfs --- makes all pdfs" 13 | @echo "make book --- makes complete book pdf" 14 | @echo "make all --- make pdfs + make book" 15 | @echo "make auto --- make all, but for server" 16 | @echo "make clean --- clean up" 17 | @echo "make cleanaux --- clean up auxiliary files" 18 | @echo "make cleanforce --- clean up everything without prompt" 19 | 20 | .PHONY: pdfs 21 | pdfs: $(PDFS) 22 | 23 | %.pdf: %.tex 24 | $(PDFLATEX) $* 25 | $(PDFLATEX) $* 26 | if [ $* != what ]; then bibtex $*; fi 27 | $(PDFLATEX) $* 28 | $(PDFLATEX) $* 29 | mkdir -p $(PDF_DIR) 30 | mv $*.pdf $(PDF_DIR) 31 | 32 | $(FILES): %: %.pdf 33 | 34 | .PHONY: book 35 | book: 36 | python3 ./scripts/make_book.py $(CURDIR) 37 | $(PDFLATEX) book 38 | $(PDFLATEX) book 39 | bibtex book 40 | $(PDFLATEX) book 41 | $(PDFLATEX) book 42 | mkdir -p $(PDF_DIR) 43 | mv book.pdf $(PDF_DIR) 44 | 45 | .PHONY: cleanaux 46 | cleanaux: 47 | rm -f *.aux *.bbl *.blg *.log *.fdb_latexmk *.fls *.out *.toc 48 | 49 | .PHONY: clean 50 | clean: 51 | rm -f *.aux *.bbl *.blg *.log *.fdb_latexmk *.fls *.out *.toc 52 | if [ -f book.tex ]; then rm -i book.tex; fi 53 | for f in *.pdf; do if [ -f "$$f" ]; then rm -i *.pdf; fi; done 54 | if [ -d $(PDF_DIR) ]; then\ 55 | for f in $(PDF_DIR)/*.pdf; do\ 56 | if [ -f "$$f" ]; then rm -i $(PDF_DIR)/*.pdf; fi;\ 57 | break;\ 58 | done;\ 59 | rm -ir $(PDF_DIR);\ 60 | fi 61 | 62 | .PHONY: cleanforce 63 | cleanforce: 64 | rm -f *.aux *.bbl *.blg *.log *.fdb_latexmk *.fls *.out *.toc *.pdf book.tex *-auto.tex ega-web.* 65 | rm -rf $(PDF_DIR) 66 | rm -rf tags $(WEBNAME).* $(WEBNAME) 67 | 68 | .PHONY: all 69 | all: pdfs book 70 | 71 | .PHONY: auto 72 | auto: 73 | python3 ./scripts/make_book.py $(CURDIR) 74 | cp book.tex book-auto.tex 75 | sh ./scripts/add-auto-info.sh book-auto.tex 76 | mkdir -p $(PDF_DIR) 77 | $(PDFLATEX) book-auto 78 | $(PDFLATEX) book-auto 79 | bibtex book-auto 80 | $(PDFLATEX) book-auto 81 | $(PDFLATEX) book-auto 82 | mv book-auto.pdf $(PDF_DIR) 83 | for f in $(FILES); do\ 84 | cp "$$f".tex "$$f"-auto.tex;\ 85 | sh ./scripts/add-auto-info.sh "$$f"-auto.tex;\ 86 | $(PDFLATEX) "$$f"-auto;\ 87 | $(PDFLATEX) "$$f"-auto;\ 88 | bibtex "$$f"-auto;\ 89 | $(PDFLATEX) "$$f"-auto;\ 90 | $(PDFLATEX) "$$f"-auto;\ 91 | mv "$$f"-auto.pdf $(PDF_DIR);\ 92 | done 93 | rm -f *.aux *.bbl *.blg *.log *.fdb_latexmk *.fls *.out *.toc *-auto.tex 94 | 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EGA 2 | 3 | Community translation (French to English) of A. Grothendieck and J. Dieudonné's *Éléments de géométrie algébrique*. 4 | Désolé, Grothendieck. 5 | 6 | For discussion regarding this project, visit [#ega:matrix.org](https://matrix.to/#/#ega:matrix.org)! 7 | 8 | To compile, `make book`, `make pdfs`, or `make all`. 9 | 10 | 11 | ## PDFs 12 | 13 | The PDFs are automatically generated whenever any changes are made, and you can always find the latest version on the [releases page](https://github.com/ryankeleti/ega/releases). 14 | 15 | 16 | ## Current status 17 | 18 | **Summary:** 19 | 20 | - [x] EGA I preliminaries 21 | - [x] EGA I 22 | - [x] EGA II 23 | - [ ] EGA III preliminaries 24 | - [ ] EGA III 25 | - [ ] EGA IV preliminaries 26 | - [ ] EGA IV 27 | 28 | 29 | **Details:** 30 | Here is the current status of the translation, along with who is currently working on/has worked on which sections. (Page counts and percentages are usually just rough estimates). 31 | 32 | ### Introduction (EGA I) _(proofread by @thosgood)_ ![introstatus](https://img.shields.io/badge/-5%2F5-brightgreen) 33 | 34 | ### Preliminaries (EGA 0_I) _(proofread by @thosgood)_ ![EGA0(I)status](https://img.shields.io/badge/-70%2F70-brightgreen) 35 | 36 | 1. Rings of fractions _(@ryankeleti)_ 37 | 2. Irreducible spaces. Noetherian spaces _(@ryankeleti)_ 38 | 3. Supplement on sheaves _(@ryankeleti)_ 39 | 4. Ringed spaces _(@ryankeleti)_ 40 | 5. Quasi-coherent sheaves and coherent sheaves _(@ryankeleti)_ 41 | 6. Flatness _(@ryankeleti)_ 42 | 7. Adic rings _(@ryankeleti)_ 43 | 44 | ### Preliminaries (EGA 0_III) ![EGA0(III)status](https://img.shields.io/badge/-20%2F75-orange) 45 | 46 | + [x] 8. Representable functors _(@ryankeleti)_ 47 | + [x] 9. Constructible sets _(@ryankeleti)_ 48 | + [x] 10. Supplement on flat modules _(@thosgood)_ 49 | + [ ] 11. Supplement on homological algebra _(@ryankeleti, @wayneyang108)_ 50 | + [ ] 12. Supplement on sheaf cohomology (~25 pages) 51 | + [ ] 13. Projective limits in homological algebra (~10 pages) 52 | 53 | ### Preliminaries (EGA 0_IV) ![EGA0(IV)status](https://img.shields.io/badge/-5%2F215-red) 54 | 55 | + [x] (14-ε). Summary _(@thosgood)_ 56 | + [x] 14. Combinatorial dimension of a topological space _(@thosgood)_ 57 | + [ ] 15. M-regular and F-regular sequences (~10 pages) 58 | + [ ] 16. Dimension and depth of Noetherian local rings (~15 pages) 59 | + [ ] 17. Regular rings (~15 pages) 60 | + [ ] 18. Supplement on extensions of algebras (~20 pages) 61 | + [ ] 19. Formally smooth algebras and Cohen rings (~45 pages) 62 | + [ ] 20. Derivations and differentials (~35 pages) 63 | + [ ] 21. Differentials in rings of characteristic p (~30 pages) 64 | + [ ] 22. Differential criteria for smoothness and regularity (~30 pages) 65 | + [ ] 23. Japanese rings (~5 pages) 66 | 67 | ### The language of schemes (EGA I) _(proofread by @thosgood)_ ![EGAIstatus](https://img.shields.io/badge/-136%2F136-brightgreen) 68 | 69 | 0. Summary 70 | 1. Affine schemes _(@ryankeleti)_ 71 | 2. Preschemes and their morphisms _(@thosgood)_ 72 | 3. Products of preschemes _(@thosgood, @ryankeleti)_ 73 | 4. Subpreschemes and immersions _(@ryankeleti)_ 74 | 5. Reduced preschemes; separation condition _(@thosgood)_ 75 | 6. Finiteness conditions _(@thosgood)_ 76 | 7. Rational maps _(@thosgood)_ 77 | 8. Chevalley schemes _(@thosgood)_ 78 | 9. Supplement on quasi-coherent sheaves _(@thosgood)_ 79 | 10. Formal schemes _(@thosgood, @ryankeleti)_ 80 | 81 | ### Elementary global study of some classes of morphisms (EGA II) ![EGAIIstatus](https://img.shields.io/badge/-205%2F205-brightgreen) 82 | 83 | + [x] 0. Summary _(@ryankeleti / proofread by @thosgood)_ 84 | + [x] 1. Affine morphisms _(@ryankeleti)_ 85 | + [x] 2. Homogeneous prime spectra _(@thosgood)_ 86 | + [x] 3. Homogeneous prime spectrum of a sheaf of graded algebras _(@thosgood)_ 87 | + [x] 4. Projective bundles; Ample sheaves _(@thosgood)_ 88 | + [x] 5. Quasi-affine morphisms; quasi-projective morphisms; proper morphisms; projective morphisms _(@thosgood)_ 89 | + [x] 6. Integral morphisms and finite morphisms _(@thosgood)_ 90 | + [x] 7. Valuative criteria _(@thosgood)_ 91 | + [x] 8. Blowup schemes; based cones; projective closure _(@thosgood)_ 92 | + [x] Errata and addenda (list 1) _(@thosgood)_ 93 | 94 | ### Cohomological study of coherent sheaves (EGA III) ![EGAIIIstatus](https://img.shields.io/badge/-20%2F160-red) 95 | 96 | + [x] 0. Summary _(@thosgood / proofread by @thosgood)_ 97 | + [x] 1. Cohomology of affine schemes _(@ryankeleti)_ 98 | + [ ] 2. Cohomological study of projective morphisms (~15 pages) _(@thosgood)_ 99 | + [x] 3. Finiteness theorem for proper morphisms _(@ryankeleti)_ 100 | + [ ] 4. The fundamental theorem of proper morphisms. Applications (~30 pages) _(@calebji0)_ 101 | + [ ] 5. An existence theorem for coherent algebraic sheaves (~10 pages) 102 | + [ ] 6. Local and global Tor functors; Künneth formula (~40 pages) 103 | + [ ] 7. Base change for homological functors of sheaves of modules (~30 pages) 104 | + [x] 8. ~~The duality theorem for projective bundles~~ 105 | + [x] 9. ~~Relative cohomology and local cohomology; local duality~~ 106 | + [x] 10. ~~Relations between projective cohomology and local cohomology. Formal completion technique along a divisor~~ 107 | + [x] 11. ~~Global and local Picard groups~~ 108 | + [ ] Errata and addenda (list 2) 109 | 110 | ### Local study of schemes and their morphisms (EGA IV) ![EGAIVstatus](https://img.shields.io/badge/-53%2F825-red) 111 | 112 | + [x] 0. Summary _(@thosgood)_ 113 | + [ ] 1. Relative finiteness conditions. Constructible sets of preschemes (~30 pages) 114 | + [ ] 2. Base change and flatness (~30 pages) 115 | + [ ] 3. Associated prime cycles and primary decomposition (~15 pages) 116 | + [ ] 4. Change of base field for algebraic preschemes (~35 pages) 117 | + [ ] 5. Dimension, depth, and regularity of locally Noetherian preschemes (~50 pages) 118 | + [ ] 6. Flat morphisms of locally Noetherian preschemes (~50 pages) 119 | + [ ] 7. Relations between a local Noetherian ring and its completion. Excellent rings (~40 pages) 120 | + [ ] 8. Projective limits of preschemes (~50 pages) 121 | + [ ] 9. Constructible properties (~40 pages) 122 | + [ ] 10. Jacobson preschemes (~20 pages) 123 | + [ ] 11. Topological properties of finitely presented flat morphisms. Flatness criteria (~60 pages) 124 | + [ ] 12. Fibres of finitely presented flat morphisms (~15 pages) 125 | + [ ] 13. Equidimensional morphisms (~15 pages) 126 | + [ ] 14. Universally open morphisms (~25 pages) 127 | + [ ] 15. Fibres of a universally open morphism (~25 pages) 128 | + [x] 16. Differential invariants. Differentially smooth morphisms _(@solov-t)_ (~50 pages) 129 | + [ ] 17. Smooth morphisms, unramified morphisms, and étale morphisms _(@tholzschuh)_ (~55 pages) 130 | + [ ] 18. Supplement on étale morphisms. Henselian local rings and strictly local rings (~75 pages) 131 | + [ ] 19. Regular immersions and normal flatness (~40 pages) 132 | + [ ] 20. Meromorphic functions and pseudo-morphisms (~30 pages) 133 | + [ ] 21. Divisors (~75 pages) 134 | + [ ] Errata and addenda (list 3) 135 | 136 | 137 | ## To-do (incomplete) 138 | 139 | - check errata in EGA III and onwards 140 | - more consistent use of Proposition/Theorem/Definition/whatever in front of `\sref`s 141 | - lists of notation? 142 | - terminology indices? 143 | - hyperref links to equations (e.g. 3.3.9.1) 144 | - check for any `\unsure` commands in the source 145 | - check that all `\hyperref` references are found 146 | - when this is finished (?!) should we [assign a DOI?](https://guides.github.com/activities/citable-code/) 147 | - web version? (work in progress!) 148 | - more detailed style guidelines? (e.g. language, sentence construction, etc.) 149 | - link (M), (G), (T) references 150 | -------------------------------------------------------------------------------- /STYLE.md: -------------------------------------------------------------------------------- 1 | 2 | # Style Guide (WIP) 3 | 4 | ## General conventions 5 | 6 | ### Line break style 7 | 8 | A translated sentence is put on its own line. 9 | For example, if the source has a line like `Soient X un préschéma.`, write 10 | ```latex 11 | % ... text that came before this sentence ... 12 | Let $X$ be a prescheme. 13 | % ... text that comes after this sentence ... 14 | ``` 15 | 16 | If the line has a semicolon, i.e., `Soient X un préschéma; soient A un anneau.`, write 17 | ```latex 18 | % ... text that came before this sentence ... 19 | Let $X$ be a prescheme; 20 | let $A$ be a ring. 21 | % ... text that comes after this sentence ... 22 | ``` 23 | 24 | Separate paragraphs with a single blank line. 25 | 26 | Avoid using `\\` when possible. If necessary, for example inside an `align` environment, write 27 | ```latex 28 | ...\\ 29 | ... 30 | ``` 31 | i.e., end the line with the `\\`. 32 | 33 | 34 | ### Indentation style 35 | 36 | In the following, `␣` denotes a single blank space. 37 | 38 | **Do not use tabs**; instead, use 2 spaces (`␣␣`). Many editors have a setting for tabs to be inserted as a number of spaces. 39 | 40 | Place `\begin` and `\end` pairs on new lines: 41 | ```latex 42 | \begin{environment} 43 | Text text text. 44 | \end{environment} 45 | ``` 46 | 47 | If there is a nested environment, use the following format: 48 | ```latex 49 | \begin{environment1} 50 | ␣␣\begin{environment2} 51 | ␣␣... 52 | ␣␣\end{environment2} 53 | \end{environment1} 54 | ``` 55 | 56 | And so on: 57 | ```latex 58 | \begin{environment1} 59 | ␣␣\begin{environment2} 60 | ␣␣␣␣\begin{environment3} 61 | ␣␣␣␣... 62 | ␣␣␣␣\end{environment3} 63 | ␣␣\end{environment2} 64 | \end{environment1} 65 | ``` 66 | 67 | For `enumerate` environments, use the following format: 68 | ```latex 69 | \begin{enumerate} 70 | ␣␣\item ... 71 | ␣␣\item ... 72 | ␣␣... 73 | \end{enumerate} 74 | ``` 75 | 76 | If there is another sentence after an `\item`, use the following format: 77 | ```latex 78 | \begin{enumerate} 79 | ␣␣\item This is a sentence. 80 | ␣␣␣␣This is another sentence. 81 | ␣␣␣␣Another one? 82 | ␣␣\item ... 83 | ␣␣... 84 | \end{enumerate} 85 | ``` 86 | 87 | If an environment (e.g. a proof) begins directly with an `enumerate`, then precede it with `\medskip\noindent`, as in 88 | ```latex 89 | \begin{proof} 90 | \medskip\noindent 91 | \begin{enumerate} 92 | ... 93 | \end{enumerate} 94 | \end{proof} 95 | ``` 96 | 97 | 98 | For equations, write 99 | ```latex 100 | \[ 101 | ␣␣equation 102 | \] 103 | ``` 104 | 105 | If an equation needs a tag, write 106 | ```latex 107 | \[ 108 | \label{R.x.y.z.n} 109 | ␣␣equation 110 | ␣␣\tag{x.y.z.n} 111 | \] 112 | ``` 113 | where `x.y.z.n` is the tag, and `R` the volume number. 114 | 115 | ### Environment style 116 | 117 | The custom environment styles are split into two groups: 118 | 119 | - Italicised 120 | * `env` 121 | * `theorem` 122 | * `proposition` 123 | * `lemma` 124 | * `corollary` 125 | - Upright 126 | * `definition` 127 | * `example` 128 | * `examples` 129 | * `remark` 130 | * `remarks` 131 | * `notation` 132 | 133 | Use `env` for the general environments labeled `(x.y.z)` in the text. 134 | 135 | To write an environment, use the following format: 136 | ```latex 137 | \begin{env}[x.y.z] 138 | \label{R.x.y.z} 139 | ... 140 | \end{env} 141 | ``` 142 | Here, `x.y.z` refers to the label in the text denoted `(x.y.z)`. 143 | The `R` refers to the Roman numeral associated to the volume: 144 | * `0` for EGA 0 145 | * `I` for EGA I 146 | * `II` for EGA II 147 | * `III` for EGA III 148 | * `IV` for EGA IV 149 | 150 | Similarly for `theorem`, etc.: 151 | ```latex 152 | \begin{theorem}[x.y.z] 153 | \label{R.x.y.z} 154 | ... 155 | \end{theorem} 156 | ``` 157 | 158 | ### Proof enviroments 159 | 160 | Use 161 | ```latex 162 | \begin{proof} 163 | ... 164 | \end{proof} 165 | ``` 166 | for a proof environment (no `\label` needed). 167 | 168 | ### Oldpage 169 | 170 | Use 171 | ```latex 172 | \oldpage[R]{n} 173 | ``` 174 | to denote the page number in the original text. 175 | Here `R` represents the current volume's Roman numeral (as above), and `n` is the page of the original text. 176 | In the case of volumes with multiple parts (such as EGA IV, Part 1, etc.), use 177 | ```latex 178 | \oldpage[R-m]{n} 179 | ``` 180 | where `m` is the part number of volume `R`. 181 | Here `n` refers to the page numbering in part `m`, instead of the overall volume. 182 | 183 | Insert an `\oldpage` whenever the original text has a page transition (even mid-sentence). 184 | Always place `\oldpage` on a new line, and at the start of the line. 185 | 186 | For example, write 187 | ```latex 188 | Hi! Schemes 189 | \oldpage[II]{42} 190 | are cool. 191 | ``` 192 | if in EGA II, page 41 ends with `Hi! Schemes` and page 42 begins with `are cool.`. 193 | 194 | 195 | ## Available commands 196 | 197 | ### Font commands 198 | 199 | * `\sh` --- the sheaf font; use for general sheaves 200 | - example: `\sh{F}` for a sheaf F 201 | * `\bb` --- the bold font; use for "blackboard bold" type characters 202 | - example: `\bb{Z}` for the ring of integers 203 | * `\cat` --- the category font; use for general categories 204 | - example: `\cat{D}` for a category D 205 | - example: `\C` is defined to be `\cat{C}` for a category C 206 | 207 | ### Operators 208 | 209 | * `\rg` 210 | * `\gr` 211 | * `\Hom` 212 | * `\Proj` 213 | * `\Tor` 214 | * `\Ext` 215 | * `\Supp` 216 | * `\Ker` 217 | * `\Im` 218 | * `\Coker` 219 | * `\Spec` 220 | * `\Spf` 221 | * `\grad` 222 | * `\dimc` 223 | * `\codim` 224 | * `\id` 225 | 226 | #### Sheaf operators 227 | * `\shHom` 228 | * `\shProj` 229 | * `\shExt` 230 | * `\shGr` 231 | 232 | ### Category names 233 | * `\Set` --- the category of sets 234 | * `\CHom` --- a hom category, i.e. `\CHom(A, B)` 235 | 236 | ### Miscellaneous 237 | * `\vphi` --- phi `φ` 238 | * `\emp` --- empty set `∅` 239 | * `\dual` --- for the dual sheaf, i.e. `\dual{\sh{F}}` for Fv 240 | * `\rad` --- radical 241 | * `\nilrad` --- nilradical 242 | * `\setmin` --- set minus/difference 243 | * `\HH` --- cohomology H 244 | * `\CHH` --- Čech cohomology H 245 | * `\RR` --- right derived R 246 | * `\LL` --- left derived L 247 | * `\kres` --- residue field k 248 | * `\op` --- opposite category, i.e. `\cat{C}\op` for Cop 249 | * `\red` --- reduced, i.e. `X_\red` for Xred 250 | * `\supertilde` --- for when `\widetilde{}` is used as a subscript, i.e. `\sh{F}\supertilde` instead of `\sh{F}^\sim` (note the lack of `^`) 251 | * `\bullet` --- to be used instead of `*` when denoting a grading, e.g. `A_\bullet` instead of `A_*` for a graded module (but continue to use `*` for pushforward/pullback of sheaves, etc.) 252 | * `\widehat` and `\widetilde` --- to be used instead of `\hat` and `\tilde` (which have been redefined to mean this anyway) 253 | 254 | ## References 255 | 256 | Use `\sref` for references to other environments in the document. 257 | 258 | For example, within EGA R, to reference environment `(x.y.z)` from EGA R, use 259 | ```latex 260 | Here's a reference: \sref{R.x.y.z}... 261 | ``` 262 | 263 | Within EGA R, to reference environment `(x.y.z)` in a different volume EGA R', use 264 | ```latex 265 | Here's a reference: \sref[R']{R'.x.y.z}... 266 | ``` 267 | 268 | If you want to reference a listed item within an environment, i.e. `(i)` of `(x.y.z)`, use 269 | ```latex 270 | Here's a reference: \sref{R.x.y.z}[(i)] 271 | ``` 272 | 273 | The general syntax is 274 | ```latex 275 | \sref[R]{R.x.y.z}[...] 276 | ``` 277 | where `[R]` and `[...]` are optional. 278 | Here `R` denotes the Roman numeral corresponding to the EGA volume in which the reference is found. 279 | Inside `[...]`, one can write anything, such as `(i) and (v)`. 280 | 281 | Use `[R]` when referencing an environment outside the current volume. 282 | If the reference is within the current volume, omit the `[R]`. 283 | 284 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal 2 | show_downloads: true 3 | 4 | -------------------------------------------------------------------------------- /ega0.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | \begin{document} 4 | \title{Preliminaries (EGA 0)} 5 | \maketitle 6 | 7 | \phantomsection 8 | \label{section:ega0} 9 | 10 | \tableofcontents 11 | 12 | \addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}\textit{(From EGA I)}}{}{}} 13 | \input{ega0/ega0-1} 14 | \input{ega0/ega0-2} 15 | \input{ega0/ega0-3} 16 | \input{ega0/ega0-4} 17 | \input{ega0/ega0-5} 18 | \input{ega0/ega0-6} 19 | \input{ega0/ega0-7} 20 | \addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}\textit{(From EGA III)}}{}{}} 21 | \input{ega0/ega0-8} 22 | \input{ega0/ega0-9} 23 | \input{ega0/ega0-10} 24 | \input{ega0/ega0-11} 25 | \input{ega0/ega0-12} 26 | \input{ega0/ega0-13} 27 | \addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}\textit{(From EGA IV)}}{}{}} 28 | \input{ega0/ega0-14} 29 | 30 | \bibliography{the} 31 | \bibliographystyle{amsalpha} 32 | 33 | \end{document} 34 | 35 | -------------------------------------------------------------------------------- /ega0/ega0-12.tex: -------------------------------------------------------------------------------- 1 | \section{Supplement on sheaf cohomology} 2 | \label{section:0.12} 3 | 4 | \subsection{Cohomology of sheaves of modules on ringed spaces} 5 | \label{subsection:0.12.1} 6 | -------------------------------------------------------------------------------- /ega0/ega0-13.tex: -------------------------------------------------------------------------------- 1 | \section{Projective limits in homological algebra} 2 | \label{section:0.13} 3 | -------------------------------------------------------------------------------- /ega0/ega0-2.tex: -------------------------------------------------------------------------------- 1 | \section{Irreducible spaces. Noetherian spaces} 2 | \label{section:0.2} 3 | 4 | \subsection{Irreducible spaces} 5 | \label{subsection:0.2.1} 6 | 7 | \oldpage[0\textsubscript{I}]{21} 8 | \begin{env}[2.1.1] 9 | \label{0.2.1.1} 10 | We say that a topological space $X$ is \emph{irreducible} if it is nonempty and if it is not a union of two distinct closed subspaces of $X$. 11 | It is equivalent to say that $X\neq\emp$ and the intersection of two nonempty open sets (and consequently of a finite number of open sets) of $X$ is nonempty, or that every nonempty open set is everywhere dense, or that any closed set is \emph{rare}\footnote{[Trans] also known as \emph{nowhere dense}.}, or, lastly, that all open sets of $X$ are \emph{connected}. 12 | \end{env} 13 | 14 | \begin{env}[2.1.2] 15 | \label{0.2.1.2} 16 | For a subspace $Y$ of a topological space $X$ to be irreducible, it is necessary and sufficient that its closure $\overline{Y}$ be irreducible. 17 | In particular, any subspace which is the closure $\overline{\{x\}}$ of a singleton is irreducible; we will express the relation $y\in\overline{\{x\}}$ (equivalent to $\overline{\{y\}}\subset\overline{\{x\}}$) by saying that $y$ is a \emph{specialization of $x$} or that $x$ is a \emph{generalization of $y$}. 18 | When there exists, in an irreducible space $X$, a point $x$ such that $X=\overline{\{x\}}$, we will say that $x$ is a \emph{generic point of $X$}. 19 | Any nonempty open subset of $X$ then contains $x$, and any subspace containing $x$ has $x$ as a generic point. 20 | \end{env} 21 | 22 | \begin{env}[2.1.3] 23 | \label{0.2.1.3} 24 | Recall that a \emph{Kolmogoroff space} is a topological space $X$ satisfying the axiom of separation: 25 | \begin{enumerate} 26 | \item[({\em T}\textsubscript{0})] If $x\neq y$ are any two points of $X$, there is an open set containing one of the points $x$ and $y$, but not the other. 27 | \end{enumerate} 28 | 29 | If an irreducible Kolmogoroff space admits a generic point, it admits \emph{exactly} one, since a nonempty open set contains any generic point. 30 | 31 | Recall that a topological space $X$ is said to be \emph{quasi-compact} if, from any collection of open sets of $X$, one can extract a finite cover of $X$ (or, equivalently, if any decreasing filtered family of nonempty closed sets has a nonempty intersection). 32 | If $X$ is a quasi-compact space, then any nonempty closed subset $A$ of $X$ contains a \emph{minimal} nonempty closed set $M$, because the set of nonempty closed subsets of $A$ is inductive under the relation $\supset$; if, in addition, $X$ is a Kolmogoroff space, $M$ is necessarily a single point (or, as we say by abuse of language, is a \emph{closed point}). 33 | \end{env} 34 | 35 | \begin{env}[2.1.4] 36 | \label{0.2.1.4} 37 | In an irreducible space $X$, every nonempty open subspace $U$ is irreducible, and if $X$ admits a generic point $x$, $x$ is also a generic point of $U$. 38 | 39 | To prove this, let $(U_\alpha)$ be a cover (whose set of indices is nonempty) of a topological space $X$, consisting of nonempty open sets; if $X$ is irreducible, it is necessary and sufficient that $U_\alpha$ is irreducible for all $\alpha$, and that $U_\alpha\cap U_\beta\neq\emp$ for any $\alpha$, $\beta$. 40 | The condition is clearly necessary; to see that it is sufficient, it suffices to prove that if $V$ is a nonempty open subset of $X$, then $V\cap U_\alpha$ is nonempty for all $\alpha$, since then $V\cap U_\alpha$ is dense in $U_\alpha$ for all $\alpha$, and consequently $V$ is dense in $X$. 41 | Now there is at least one index $\gamma$ such that $V\cap U_\gamma\neq\emp$, so $V\cap U_\gamma$ is dense in $U_\gamma$, and as for all $\alpha$, $U_\alpha\cap V_\alpha\neq\emp$, we also have $V\cap U_\alpha\cap U_\gamma\neq\emp$. 42 | \end{env} 43 | 44 | \oldpage[0\textsubscript{I}]{22} 45 | \begin{env}[2.1.5] 46 | \label{0.2.1.5} 47 | Let $X$ be an irreducible space, and $f$ a continuous map from $X$ into a topological space $Y$. 48 | Then $f(X)$ is irreducible, and if $x$ is a generic point of $X$, then $f(x)$ is a generic point of $f(X)$ and hence also of $\overline{f(X)}$. 49 | In particular, if, in addition, $Y$ is irreducible and with a single generic point $y$, then for $f(X)$ to be everywhere dense, it is necessary and sufficient that $f(x)=y$. 50 | \end{env} 51 | 52 | \begin{env}[2.1.6] 53 | \label{0.2.1.6} 54 | Any irreducible subspace of a topological space $X$ is contained in a maximal irreducible subspace, which is necessarily closed. 55 | Maximal irreducible subspaces of $X$ are called the \emph{irreducible components} of $X$. 56 | If $Z_1$ and $Z_2$ are two irreducible components distinct from the space $X$, then $Z_1\cap Z_2$ is a closed \emph{rare} set in each of the subspaces $Z_1$, $Z_2$; in particular, if an irreducible component of $X$ admits a generic point \sref{0.2.1.2}, such a point cannot belong to any other irreducible component. 57 | If $X$ has only a \emph{finite} number of irreducible components $Z_i$ ($1\leq i\leq n$), and if, for each $i$, we put 58 | \erratum[II]{$U_i=\bigcup_{j\neq i}Z_j$}, then the $U_i$ are open, irreducible, disjoint, and their union is dense in $X$. 59 | Let $U$ be an open subset of a topological space $X$. 60 | If $Z$ is an irreducible subset of $X$ that intersects $U$, then $Z\cap U$ is open and dense in $Z$, thus irreducible; conversely, for any irreducible closed subset $Y$ of $U$, the closure $\overline{Y}$ of $Y$ in $X$ is irreducible and $\overline{Y}\cap U=Y$. 61 | We conclude that there is a \emph{bijective correspondence} between the irreducible components of $U$ and the irreducible components of $X$ which intersect $U$. 62 | \end{env} 63 | 64 | \begin{env}[2.1.7] 65 | \label{0.2.1.7} 66 | If a topological space $X$ is a union of a \emph{finite} number of irreducible closed subspaces $Y_i$, then the irreducible components of $X$ are the maximal elements of the set of the $Y_i$, because if $Z$ is an irreducible closed subset of $X$, then $Z$ is the union of the $Z\cap Y_i$, from which one sees that $Z$ must be contained in one of the $Y_i$. 67 | Let $Y$ be a subspace of a topological space $X$, and suppose that $Y$ has only a finite number of irreducible components $Y_i$, ($1\leq i\leq n$); then the closures $\overline{Y_i}$ in $X$ are the irreducible components of $Y$. 68 | \end{env} 69 | 70 | \begin{env}[2.1.8] 71 | \label{0.2.1.8} 72 | Let $Y$ be an irreducible space admitting a single generic point $y$. 73 | Let $X$ be a topological space, and $f$ a continuous map from $X$ to $Y$. 74 | Then, for any irreducible component $Z$ of $X$ intersecting $f^{-1}(y)$, $f(Z)$ is dense in $Y$. 75 | The converse is not necessarily true; however, if $Z$ has a generic point $z$, and if $f(Z)$ is dense in $Y$, then we must have $f(z)=y$ \sref{0.2.1.5}; in addition, $Z\cap f^{-1}(y)$ is then the closure of $\{z\}$ in $f^{-1}(y)$ and is therefore irreducible, and as an irreducible subset of $f^{-1}(y)$ containing $z$ is necessarily contained in $Z$ \sref{0.2.1.6}, $z$ is a generic point of $Z\cap f^{-1}(y)$. 76 | As any irreducible component of $f^{-1}(y)$ is contained in an irreducible component of $X$, we see that, if any irreducible component $Z$ of $X$ intersecting $f^{-1}(y)$ admits a generic point, then there is a \emph{bijective correspondence} between all these components and all the irreducible components $Z\cap f^{-1}(y)$ of $f^{-1}(y)$, the generic points of $Z$ being identical to those of $Z\cap f^{-1}(y)$. 77 | \end{env} 78 | 79 | \subsection{Noetherian spaces} 80 | \label{subsection:0.2.2} 81 | 82 | \oldpage[0\textsubscript{I}]{23} 83 | \begin{env}[2.2.1] 84 | \label{0.2.2.1} 85 | We say that a topological space $X$ is \emph{Noetherian} if the set of open subsets of $X$ satisfies the \emph{maximal} condition, or, equivalently, if the set of closed subsets of $X$ satisfies the \emph{minimal} condition. 86 | We say that $X$ is \emph{locally Noetherian} if each $x\in X$ admits a neighbourhood which is a Noetherian subspace. 87 | \end{env} 88 | 89 | \begin{env}[2.2.2] 90 | \label{0.2.2.2} 91 | Let $E$ be an ordered set satisfying the \emph{minimal} condition, and let $\mathbf{P}$ be a property of the elements of $E$ subject to the following condition: if $a\in E$ is such that for any $x= 6 | \def\setmin{-} % set minus 7 | \def\rad{\mathfrak{r}} % radical 8 | \def\nilrad{\mathfrak{N}} % nilradical 9 | \def\emp{\varnothing} % empty set 10 | \def\vphi{\phi} % for switching \phi and \varphi, change if needed 11 | \def\HH{\mathrm{H}} % cohomology H 12 | \def\CHH{\check{\HH}} % Čech cohomology H 13 | \def\RR{\mathrm{R}} % right derived R 14 | \def\LL{\mathrm{L}} % left derived L 15 | \def\dual#1{{#1}^\vee} % dual 16 | \def\kres{k} % residue field k 17 | \def\C{\cat{C}} % category C 18 | \def\op{^\cat{op}} % opposite category 19 | \def\Set{\cat{Set}} % category of sets 20 | \def\CHom{\cat{Hom}} % functor category 21 | \def\supertilde{{\,\widetilde{\,}\,}} % use \supertilde instead of ^\sim 22 | \def\GL{\bb{GL}} 23 | \def\bbGamma{\boldsymbol\Gamma} 24 | \def\red{\mathrm{red}} 25 | \def\rg{\operatorname{rg}} 26 | \def\gr{\operatorname{gr}} 27 | \def\Gr{\operatorname{Gr}} 28 | \def\Hom{\operatorname{Hom}} 29 | \def\Proj{\operatorname{Proj}} 30 | \def\Tor{\operatorname{Tor}} 31 | \def\Ext{\operatorname{Ext}} 32 | \def\Supp{\operatorname{Supp}} 33 | \def\Ker{\operatorname{Ker}} 34 | \def\Im{\operatorname{Im}} 35 | \def\Coker{\operatorname{Coker}} 36 | \def\Spec{\operatorname{Spec}} 37 | \def\Spf{\operatorname{Spf}} 38 | \def\grad{\operatorname{grad}} 39 | \def\dimc{\operatorname{dimc}} 40 | \def\codim{\operatorname{codim}} 41 | \def\id{\operatorname{id}} 42 | \def\Der{\operatorname{Der}} 43 | \def\Diff{\operatorname{Diff}} 44 | \def\Hyp{\operatorname{Hyp}} 45 | \def\Tr{\operatorname{Tr}} 46 | 47 | \renewcommand{\to}{\mathchoice{\longrightarrow}{\rightarrow}{\rightarrow}{\rightarrow}} 48 | \newcommand{\from}{\mathchoice{\longleftarrow}{\leftarrow}{\leftarrow}{\leftarrow}} 49 | \let\mapstoo\mapsto 50 | \renewcommand{\mapsto}{\mathchoice{\longmapsto}{\mapstoo}{\mapstoo}{\mapstoo}} 51 | \def\isoto{\simeq} % isomorphism 52 | \def\simto{\xrightarrow{\sim}} 53 | 54 | \renewcommand{\hat}[1]{\widehat{#1}} 55 | \renewcommand{\tilde}[1]{\widetilde{#1}} 56 | -------------------------------------------------------------------------------- /preamble-web.tex: -------------------------------------------------------------------------------- 1 | \documentclass{book} 2 | 3 | \usepackage{amssymb} 4 | \usepackage{amsmath} 5 | \usepackage{hyperref} 6 | \usepackage[all]{xy} 7 | \usepackage{enumerate} 8 | 9 | \theoremstyle{plain} 10 | \newtheorem{theorem}{Theorem}[subsection] 11 | \newtheorem{proposition}[theorem]{Proposition} 12 | \newtheorem{lemma}[theorem]{Lemma} 13 | \newtheorem{corollary}[theorem]{Corollary} 14 | 15 | \theoremstyle{definition} 16 | \newtheorem{env}[theorem]{---} 17 | \newtheorem{definition}[theorem]{Definition} 18 | \newtheorem{example}[theorem]{Example} 19 | \newtheorem{notation}[theorem]{Notation} 20 | 21 | \theoremstyle{remark} 22 | \newtheorem{remark}[theorem]{Remark} 23 | 24 | \input{preamble-base} 25 | 26 | \def\vphi{\varphi} 27 | \def\shHom{{\sh{H}\!\textit{om}\,}} % sheaf Hom 28 | \def\shProj{{\sh{P}\!\textit{roj}\,}} % sheaf Proj 29 | \def\shExt{{\sh{E}\!\textit{xt}\,}} % sheaf Ext 30 | \def\shGr{{\sh{G}\!\textit{r}\,}} % sheaf Gr 31 | \def\shDer{{\sh{D}\!\textit{er}\,}} % sheaf Der 32 | \def\shDiff{{\sh{D}\!\textit{iff}\,}} % sheaf Der 33 | \def\shAut{{\sh{A}\!\textit{ut}\,}} % sheaf Aut 34 | 35 | % for bold Greek letters 36 | \def\boldsymbol{\mathbf} 37 | 38 | % if unsure of a translation 39 | \def\unsure#1{#1 {(?)}} 40 | \def\completelyunsure{{(???)}} 41 | 42 | \def\sectionbreak{\[***\]} 43 | 44 | -------------------------------------------------------------------------------- /preamble.tex: -------------------------------------------------------------------------------- 1 | \documentclass[oneside]{amsart} 2 | 3 | \usepackage[all]{xy} 4 | \usepackage[T1]{fontenc} 5 | \usepackage{xstring} 6 | \usepackage{xparse} 7 | \usepackage{xr-hyper} 8 | \usepackage{xcolor} 9 | \definecolor{brightmaroon}{rgb}{0.76, 0.13, 0.28} 10 | \usepackage[linktocpage=true,colorlinks=true,hyperindex,citecolor=blue,linkcolor=brightmaroon]{hyperref} 11 | \usepackage[left=1.25in,right=1.25in,top=0.75in,bottom=0.75in]{geometry} 12 | %\usepackage[charter,greekfamily=didot]{mathdesign} 13 | %\usepackage{Baskervaldx} 14 | \usepackage{amssymb} 15 | \usepackage{mathrsfs} 16 | \usepackage{mathpazo} 17 | \linespread{1.05} 18 | 19 | \usepackage[nobottomtitles]{titlesec} 20 | \usepackage{marginnote} 21 | \usepackage{enumerate} 22 | \usepackage{longtable} 23 | \usepackage{aurical} 24 | \usepackage{microtype} 25 | 26 | \externaldocument[what-]{what} 27 | \externaldocument[intro-]{intro} 28 | \externaldocument[ega0-]{ega0} 29 | \externaldocument[ega1-]{ega1} 30 | \externaldocument[ega2-]{ega2} 31 | \externaldocument[ega3-]{ega3} 32 | \externaldocument[ega4-]{ega4} 33 | 34 | \newtheoremstyle{ega-env-style}% 35 | {}{}{\rmfamily}{}{\bfseries}{.}{ }{\thmnote{(#3)}}% 36 | 37 | \newtheoremstyle{ega-thm-env-style}% 38 | {}{}{\itshape}{}{\bfseries}{. --- }{ }{\thmname{#1}\thmnote{ (#3)}}% 39 | 40 | \newtheoremstyle{ega-defn-env-style}% 41 | {}{}{\rmfamily}{}{\bfseries}{. --- }{ }{\thmname{#1}\thmnote{ (#3)}}% 42 | 43 | \theoremstyle{ega-env-style} 44 | \newtheorem*{env}{---} 45 | 46 | \theoremstyle{ega-thm-env-style} 47 | \newtheorem*{theorem}{Theorem} 48 | \newtheorem*{proposition}{Proposition} 49 | \newtheorem*{lemma}{Lemma} 50 | \newtheorem*{corollary}{Corollary} 51 | 52 | \theoremstyle{ega-defn-env-style} 53 | \newtheorem*{definition}{Definition} 54 | \newtheorem*{example}{Example} 55 | \newtheorem*{examples}{Examples} 56 | \newtheorem*{remark}{Remark} 57 | \newtheorem*{remarks}{Remarks} 58 | \newtheorem*{notation}{Notation} 59 | 60 | % indent subsections, see https://tex.stackexchange.com/questions/177290/. 61 | % also make section titles bigger. 62 | % also add § to \thesection, https://tex.stackexchange.com/questions/119667/ and https://tex.stackexchange.com/questions/308737/. 63 | \makeatletter 64 | \def\l@subsection{\@tocline{2}{0pt}{2.5pc}{2.2pc}{}} 65 | \def\section{\@startsection{section}{1}% 66 | \z@{.7\linespacing\@plus\linespacing}{.5\linespacing}% 67 | {\normalfont\bfseries\Large\scshape\centering}} 68 | \renewcommand{\@seccntformat}[1]{% 69 | \ifnum\pdfstrcmp{#1}{section}=0\textsection\fi% 70 | \csname the#1\endcsname.~} 71 | \makeatother 72 | 73 | %\allowdisplaybreaks[1] 74 | %\binoppenalty=9999 75 | %\relpenalty=9999 76 | 77 | % for Chapter 0, Chapter I, etc. 78 | % credit for ZeroRoman https://tex.stackexchange.com/questions/211414/ 79 | % added into scripts/make_book.py 80 | %\newcommand{\ZeroRoman}[1]{\ifcase\value{#1}\relax 0\else\Roman{#1}\fi} 81 | %\renewcommand{\thechapter}{\ZeroRoman{chapter}} 82 | 83 | \def\mathcal{\mathscr} 84 | \input{preamble-base} 85 | 86 | \def\shHom{\sh{H}\textup{\kern-2.2pt{\Fontauri\slshape om}}} % sheaf Hom 87 | \def\shProj{\sh{P}\textup{\kern-2.2pt{\Fontauri\slshape roj}}} % sheaf Proj 88 | \def\shExt{\sh{E}\textup{\kern-2.2pt{\Fontauri\slshape xt}}} % sheaf Ext 89 | \def\shGr{\sh{G}\textup{\kern-2.2pt{\Fontauri\slshape r}}} % sheaf Gr 90 | \def\shDer{\sh{D}\,\textup{\kern-2.2pt{\Fontauri\slshape er}}} % sheaf Der 91 | \def\shDiff{\sh{D}\,\textup{\kern-2.2pt{\Fontauri\slshape if{}f}}\,} % sheaf Diff 92 | \def\shHomcont{\sh{H}\textup{\kern-2.2pt{\Fontauri\slshape om.\,cont}}} % sheaf Hom.cont 93 | \def\shAut{\sh{A}\textup{\kern-2.2pt{\Fontauri\slshape ut}}} % sheaf Aut 94 | 95 | % if unsure of a translation 96 | %\newcommand{\unsure}[2][]{\hl{#2}\marginpar{#1}} 97 | %\newcommand{\completelyunsure}{\unsure{[\ldots]}} 98 | \def\unsure#1{#1 {\color{red}(?)}} 99 | \def\completelyunsure{{\color{red}(???)}} 100 | 101 | % use to mark where original page starts 102 | \newcommand{\oldpage}[2][]{{\marginnote{\normalfont{\textbf{#1}~|~#2}}}\ignorespaces} 103 | \def\sectionbreak{\begin{center}***\end{center}} 104 | 105 | % for referencing environments. 106 | % use as \sref{chapter-number.x.y.z}, with optional args 107 | % for volume and indices, e.g. \sref[volume]{chapter-number.x.y.z}[i]. 108 | \NewDocumentCommand{\sref}{o m o}{% 109 | \IfNoValueTF{#1}% 110 | {\IfNoValueTF{#3}% 111 | {\hyperref[#2]{\normalfont{(\StrBehind{#2}{.})}}}% 112 | {\hyperref[#2]{\normalfont{(\StrBehind{#2}{.},~{#3})}}}}% 113 | {\IfNoValueTF{#3}% 114 | {\hyperref[#2]{\normalfont{(\textbf{#1},~\StrBehind{#2}{.})}}}% 115 | {\hyperref[#2]{\normalfont{(\textbf{#1},~\StrBehind{#2}{.},~{#3})}}}}% 116 | } 117 | 118 | % for marking changes following errata 119 | % use as \erratum[volume]{correction} to say where the erratum is given 120 | \newcommand{\erratum}[2][]{{#2}\marginpar{\footnotesize\textbf{Err}\textsubscript{#1}}} 121 | 122 | % for referencing equations, use as \eref{eq:chapter-number.x.y.z}. 123 | \newcommand{\eref}[1]{\hyperref[#1]{\normalfont{(\StrBehind{#1}{.})}}} 124 | 125 | -------------------------------------------------------------------------------- /ref.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | \begin{document} 4 | \title{} 5 | \maketitle 6 | 7 | \nocite{*} 8 | \bibliography{the} 9 | \bibliographystyle{amsalpha} 10 | 11 | \end{document} 12 | 13 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | These are mostly modified scripts from the [stacks project](https://github.com/stacks/stacks-project). 2 | For a copy of the license, see [here](https://github.com/stacks/stacks-project/blob/master/COPYING). 3 | 4 | The scripts I'm currently using to serve the website are very specialized for my system. 5 | If you are interested in how it's working, then please email me. 6 | 7 | 8 | -------------------------------------------------------------------------------- /scripts/add-auto-info.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # script to add build information to the TeX files before compiling them to PDFs. 5 | # information added: 6 | # - time built 7 | # - git commit hash (with link) 8 | # - source link 9 | # 10 | 11 | if [ $# != 1 ]; then 12 | echo "$0: must take one argument, the file to add to be modified." 13 | return 14 | fi 15 | 16 | DATE="$(date -u +"%F %H:%M %Z")" 17 | COMMIT="\\\href{https://github.com/ryankeleti/ega/commit/$(git rev-parse HEAD)}{$(git rev-parse --short HEAD)}" 18 | SOURCE="\\\href{https://github.com/ryankeleti/ega}{github.com/ryankeleti/ega}" 19 | TABLE="\\\begin{center}\\\texttt{\\\begin{tabular}{lcl}autobuild \& :: \& $DATE\\\\\\\\ git commit \& :: \& $COMMIT\\\\\\\\ source \& :: \& $SOURCE\\\end{tabular}}\\\end{center}" 20 | 21 | sed -i "s|\\\end{titlepage}|\\\vskip0.5in\\\noindent $TABLE \\\end{titlepage}|" "$1" 22 | sed -i "s|\\\maketitle|\\\maketitle\\\noindent $TABLE\\\vskip0.25in|" "$1" 23 | 24 | 25 | -------------------------------------------------------------------------------- /scripts/make_book.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # see README.md/COPYING.md. 3 | from sys import argv 4 | 5 | # get location of repo. 6 | def get_path(): 7 | if len(argv) < 2: 8 | print("\nThis script needs one argument, the path to the EGA directory.\n") 9 | raise Exception('Wrong arguments') 10 | return argv[1].rstrip("/") + "/" 11 | 12 | # list the stems of the TeX files in the project in the correct order. 13 | def list_text_files(path): 14 | with open(path + "Makefile", 'r') as f: 15 | for line in f: 16 | if line.find("FILES = ") == 0: 17 | break 18 | listf = "" 19 | while line.find("\\") >= 0: 20 | line = line.rstrip() 21 | line = line.rstrip("\\") 22 | listf += " " + line 23 | line = f.next() 24 | listf += " " + line 25 | listf = listf.replace("FILES = ", "") 26 | return listf.split() 27 | 28 | path = get_path() 29 | filename = "book.tex" 30 | with open(path + filename, 'w') as book: 31 | with open(path + "preamble.tex", 'r') as preamble: 32 | for line in preamble: 33 | if line.find("%") == 0: 34 | continue 35 | if line.find("externaldocument") >= 0: 36 | continue 37 | if line.find("xr-hyper") >= 0: 38 | line = line.replace("xr-hyper", "CJKutf8") 39 | if line.find("\\documentclass[oneside]") == 0: 40 | line = line.replace("[oneside]{amsart}", "[openany,oneside]{amsbook}") 41 | if line.find("\\documentclass") == 0: 42 | line = line.replace("{amsart}", "[openany,oneside]{amsbook}") 43 | book.write(line) 44 | book.write("\\newcommand{\\ZeroRoman}[1]{\\ifcase\\value{#1}\\relax 0\\else\\Roman{#1}\\fi}\n") 45 | book.write("\\renewcommand{\\thechapter}{\\ZeroRoman{chapter}}\n") 46 | book.write("\\begin{document}\n") 47 | book.write("\\begin{titlepage}\n") 48 | book.write("\\pagestyle{empty}\n") 49 | book.write("\\setcounter{page}{1}\n") 50 | book.write("\\centerline{\\LARGE\\bfseries \\'El\\'ements de g\\'eom\\'etrie alg\\'ebrique}\n") 51 | book.write("\\vskip0.5in\n") 52 | book.write("\\noindent\n") 53 | book.write("\\centerline{A.~Grothendieck and J.~Dieudonn\\'e}\n") 54 | book.write("\\centerline{Publications math\\'ematiques de l'I.H.\\'E.S}\n") 55 | book.write("\\vskip0.5in\n") 56 | book.write("\\noindent\n") 57 | book.write("\\centerline{\\bfseries Contributors}\n") 58 | book.write("\\centerline{") 59 | with open(path + "CONTRIBUTORS", 'r') as f: 60 | first = 1 61 | for line in f: 62 | if line.find("%") == 0: 63 | continue 64 | if len(line.rstrip()) == 0: 65 | continue 66 | contributor = line.rstrip() 67 | contributor = contributor.replace("(", "(\\begin{CJK}{UTF8}{min}") 68 | contributor = contributor.replace(")", "\\end{CJK})") 69 | if first: 70 | contributors = contributor 71 | first = 0 72 | continue 73 | contributors += ", " + contributor 74 | book.write(contributors) 75 | book.write("}\n") 76 | book.write("\\end{titlepage}\n") 77 | book.write("\\setcounter{tocdepth}{2}\n") 78 | book.write("\\tableofcontents\n") 79 | for name in list_text_files(path): 80 | with open(path + name + ".tex", 'r') as f: 81 | for line in f: 82 | if line.find("\\input{preamble}") == 0: 83 | continue 84 | if line.find("\\begin{document}") == 0: 85 | continue 86 | if line.find("\\title{What this is}") == 0: 87 | line = line.replace("\\title{What this is}", "\\chapter*{What this is}") 88 | if line.find("\\title{Introduction}") == 0: 89 | line = line.replace("\\title{Introduction}", "\\chapter*{Introduction}") 90 | if line.find("\\title{Preliminaries") == 0: 91 | line = line.replace("\\title{Preliminaries", "\\setcounter{chapter}{-1}\\chapter{Preliminaries") 92 | if line.find("\\title{") == 0: 93 | line = line.replace("\\title{", "\\chapter{") 94 | if line.find("\\chapter{}") == 0: 95 | line = "" 96 | if line.find("\\maketitle") == 0: 97 | continue 98 | if line.find("\\tableofcontents") == 0: 99 | continue 100 | if line.find("\\bibliography") == 0: 101 | continue 102 | if line.find("\\nocite{*}") == 0: 103 | continue 104 | if line.find("\\end{document}") == 0: 105 | continue 106 | book.write(line) 107 | book.write("\\bibliography{the}\n") 108 | book.write("\\bibliographystyle{amsalpha}\n") 109 | book.write("\\end{document}\n") 110 | 111 | -------------------------------------------------------------------------------- /scripts/make_web.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # see README.md/COPYING.md. 3 | import re 4 | 5 | out = "ega-web" 6 | 7 | # get location of repo. 8 | def get_path(): 9 | from sys import argv 10 | if not len(argv) == 2: 11 | print("\nThis script needs one argument, the path to the EGA directory.\n") 12 | raise Exception('Wrong arguments') 13 | return argv[1].rstrip("/") + "/" 14 | 15 | # list the stems of the TeX files in the project in the correct order. 16 | def list_text_files(path): 17 | with open(path + "Makefile", 'r') as f: 18 | for line in f: 19 | if line.find("FILES = ") == 0: 20 | break 21 | listf = "" 22 | while line.find("\\") >= 0: 23 | line = line.rstrip() 24 | line = line.rstrip("\\") 25 | listf += " " + line 26 | line = f.next() 27 | listf += " " + line 28 | listf = listf.replace("FILES = ", "") 29 | listf = listf.replace("what ", "") 30 | listf = listf.replace("intro ", "") 31 | return listf.split() 32 | 33 | def rm_oldpage(line): 34 | line = re.sub(r"\\oldpage{.*?}\n", "", line) 35 | line = re.sub(r"\\oldpage\[.*?]{.*?}\n", "", line) 36 | line = re.sub(r"\\oldpage{.*?}", "", line) 37 | line = re.sub(r"\\oldpage\[.*?]{.*?}", "", line) 38 | return line 39 | 40 | def convert_symb(line): 41 | line = re.sub(r"<", r"\\lt ", line) 42 | line = re.sub(r">", r"\\gt ", line) 43 | return line 44 | 45 | def convert_sref(line): 46 | line = re.sub(r"\\hyperref\[section:(.*?)\]{.*?}", r"\\ref{section:\1}", line) 47 | line = re.sub(r"\\hyperref\[subsection:(.*?)\]{.*?}", r"\\ref{subsection:\1}", line) 48 | line = re.sub(r"\\eref", r"\\ref", line) 49 | line = re.sub(r"\\sref\[.*?\]", r"\\sref", line) 50 | line = re.sub(r"\\sref{(.*?)}\[(.*?)\]", r"\\sref{\1}, (\2)", line) 51 | line = re.sub(r"\\sref", r"\\ref", line) 52 | return line 53 | 54 | def convert_sectioning(line): 55 | if line.find("\\title{Preliminaries") == 0: 56 | line = line.replace("\\title{Preliminaries", "\\setcounter{chapter}{-1}\\chapter{Preliminaries") 57 | line = re.sub(r"\\title{", r"\\chapter{", line) 58 | line = re.sub(r"\\chapter{}", "", line) 59 | return line 60 | 61 | path = get_path() 62 | with open(path + out + ".tex", 'w') as book: 63 | with open(path + "preamble-web.tex", 'r') as preamble: 64 | for line in preamble: 65 | if line.find("%") == 0: 66 | continue 67 | if line.find("\\input{") == 0: 68 | x = re.search("input{(.+?)}", line).group(1) 69 | with open(x + ".tex", 'r') as ff: 70 | for ffline in ff: 71 | book.write(ffline) 72 | continue 73 | book.write(line) 74 | book.write("\\begin{document}\n") 75 | for name in list_text_files(path): 76 | with open(path + name + ".tex", 'r') as f: 77 | for line in f: 78 | if line.find("%") == 0: 79 | continue 80 | if line.find("\\input{preamble}") == 0: 81 | continue 82 | if line.find("\\begin{document}") == 0: 83 | continue 84 | if line.find("\\maketitle") == 0: 85 | continue 86 | if line.find("\\tableofcontents") == 0: 87 | continue 88 | if line.find("\\bibliography") == 0: 89 | continue 90 | if line.find("\\nocite{*}") == 0: 91 | continue 92 | if line.find("\\end{document}") == 0: 93 | continue 94 | if line.find("longtable") >= 0: 95 | continue 96 | line = re.sub(r"~", " ", line) 97 | line = rm_oldpage(line) 98 | line = convert_symb(line) 99 | line = convert_sref(line) 100 | line = convert_sectioning(line) 101 | if line.find("\\input{") == 0: 102 | x = re.search("input{(.+?)}", line).group(1) 103 | with open(x + ".tex", 'r') as ff: 104 | for ffline in ff: 105 | ffline = re.sub(r"~", " ", ffline) 106 | ffline = rm_oldpage(ffline) 107 | ffline = convert_symb(ffline) 108 | ffline = convert_sref(ffline) 109 | ffline = convert_sectioning(ffline) 110 | if ffline.find("longtable") >= 0: 111 | continue 112 | book.write(ffline) 113 | continue 114 | book.write(line) 115 | book.write("\\bibliography{the}\n") 116 | book.write("\\bibliographystyle{amsalpha}\n") 117 | book.write("\\end{document}\n") 118 | 119 | -------------------------------------------------------------------------------- /scripts/tagger.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # modified from https://github.com/gerby-project/hello-world/tagger.py 3 | import re 4 | 5 | # no I, no O. 6 | CHARACTERS = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ" 7 | 8 | # get location of repo. 9 | def get_file(): 10 | from sys import argv 11 | if not len(argv) == 2: 12 | print("\nThis script needs one argument, the file to be tagged.\n") 13 | raise Exception('Wrong arguments') 14 | return argv[1].rstrip(".tex") 15 | 16 | FNAME = get_file() 17 | filenames = [FNAME + ".tex"] 18 | 19 | # convert integer to tag. 20 | def tobase(i): 21 | global CHARACTERS 22 | assert i >= 0 23 | if i < len(CHARACTERS): 24 | return CHARACTERS[i] 25 | else: 26 | return tobase(i // len(CHARACTERS)) + CHARACTERS[i % len(CHARACTERS)] 27 | 28 | def totag(i): 29 | return tobase(i).rjust(4, "0") 30 | 31 | # convert tag to integer. 32 | def toint(tag): 33 | global CHARACTERS 34 | return sum([CHARACTERS.index(tag[i]) * len(CHARACTERS)**(4-i-1) for i in range(4)]) 35 | 36 | tags = dict() 37 | labels = dict() 38 | inactive = [] 39 | try: 40 | with open("tags") as f: 41 | for line in f: 42 | # actual tag. 43 | if not line.startswith("#"): 44 | tags[line.split(",")[0]] = line.strip().split(",")[1] 45 | labels[line.strip().split(",")[1]] = line.strip().split(",")[0] 46 | # check for inactive tags too. 47 | elif len(line.split(",")) == 2 and len(line.split(",")[0]) == 4: 48 | inactive.append(line.split(",")[0]) 49 | except FileNotFoundError: 50 | pass 51 | 52 | # determine last assigned tag. 53 | try: 54 | last = toint(sorted(list(tags.keys()) + inactive)[-1]) 55 | except IndexError: 56 | last = -1 57 | 58 | i = last + 1 59 | for filename in filenames: 60 | with open(filename) as f: 61 | # do this line per line to deal with comments. 62 | for line in f: 63 | matches = re.findall("\\\\label{([^}]+)}", line.split("%")[0]) 64 | for label in matches: 65 | if not label in labels: 66 | tag = tobase(i).rjust(4, "0") 67 | print("%s,%s" % (tag, label)) 68 | i += 1 69 | 70 | -------------------------------------------------------------------------------- /scripts/update-ega.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # basic template I use for serving EGA PDFs. 4 | # change paths as needs, using absolute paths. 5 | # then crontab -e, and add the entry 6 | # 0 * * * * /path/to/script/update-ega.sh 7 | # make sure to chmod +x the script! 8 | 9 | set -x 10 | 11 | CDIR=/path/to/where/script/is 12 | EGA=$CDIR/ega 13 | SURL=/path/to/server/files/ega 14 | 15 | if [ ! -d "$EGA" ]; then 16 | git clone https://github.com/ryankeleti/ega.git "$EGA" 17 | fi 18 | 19 | cd "$EGA" || return 20 | git fetch 21 | if [ "$(git rev-parse HEAD)" != "$(git rev-parse @{u})" ]; then 22 | git pull 23 | make auto 24 | mv "$EGA"/pdfs/book-auto.pdf "$SURL"/book-auto.pdf 25 | mv "$EGA"/pdfs/what-auto.pdf "$SURL"/what-auto.pdf 26 | mv "$EGA"/pdfs/intro-auto.pdf "$SURL"/intro-auto.pdf 27 | mv "$EGA"/pdfs/ega0-auto.pdf "$SURL"/ega0-auto.pdf 28 | mv "$EGA"/pdfs/ega1-auto.pdf "$SURL"/ega1-auto.pdf 29 | mv "$EGA"/pdfs/ega2-auto.pdf "$SURL"/ega2-auto.pdf 30 | mv "$EGA"/pdfs/ega3-auto.pdf "$SURL"/ega3-auto.pdf 31 | mv "$EGA"/pdfs/ega4-auto.pdf "$SURL"/ega4-auto.pdf 32 | mv "$EGA"/pdfs/ref-auto.pdf "$SURL"/ref-auto.pdf 33 | fi 34 | 35 | cat < "$SURL"/index.html 36 | 37 | 38 | 39 | 40 | 41 | ega files 42 | 43 | 44 |

last updated :: $(date).

45 |

git hash :: $(cd $EGA && git rev-parse HEAD).

46 |

source files :: github.com/ryankeleti/ega.

47 |

Full document.

48 |

What this is.

49 |

Introduction.

50 |

EGA 0.

51 |

EGA I.

52 |

EGA II.

53 |

EGA III.

54 |

EGA IV.

55 |

References.

56 |

return to site home.

57 | 58 | 59 | KITTY 60 | 61 | -------------------------------------------------------------------------------- /the.bib: -------------------------------------------------------------------------------- 1 | @misc{I-1, 2 | author = {H. Cartan and C. Chevalley}, 3 | title = {S\'eminaire de l'\'Ecole Normale Sup\'erieure, 8th year (1955--56), G\'eom\'etrie alg\'ebrique}} 4 | 5 | @book{I-2, 6 | author = {H. Cartan and S. Eilenberg}, 7 | title = {Homological {A}lgebra}, 8 | publisher = {Princeton Math. Series (Princeton University Press)}, 9 | year = {1956}} 10 | 11 | @article{I-3, 12 | author= {W. L. Chow and J. Igusa}, 13 | title = {Cohomology theory of varieties over rings}, 14 | journal = {Proc. Nat. Acad. Sci. U.S.A.}, 15 | volume = {XLIV}, 16 | pages = {1244--1248}, 17 | year = {1958}} 18 | 19 | @book{I-4, 20 | author = {R. Godement}, 21 | title = {Th\'eorie des faisceaux}, 22 | publisher = {Actual. Scient. et Ind., no. 1252, Paris (Hermann)}, 23 | year = {1958}} 24 | 25 | @misc{I-5, 26 | author = {H. Grauert}, 27 | title = {Ein {T}heorem der analytischen {G}arbentheorie und die {M}oldulr\"aume komplexer {S}trukturen}, 28 | howpublished = {Publ. Math. Inst. Hautes \'Etudes Scient., no. 5}, 29 | year = {1960}} 30 | 31 | @article{I-6, 32 | author = {A. Grothendieck}, 33 | title = {Sur quelques points d'alg\`ebre homologique}, 34 | journal = {T\^ohoku Math. Journ.}, 35 | volume = {IX}, 36 | pages = {119--221}, 37 | year = {1957}} 38 | 39 | @article{I-7, 40 | author = {A. Grothendieck}, 41 | title = {Cohomology theory of abstract algebraic varieties}, 42 | journal = {Proc. Intern. Congress of Math., Edinburgh}, 43 | pages = {103--118}, 44 | year = {1958}} 45 | 46 | @misc{I-8, 47 | author = {A. Grothendieck}, 48 | title = {G\'eom\'etrie formelle et g\'eom\'etrie alg\'ebrique}, 49 | howpublished = {S\'eminaire Bourbaki, 11th year (1958--59), expos\'e 182}} 50 | 51 | @article{I-9, 52 | author = {M. Nagata}, 53 | title = {A general theory of algebraic geometry over {D}edekind domains}, 54 | journal = {Amer. Math. Journ.}, 55 | volume = {I: LXXVIII, II: LXXX}, 56 | pages= {78--116, 382--420}, 57 | year= {1956, 1958}} 58 | 59 | @book{I-10, 60 | author = {D. G. Northcott}, 61 | title = {Ideal theory}, 62 | publisher = {Cambridge Univ. Press}, 63 | year = {1953}} 64 | 65 | @misc{I-11, 66 | author = {P. Samuel}, 67 | title = {Commutative algebra (Notes by {D}. {H}erzig)}, 68 | publisher = {Cornell Univ.}, 69 | year = {1953}} 70 | 71 | @book{I-12, 72 | author = {P. Samuel}, 73 | title = {Alg\`ebre locale}, 74 | publisher = {M\'em. Sci. Math., no. 123, Paris}, 75 | year = {1953}} 76 | 77 | @book{I-13, 78 | author = {P. Samuel and O. Zariski}, 79 | title = {Commutative algebra, 2 vol.}, 80 | publisher = {New York (Van Nostrand)}, 81 | year = {1958--60}} 82 | 83 | @article{I-14, 84 | author = {J.-P. Serre}, 85 | title = {Faisceaux alg\'ebriques coh\'erents}, 86 | journal = {Ann. of Math.}, 87 | volume = {LXI}, 88 | pages = {197--278}, 89 | year = {1955}} 90 | 91 | @article{I-15, 92 | author = {J.-P. Serre}, 93 | title = {Sur la cohomologie des vari\'et\'es alg\'ebriques}, 94 | journal = {Journ. of Math. (9)}, 95 | volume = {XXXVI}, 96 | pages = {1--16}, 97 | year = {1957}} 98 | 99 | @article{I-16, 100 | author = {J.-P. Serre}, 101 | title = {G\'eom\'etrie alg\'ebrique and g\'eom\'etrie analytique}, 102 | journal = {Ann. Inst. Fourier}, 103 | volume = {VI}, 104 | pages = {1--42}, 105 | year = {1955--56}} 106 | 107 | @article{I-17, 108 | author = {J.-P. Serre}, 109 | title = {Sur la dimension homologique des anneaux et des modules {N}oeth\'eriens}, 110 | journal = {Proc. Intern. Symp. on Alg. Number theory, Tokyo--Nikko}, 111 | pages = {176--189}, 112 | year = {1955}} 113 | 114 | @book{I-18, 115 | author = {A. Weil}, 116 | title = {Foundations of algebraic geometry}, 117 | publisher = {Amer. Math. Soc. Coll. Publ., no. 29}, 118 | year = {1946}} 119 | 120 | @article{I-19, 121 | author = {A. Weil}, 122 | title = {Numbers of solutions of equations in finite fields}, 123 | journal = {Bull. Amer. Math. Soc.}, 124 | volume = {LV}, 125 | pages = {497--508}, 126 | year = {1949}} 127 | 128 | @book{I-20, 129 | author = {O. Zariski}, 130 | title = {Theory and applications of holomorphic functions on algebraic varieties over arbitrary ground fields}, 131 | publisher = {Mem. Amer. Math. Soc., no. 5}, 132 | year = {1951}} 133 | 134 | @article{I-21, 135 | author = {O. Zariski}, 136 | title = {A new proof of {H}ilbert's {N}ullstellensatz}, 137 | journal = {Bull. Amer. Math. Soc.}, 138 | volume = {LIII}, 139 | pages = {362--368}, 140 | year = {1947}} 141 | 142 | @article{I-22, 143 | author = {E. K{\"a}hler}, 144 | title = {Geometria {A}rithmetica}, 145 | journal = {Ann. di Mat. (4)}, 146 | volume = {XLV}, 147 | pages = {1--368}, 148 | year = {1958}} 149 | 150 | @book{II-23, 151 | author = {C. Chevalley}, 152 | title = {Introduction to the theory of algebraic functions of one variable}, 153 | publisher = {Amer. Math. Soc., New York}, 154 | series = {Math. Surveys}, 155 | volume = {6}, 156 | year = {1951}} 157 | 158 | @book{II-24, 159 | author = {P. Jaffard}, 160 | title = {Les syst{\`e}mes d'id{\'e}aux}, 161 | publisher = {Paris (Dunod)}, 162 | year = {1960}} 163 | 164 | @article{II-25, 165 | author = {M. Nagata}, 166 | title = {On the derived normal rings of Noetherian integral domains}, 167 | journal = {Mem. Coll. Sci. Kyoto}, 168 | volume = {A, XXIX}, 169 | year = {1955}, 170 | pages = {293--303}} 171 | 172 | @article{II-26, 173 | author = {M. Nagata}, 174 | title = {Existence theorems for non projective complete algebraic varieties}, 175 | journal = {Ill. J. Math}, 176 | volume = {II}, 177 | year = {1958}, 178 | pages = {490--498}} 179 | 180 | @phdthesis{III-27, 181 | author = {P. Gabriel}, 182 | title = {Des cat\'egories ab\'eliennes}, 183 | school = {Paris}, 184 | year = {1961}} 185 | 186 | @article{III-28, 187 | author = {J. E. Roos}, 188 | title = {Sur les foncteurs d\'eriv\'es de $\varprojlim$. Applications}, 189 | journal = {C. R. Acad. Sci. Paris}, 190 | volume = {CCLII}, 191 | pages = {3702--3704}, 192 | year = {1961}} 193 | 194 | @misc{III-29, 195 | author = {H. Cartan}, 196 | title = {S\'eminaire de l'\'Ecole Normale Sup\'erieure, 13th year (1960--61), expos\'e no 11}} 197 | 198 | @book{IV-30, 199 | author = {M. Nagata}, 200 | title = {Local rings}, 201 | publisher = {Interscience, New York}, 202 | series = {Interscience Tracts}, 203 | volume = {13}, 204 | year = {1962}} 205 | 206 | @misc{IV-42, 207 | author = {M. Demazure et A. Grothendieck}, 208 | title = {Sch\'emas en groupes}, 209 | publisher = {Institut des Hautes \'Etudes Scientifiques, Bures-sur-Yvette}, 210 | series = {S\'eminaire de G\'eometrie alg\'ebrique}, 211 | year = {1963--1964}} 212 | -------------------------------------------------------------------------------- /what.tex: -------------------------------------------------------------------------------- 1 | \input{preamble} 2 | 3 | \begin{document} 4 | \title{What this is} 5 | \maketitle 6 | 7 | \phantomsection 8 | \label{section:what} 9 | 10 | \noindent 11 | \emph{This whole chapter is written by the translators.} 12 | 13 | \bigskip 14 | 15 | \noindent 16 | This is a community translation of Alexander Grothendieck's and Jean Dieudonn\'e's \emph{\'El\'ements de g\'eom\'etrie alg\'ebrique}~(EGA). 17 | As it is a work in progress by multiple people, there will probably be a few mistakes---if you spot any then please do \href{https://github.com/ryankeleti/ega/issues}{let us know}\footnote{\url{https://github.com/ryankeleti/ega/issues}}. 18 | 19 | \noindent 20 | To contribute, please visit 21 | \begin{center} 22 | \url{https://github.com/ryankeleti/ega}. 23 | \end{center} 24 | 25 | \noindent 26 | \emph{On est d\'esol\'es, Grothendieck.} 27 | 28 | \section*{In defense of a translation} 29 | 30 | From \href{https://en.wikipedia.org/wiki/Alexander_Grothendieck\#Retirement_into_reclusion_and_death}{Wikipedia}\footnote{\url{https://en.wikipedia.org/wiki/Alexander_Grothendieck\#Retirement_into_reclusion_and_death}}: 31 | 32 | \begin{quote} 33 | In January 2010, Grothendieck wrote the letter ``D\'eclaration d'intention de non-publication'' to Luc Illusie, claiming that all materials published in his absence have been published without his permission. 34 | He asks that none of his work be reproduced in whole or in part and that copies of this work be removed from libraries.\footnote{\href{https://sbseminar.wordpress.com/2010/02/09/grothendiecks-letter/}{Grothendieck's letter}. \emph{Secret Blogging Seminar.} 9~February 2010. Retrieved 3~September 2019.} 35 | [...] 36 | This order may have been reversed later in 2010.\footnote{\href{https://web.archive.org/web/20160629235119/http://www.math.u-psud.fr/~laszlo/sga4.html}{R\'e\'edition des SGA}. Archived from the original on 29~June 2016. Retrieved 12~November 2013.} 37 | \end{quote} 38 | 39 | It is a matter of often heated contention as to whether or not any translation of Grothendieck's work should take place, given his extremely explicit views on the matter. 40 | By no means do we mean to argue that somehow Grothendieck's wishes should be invalidated or ignored, nor do we wish to somehow twist his earlier words around in order to justify what we have done: we fully accept that he himself would probably have branded this project ``an abomination''. 41 | With this in mind, it remains to explain why we have gone ahead anyway. 42 | 43 | First, and possibly foremost, it does not make sense (to us) for an individual to own the rights to knowledge. 44 | Arguments can be made about how the EGA is the product of years and years of intense work by Grothendieck (and Dieudonn\'{e}, amongst others), and so \emph{this} is something that he `owns' and has full control over. 45 | Indeed, it is true that there are almost innumerably many sentences in these works that only Grothendieck himself could have engineered, but, in translation, we have never improved anything, but only (regrettably, but almost certainly) worsened. 46 | The work in these pages is that of Grothendieck; we have been not much more than typesetters and eager readers. 47 | However, there is some important point to be made about the fact that Grothendieck collaborated and worked with many other incredibly proficient mathematicians during the writing of this treatise; although it is impossible to pinpoint which parts exactly others may have contributed (and by no means do we wish to imply that any of this work is derivative or fraudulent in any way whatsoever---EGA was written \emph{by Grothendieck}) it seems fair that, in some amount, there are bits of the EGAs that `belong' to a broader collection of minds. 48 | 49 | It is a very good idea here to repeat the oft-quoted aphorism: ``the work here is not ours, but any mistakes are''---it is very understandable for an author to not want their name on something that they have not themselves written, or, at the very least, read. 50 | This may be, in part, a reason for Grothendieck's wishes, but that is pure speculation. 51 | Even so, we include this above disclaimer. 52 | 53 | Secondly, then, we note that the French version of EGA is still entirely readily accessible. 54 | Anybody reading these copies who is not a native French speaker, will probably be translating at least some part of EGA into English in their head, or into their notebooks, as they read. 55 | This document is just the product of a few people doing exactly that, but then passing on their efforts to make things just that little bit easier for anyone else who follows. 56 | 57 | Lastly, to quote another adage, ``the guilty person is often the loudest''. 58 | If it seems like we are over-eager to defend ourselves because we know that we are somehow in the wrong, it is because we are, at least partially. 59 | Working on this translation has meant going against Grothendieck's explicit requests, and for that we are sorry. 60 | We only hope that the freedom of knowledge is an excusable defense. 61 | 62 | \section*{Notes from the translators} 63 | 64 | Grothendieck's writing style in EGA is quite particular, most notably for its long sentence structure. 65 | As translators, we have tried to give the best possible approximation of this style in English, resisting the temptation to ``streamline'' things in places where the language is more dense than usual. 66 | 67 | \sectionbreak 68 | 69 | \unsure{Any translations about which we are not entirely sure will be marked with a}. 70 | 71 | \sectionbreak 72 | 73 | Whenever a note is made by the translators, it will be prefaced by ``[Trans.]''. 74 | 75 | \sectionbreak 76 | 77 | Along the margins we have provided the page numbers corresponding to the original text (of the first edition), as published by \emph{Publications math\'ematiques de l'I.H.\'E.S.}, where the EGA were published as the following volumes:\footnote{PDFs of which can be found online, hosted by the \emph{Grothendieck circle}.} 78 | \begin{enumerate} 79 | \item[--] EGA~I (\emph{tome 4, 1960}) 80 | \item[--] EGA~II (\emph{tome 8, 1961}) 81 | \item[--] EGA~III, part 1 (\emph{tome 11, 1961}) 82 | \item[--] EGA~III, part 2 (\emph{tome 17, 1963}) 83 | \item[--] EGA~IV, part 1 (\emph{tome 20, 1964}) 84 | \item[--] EGA~IV, part 2 (\emph{tome 24, 1965}) 85 | \item[--] EGA~IV, part 3 (\emph{tome 28, 1966}) 86 | \item[--] EGA~IV, part 4 (\emph{tome 32, 1967}). 87 | \end{enumerate} 88 | 89 | Due to EGA being a collection of volumes (one non-preliminary chapter, or part of a chapter, per volume), the page numbers reset at every new chapter. 90 | In addition, the preliminary section is stretched out over multiple volumes. 91 | To combat this, we label the pages as 92 | \begin{center} 93 | \textbf{X}~|~$p$, 94 | \end{center} 95 | referring to Chapter~X, page $p$. 96 | For EGA~III and IV, which are split across multiple chapters, we label the pages as 97 | \begin{center} 98 | \textbf{X-$n$}~|~$p$, 99 | \end{center} 100 | referring to Chapter~X, part~$n$, page $p$. 101 | In the case of the preliminaries (which are often collectively referred to as EGA~0), the preliminaries from Chapter~Y are denoted as \textbf{0\textsubscript{Y}}. 102 | 103 | \sectionbreak 104 | 105 | Later volumes (EGA~II, III, and IV) include errata for earlier chapters. 106 | Where possible, we have used these to `update' our translation, and entirely replace whatever mistakes might have been in the original copies of EGA~I and II. 107 | If the change is minor (e.g. `intersection' replacing `inter-section') then we will not mention it; if it is anything more fundamental (e.g. $X'$ replacing $X$) then we will include some margin note on the relevant line detailing the location of the erratum (e.g. \textbf{Err}\textsubscript{II} to denote that the correction is listed in the Errata section of EGA~II). 108 | 109 | \section*{EGA~IV sections} 110 | \label{section:what-ega4-sections} 111 | 112 | In EGA~IV-1, the summary included a tentative list of section that EGA~IV would contain. 113 | As EGA~IV was written, \textsection5, \textsection7, and \textsection\textsection11--21 would contain different sections than initially envisaged. 114 | We include the original listing here: 115 | \begin{longtable}{ll} 116 | \textsection5. & Dimension and depth for preschemes.\\ 117 | \textsection7. & Application to the relations between a local Noetherian ring and its completion. Excellent rings.\\ 118 | \textsection11. & Topological properties of finitely presented flat morphisms. Local flatness criteria.\\ 119 | \textsection12. & Study of fibres of finitely presented flat morphisms.\\ 120 | \textsection13. & Equidimensional morphisms.\\ 121 | \textsection14. & Universally open morphisms.\\ 122 | \textsection15. & Study of fibres of a universally open morphism.\\ 123 | \textsection16. & Differential invariants. Differentially smooth morphisms.\\ 124 | \textsection17. & Smooth morphisms, unramified morphisms, and \'etale morphisms.\\ 125 | \textsection18. & Supplement on \'etale morphisms. Henselian local rings.\\ 126 | \textsection19. & Regular immersions and transversely regular immersions.\\ 127 | \textsection20. & Hyperplane sections; generic projections.\\ 128 | \textsection21. & Infinitesimal extensions. 129 | \end{longtable} 130 | \bigskip 131 | 132 | \section*{Mathematical warnings} 133 | EGA uses \emph{prescheme} for what is now usually called a scheme, and \emph{scheme} for what is now usually called a separated scheme --- we have decided to translate ``literally'' or ``historically'', and thus continue to use the word \emph{scheme} to mean separated scheme, and \emph{prescheme} to mean scheme. 134 | 135 | In some cases, we (the translators) have changed ``$\to$'' to ``$\mapsto$'' where appropriate. 136 | 137 | \end{document} 138 | 139 | --------------------------------------------------------------------------------