├── blueprint ├── lean_decls ├── src │ ├── blueprint.sty │ ├── web.paux │ ├── latexmkrc │ ├── macros │ │ ├── web.tex │ │ ├── common.tex │ │ └── print.tex │ ├── plastex.cfg │ ├── extra_styles.css │ ├── web.tex │ ├── print.tex │ └── content.tex ├── print │ └── print.pdf └── web │ ├── js │ ├── expatlib.wasm │ ├── graphvizlib.wasm │ ├── js.cookie.min.js │ ├── plastex.js │ ├── showmore.js │ └── svgxuse.js │ ├── styles │ ├── blueprint.css │ ├── showmore.css │ ├── extra_styles.css │ ├── amsthm.css │ ├── dep_graph.css │ ├── theme-white.css │ ├── theme-green.css │ └── theme-blue.css │ ├── index.html │ ├── sect0001.html │ ├── dep_graph_document.html │ └── symbol-defs.svg ├── lean-toolchain ├── ABCTrueAlmostAlways.lean ├── home_page ├── assets │ └── css │ │ └── style.scss ├── 404.html ├── index.md ├── _include │ └── mathjax.html ├── Gemfile ├── _config.yml ├── _layouts │ └── default.html └── Gemfile.lock ├── lakefile.toml ├── README.md ├── .gitignore └── lake-manifest.json /blueprint/lean_decls: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lean-toolchain: -------------------------------------------------------------------------------- 1 | leanprover/lean4:v4.20.0 2 | -------------------------------------------------------------------------------- /blueprint/src/blueprint.sty: -------------------------------------------------------------------------------- 1 | \DeclareOption*{} 2 | \ProcessOptions 3 | 4 | \newcommand{\graphcolor}[3]{} -------------------------------------------------------------------------------- /blueprint/src/web.paux: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morph-labs/lean-abc-true-almost-always/HEAD/blueprint/src/web.paux -------------------------------------------------------------------------------- /blueprint/print/print.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morph-labs/lean-abc-true-almost-always/HEAD/blueprint/print/print.pdf -------------------------------------------------------------------------------- /blueprint/web/js/expatlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morph-labs/lean-abc-true-almost-always/HEAD/blueprint/web/js/expatlib.wasm -------------------------------------------------------------------------------- /blueprint/web/js/graphvizlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morph-labs/lean-abc-true-almost-always/HEAD/blueprint/web/js/graphvizlib.wasm -------------------------------------------------------------------------------- /blueprint/web/styles/blueprint.css: -------------------------------------------------------------------------------- 1 | a.github_link { 2 | font-weight: normal; 3 | font-size: 90%; 4 | text-decoration: none; 5 | color: inherit; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /ABCTrueAlmostAlways.lean: -------------------------------------------------------------------------------- 1 | -- This module serves as the root of the `ABCTrueAlmostAlways` library. 2 | -- Import modules here that should be built as part of the library. 3 | import ABCTrueAlmostAlways.ABCTrueAlmostAlways 4 | -------------------------------------------------------------------------------- /blueprint/src/latexmkrc: -------------------------------------------------------------------------------- 1 | # This file configures the latexmk command you can use to compile 2 | # the pdf version of the blueprint 3 | $pdf_mode = 1; 4 | $pdflatex = 'xelatex -synctex=1'; 5 | @default_files = ('print.tex'); -------------------------------------------------------------------------------- /blueprint/web/styles/showmore.css: -------------------------------------------------------------------------------- 1 | p.hidden { 2 | display: none; 3 | } 4 | 5 | svg.showmore { 6 | font-size: 150%; 7 | margin: auto; 8 | min-width: 2rem; 9 | text-decoration: none; 10 | text-shadow: 1px 2px 0 rgba(0, 0, 0, 0.8); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /home_page/assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | /* In this file you can add css rules overriding rules defined by your Jekyll theme. */ 5 | 6 | /* Import the CSS from the specified theme */ 7 | @import "{{ site.theme }}"; 8 | 9 | /* Put your rules below this line */ -------------------------------------------------------------------------------- /blueprint/src/macros/web.tex: -------------------------------------------------------------------------------- 1 | % In this file you should put macros to be used only by 2 | % the web version. Of course they should have a corresponding 3 | % version in macros/print.tex. 4 | % Typically the printed version could have more fancy decorations. 5 | % This will probably be a very short file. -------------------------------------------------------------------------------- /blueprint/src/plastex.cfg: -------------------------------------------------------------------------------- 1 | [general] 2 | renderer=HTML5 3 | copy-theme-extras=yes 4 | plugins=plastexdepgraph plastexshowmore leanblueprint 5 | 6 | [document] 7 | toc-depth=3 8 | toc-non-files=True 9 | 10 | [files] 11 | directory=../web/ 12 | split-level= 0 13 | 14 | [html5] 15 | localtoc-level=0 16 | extra-css=extra_styles.css 17 | mathjax-dollars=False -------------------------------------------------------------------------------- /lakefile.toml: -------------------------------------------------------------------------------- 1 | name = "ABCTrueAlmostAlways" 2 | version = "0.1.0" 3 | keywords = ["math"] 4 | defaultTargets = ["ABCTrueAlmostAlways"] 5 | 6 | [leanOptions] 7 | pp.unicode.fun = true # pretty-prints `fun a ↦ b` 8 | autoImplicit = false 9 | 10 | [[require]] 11 | name = "mathlib" 12 | scope = "leanprover-community" 13 | rev = "v4.20.0" 14 | 15 | [[require]] 16 | name = "checkdecls" 17 | git = "https://github.com/PatrickMassot/checkdecls.git" 18 | 19 | [[lean_lib]] 20 | name = "ABCTrueAlmostAlways" 21 | -------------------------------------------------------------------------------- /home_page/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: default 4 | --- 5 | 6 | 19 | 20 |
21 |

404

22 | 23 |

Page not found :(

24 |

The requested page could not be found.

25 |
-------------------------------------------------------------------------------- /home_page/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # Feel free to add content and custom Front Matter to this file. 3 | # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults 4 | 5 | # layout: home 6 | usemathjax: true 7 | --- 8 | 9 | Useful links: 10 | 11 | * [Zulip chat for Lean](https://leanprover.zulipchat.com/) for coordination 12 | * [Blueprint]({{ site.url }}/blueprint/) 13 | * [Blueprint as pdf]({{ site.url }}/blueprint.pdf) 14 | * [Dependency graph]({{ site.url }}/blueprint/dep_graph_document.html) 15 | * [Doc pages for this repository]({{ site.url }}/docs/) -------------------------------------------------------------------------------- /blueprint/src/extra_styles.css: -------------------------------------------------------------------------------- 1 | /* This file contains CSS tweaks for this blueprint. 2 | * As an example, we included CSS rules that put 3 | * a vertical line on the left of theorem statements 4 | * and proofs. 5 | * */ 6 | 7 | div.theorem_thmcontent { 8 | border-left: .15rem solid black; 9 | } 10 | 11 | div.proposition_thmcontent { 12 | border-left: .15rem solid black; 13 | } 14 | 15 | div.lemma_thmcontent { 16 | border-left: .1rem solid black; 17 | } 18 | 19 | div.corollary_thmcontent { 20 | border-left: .1rem solid black; 21 | } 22 | 23 | div.proof_content { 24 | border-left: .08rem solid grey; 25 | } 26 | -------------------------------------------------------------------------------- /blueprint/web/styles/extra_styles.css: -------------------------------------------------------------------------------- 1 | /* This file contains CSS tweaks for this blueprint. 2 | * As an example, we included CSS rules that put 3 | * a vertical line on the left of theorem statements 4 | * and proofs. 5 | * */ 6 | 7 | div.theorem_thmcontent { 8 | border-left: .15rem solid black; 9 | } 10 | 11 | div.proposition_thmcontent { 12 | border-left: .15rem solid black; 13 | } 14 | 15 | div.lemma_thmcontent { 16 | border-left: .1rem solid black; 17 | } 18 | 19 | div.corollary_thmcontent { 20 | border-left: .1rem solid black; 21 | } 22 | 23 | div.proof_content { 24 | border-left: .08rem solid grey; 25 | } 26 | -------------------------------------------------------------------------------- /home_page/_include/mathjax.html: -------------------------------------------------------------------------------- 1 | 2 | {% if page.usemathjax %} 3 | 4 | 13 | 14 | 17 | {% endif %} -------------------------------------------------------------------------------- /blueprint/src/macros/common.tex: -------------------------------------------------------------------------------- 1 | % In this file you should put all LaTeX macros and settings to be used both by 2 | % the pdf version and the web version. 3 | % This should be most of your macros. 4 | 5 | % The theorem-like environments defined below are those that appear by default 6 | % in the dependency graph. See the README of leanblueprint if you need help to 7 | % customize this. 8 | % The configuration below use the theorem counter for all those environments 9 | % (this is what the [theorem] arguments mean) and never resets it. 10 | % If you want for instance to number them within chapters then you can add 11 | % [chapter] at the end of the next line. 12 | \newtheorem{theorem}{Theorem} 13 | \newtheorem{proposition}[theorem]{Proposition} 14 | \newtheorem{lemma}[theorem]{Lemma} 15 | \newtheorem{corollary}[theorem]{Corollary} 16 | 17 | \theoremstyle{definition} 18 | \newtheorem{definition}[theorem]{Definition} -------------------------------------------------------------------------------- /home_page/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # To upgrade, run `bundle update github-pages`. 4 | gem "github-pages", group: :jekyll_plugins 5 | # If you have any plugins, put them here! 6 | group :jekyll_plugins do 7 | #gem "jekyll-feed", "~> 0.12" 8 | end 9 | 10 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem 11 | # and associated library. 12 | platforms :mingw, :x64_mingw, :mswin, :jruby do 13 | gem "tzinfo", "~> 1.2" 14 | gem "tzinfo-data" 15 | end 16 | 17 | # Performance-booster for watching directories on Windows. 18 | gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] 19 | 20 | # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem 21 | # do not have a Java counterpart. 22 | gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] 23 | 24 | # Used for locally serving the website. 25 | gem "webrick", "~> 1.7" -------------------------------------------------------------------------------- /blueprint/src/macros/print.tex: -------------------------------------------------------------------------------- 1 | % In this file you should put macros to be used only by 2 | % the printed version. Of course they should have a corresponding 3 | % version in macros/web.tex. 4 | % Typically the printed version could have more fancy decorations. 5 | % This should be a very short file. 6 | % 7 | % This file starts with dummy macros that ensure the pdf 8 | % compiler will ignore macros provided by plasTeX that make 9 | % sense only for the web version, such as dependency graph 10 | % macros. 11 | 12 | 13 | % Dummy macros that make sense only for web version. 14 | \newcommand{\lean}[1]{} 15 | \newcommand{\discussion}[1]{} 16 | \newcommand{\leanok}{} 17 | \newcommand{\mathlibok}{} 18 | \newcommand{\notready}{} 19 | % Make sure that arguments of \uses and \proves are real labels, by using invisible refs: 20 | % latex prints a warning if the label is not defined, but nothing is shown in the pdf file. 21 | % It uses LaTeX3 programming, this is why we use the expl3 package. 22 | \ExplSyntaxOn 23 | \NewDocumentCommand{\uses}{m} 24 | {\clist_map_inline:nn{#1}{\vphantom{\ref{##1}}}% 25 | \ignorespaces} 26 | \NewDocumentCommand{\proves}{m} 27 | {\clist_map_inline:nn{#1}{\vphantom{\ref{##1}}}% 28 | \ignorespaces} 29 | \ExplSyntaxOff -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # *The abc conjecture almost always* — autoformalized 2 | 3 | This is a completely machine-generated formalization of the classical theorem of de Bruijn, which bounds the exceptional set in the abc conjecture. We follow the proof laid out in this [expository note](https://arxiv.org/pdf/2505.13991). 4 | 5 | All statements, proofs, and documentation were created by Trinity, an autoformalization system developed by Morph Labs as part of the [Verified Superintelligence project](https://www.morph.so/blog/verified-superintelligence). 6 | 7 | The celebrated *abc* conjecture asserts that, for any `ε > 0`, all solutions to `a + b = c` in triples `a, b, c` of coprime integers must satisfy `rad(abc) ⩾ c ^ (1−ε)`, with finitely many exceptions. We obtain the first formalized theorem towards the *abc* conjecture, showing it is true almost always. Specifically, we formally verify that there are `O(N^{2/3})` such triples `(a, b, c) ∈ [1, N]^3`, which satisfy `rad(abc) < c ^ (1−ε)`. 8 | 9 | The final Lean output is in [ABCTrueAlmostAlways.lean](./ABCTrueAlmostAlways/ABCTrueAlmostAlways.lean). The human-supplied blueprint is in [content.tex](./blueprint/src/content.tex). 10 | 11 | ![Screenshot 2025-06-14 100620](https://github.com/user-attachments/assets/7b4cdf23-04ee-4cef-a78e-cb7c09f8a535) 12 | -------------------------------------------------------------------------------- /blueprint/web/styles/amsthm.css: -------------------------------------------------------------------------------- 1 | 2 | span[class$='_thmlabel'] 3 | { 4 | margin-left: .5rem; 5 | } 6 | 7 | div.theorem-style-plain div[class$='_thmheading'] { 8 | font-style: normal; 9 | font-weight: bold; 10 | 11 | } 12 | div.theorem-style-plain span[class$='_thmlabel']::after 13 | { 14 | content: '.'; 15 | } 16 | div.theorem-style-plain div[class$='_thmcontent'] { 17 | font-style: italic; 18 | font-weight: normal; 19 | 20 | } 21 | 22 | div.theorem-style-definition div[class$='_thmheading'] { 23 | font-style: normal; 24 | font-weight: bold; 25 | 26 | } 27 | div.theorem-style-definition span[class$='_thmlabel']::after 28 | { 29 | content: '.'; 30 | } 31 | div.theorem-style-remark div[class$='_thmheading'] { 32 | font-style: normal; 33 | font-weight: bold; 34 | 35 | } 36 | div.theorem-style-remark span[class$='_thmlabel']::after 37 | { 38 | content: '.'; 39 | } -------------------------------------------------------------------------------- /blueprint/src/web.tex: -------------------------------------------------------------------------------- 1 | % This file makes a web version of the blueprint 2 | % It should include all the \usepackage needed for this version. 3 | % The template includes standard AMS packages. 4 | % It is otherwise a very minimal preamble (you should probably at least 5 | % add cleveref and tikz-cd). 6 | 7 | \documentclass{report} 8 | 9 | \usepackage{amssymb, amsthm, amsmath} 10 | \usepackage{hyperref} 11 | \usepackage[showmore, dep_graph]{blueprint} 12 | % Blackboard Bold letters 13 | \newcommand{\C}{{\mathbb C}} 14 | \newcommand{\R}{{\mathbb R}} 15 | \newcommand{\Q}{{\mathbb Q}} 16 | \newcommand{\Z}{{\mathbb Z}} 17 | \newcommand{\N}{{\mathbb N}} 18 | \newcommand{\F}{{\mathbb F}} 19 | \newcommand{\E}{{\mathbb E}} 20 | \newcommand{\T}{{\mathbb T}} 21 | \newcommand{\D}{{\mathbb D}} 22 | 23 | % Math operators (the correct way to define them) 24 | \DeclareMathOperator\rad{rad} 25 | \DeclareMathOperator{\diag}{diag} 26 | 27 | % Other shortcuts 28 | \newcommand{\1}{{\mathbf 1}} 29 | \newcommand{\eps}{\varepsilon} % Using varepsilon (ε) which is often preferred over epsilon (ϵ) 30 | \renewcommand{\phi}{\varphi} % Personal preference for phi symbol 31 | 32 | 33 | \input{macros/common} 34 | \input{macros/web} 35 | 36 | \home{https://morph-labs.github.io/lean-abc-true-almost-always} 37 | \github{https://github.com/morph-labs/lean-abc-true-almost-always} 38 | \dochome{https://morph-labs.github.io/lean-abc-true-almost-always/docs} 39 | 40 | \title{abc exceptions} 41 | \author{morph} 42 | 43 | \begin{document} 44 | \maketitle 45 | \input{content} 46 | \end{document} 47 | -------------------------------------------------------------------------------- /home_page/_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process. 10 | # 11 | # If you need help with YAML syntax, here are some quick references for you: 12 | # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml 13 | # https://learnxinyminutes.com/docs/yaml/ 14 | # 15 | # Site settings 16 | # These are used to personalize your new site. If you look in the HTML files, 17 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. 18 | # You can create any custom variable you would like, and they will be accessible 19 | # in the templates via {{ site.myvariable }}. 20 | 21 | title: abc 22 | #email: your-email@example.com 23 | description: by greg-const 24 | baseurl: "" # the subpath of your site, e.g. /blog 25 | url: "https://morph-labs.github.io/lean-abc-true-almost-always" # the base hostname & protocol for your site, e.g. http://example.com 26 | twitter_username: 27 | github_username: morph-labs 28 | repository: morph-labs/lean-abc-true-almost-always 29 | 30 | # Build settings 31 | remote_theme: pages-themes/cayman@v0.2.0 32 | plugins: 33 | - jekyll-remote-theme 34 | - jekyll-github-metadata -------------------------------------------------------------------------------- /blueprint/web/js/js.cookie.min.js: -------------------------------------------------------------------------------- 1 | /*! js-cookie v3.0.1 | MIT */ 2 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t 2 | 3 | 4 | 5 | 6 | 7 | {% seo %} 8 | 9 | 11 | 12 | 13 | 14 | {% if jekyll.environment == "production" %} 15 | 17 | {% else %} 18 | 19 | {% endif %} 20 | {% include head-custom.html %} 21 | 22 | 23 | 24 | Skip to the content. 25 | 26 | 37 | 38 |
39 | {{ content }} 40 | 41 |
42 | {% if site.github.is_project_page %} 43 | {{ site.github.repository_name }} 44 | is maintained by greg-const. Visit the GitHub repository for more information. 45 | {% endif %} 46 |
47 |
48 | 49 | 50 | -------------------------------------------------------------------------------- /blueprint/web/js/plastex.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | var icon = function($icon, $class, $id) { 3 | if ($id) { 4 | $id = ' id="'+$id+'"'; 5 | } else { 6 | $id = ''; 7 | } 8 | 9 | return '' 10 | }; 11 | 12 | $("#toc-toggle").click(function() { 13 | $("nav.toc").toggle() 14 | }); 15 | 16 | $("nav.toc").on("click", "span.expand-toc", 17 | function() { 18 | $(this).siblings("ul").slideToggle('fast'); 19 | 20 | if ($(this).html() == "▼") { 21 | $(this).html("▶"); 22 | } else { 23 | $(this).html("▼"); 24 | }; 25 | 26 | }) 27 | 28 | 29 | $("div.proof_content p:last").append('') 30 | 31 | $("div.proof_heading").click( 32 | function() { 33 | var expand_span = $(this).children('span.expand-proof'); 34 | if ($(expand_span).html() == "▼") { 35 | $(expand_span).html("▶"); 36 | } else { 37 | $(expand_span).html("▼"); 38 | }; 39 | 40 | $(this).siblings("div.proof_content").slideToggle() 41 | }) 42 | 43 | $("a.proof").click( 44 | function() { 45 | var ref= $(this).attr('href').split('#')[1]; 46 | var proof = $('#'+ref) 47 | proof.show() 48 | proof.children('.proof_content').each( 49 | function() { 50 | var proof_content = $(this) 51 | proof_content.show().addClass('hilite') 52 | setTimeout(function(){ 53 | proof_content.removeClass('hilite') 54 | }, 1000); 55 | }) 56 | var expand_icon = proof.find('svg.expand-proof'); 57 | expand_icon.replaceWith(icon('cross', 'expand-proof')); 58 | }) 59 | 60 | 61 | $("button.modal").click( 62 | function() { 63 | $(this).next("div.modal-container").css('display', 'flex'); 64 | }) 65 | $("button.closebtn").click( 66 | function() { 67 | $(this).parent().parent().parent().hide(); 68 | }) 69 | }); 70 | -------------------------------------------------------------------------------- /blueprint/web/js/showmore.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | showmore_update = function(showmore_level) { 3 | Cookies.set('showmore_level', showmore_level, { expires : 10, SameSite: "Lax" }); 4 | console.log('update', showmore_level); 5 | switch(showmore_level) { 6 | case 0: 7 | $("svg#showmore-minus").hide(); 8 | $("figure").hide(); 9 | $("svg#showmore-plus").show(); 10 | $("div.main-text > p").each( 11 | function(){ 12 | $(this).hide(); 13 | }); 14 | $("div.proof_wrapper").each( 15 | function(){ 16 | $(this).hide(); 17 | }); 18 | $("footer").hide(); 19 | break; 20 | case 1: 21 | $("svg#showmore-minus").show(); 22 | $("figure").show(); 23 | $("div.proof_wrapper").each( 24 | function(){ 25 | $(this).show(); 26 | }); 27 | $("svg#showmore-plus").show(); 28 | $("div.main-text > p").each( 29 | function(){ 30 | $(this).show(); 31 | }); 32 | $("div.proof_content").each( 33 | function(){ 34 | $(this).hide(); 35 | }); 36 | $("span.expand-proof").html("▶"); 37 | $("footer").show(); 38 | break; 39 | case 2: 40 | $("svg#showmore-minus").show(); 41 | $("svg#showmore-plus").hide(); 42 | $("div.main-text > p").each( 43 | function(){ 44 | $(this).show(); 45 | }); 46 | $("div.proof_wrapper").each( 47 | function(){ 48 | $(this).show(); 49 | }); 50 | $("div.proof_content").each( 51 | function(){ 52 | $(this).show(); 53 | }); 54 | $("span.expand-proof").html("▼"); 55 | } 56 | }; 57 | 58 | cookie_level = function(){ 59 | var showmore_level = parseInt(Cookies.get('showmore_level')); 60 | 61 | if (isNaN(showmore_level)) { 62 | return 1; 63 | } else { 64 | return showmore_level; 65 | } 66 | }; 67 | showmore_update(cookie_level()); 68 | 69 | $("svg#showmore-minus").click( 70 | function() { 71 | var showmore_level = cookie_level(); 72 | console.log('click ', showmore_level); 73 | if (showmore_level > 0) { 74 | showmore_level -= 1; 75 | showmore_update(showmore_level); 76 | } 77 | }) 78 | 79 | $("svg#showmore-plus").click( 80 | function() { 81 | var showmore_level = cookie_level(); 82 | console.log('click ', showmore_level); 83 | if (showmore_level < 2) { 84 | showmore_level += 1; 85 | showmore_update(showmore_level); 86 | } 87 | }) 88 | }) 89 | -------------------------------------------------------------------------------- /blueprint/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 12 | 13 | 14 | 15 | abc 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 | 38 | 39 |
40 |
41 | 42 | 43 |
44 |
45 |

abc

46 |

47 | greg-const 48 |

49 |
50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 |
66 | 73 |
74 |
75 |
76 | 77 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /blueprint/src/print.tex: -------------------------------------------------------------------------------- 1 | %====================================================================== 2 | % PREAMBLE 3 | %====================================================================== 4 | 5 | \documentclass[a4paper]{report} 6 | 7 | % --- Page Layout --- 8 | \usepackage{geometry} % Modern package for page margins. Replaces fullpage. 9 | % \geometry{margin=1in} % Example: uncomment and adjust to set margins. 10 | 11 | % --- Core LaTeX & Math Packages --- 12 | \usepackage{expl3} % Required by leanblueprint for dependency graph logic. 13 | \usepackage{mathtools} % Loads amsmath, provides many improvements. 14 | \usepackage{amsthm} % For theorem environments (but leanblueprint may override). 15 | \usepackage{amssymb} % For symbols like \mathbb, though unicode-math also provides them. 16 | 17 | % --- Hyperlinks and Lists --- 18 | \usepackage{enumitem} % For better control over lists. 19 | \usepackage[unicode,colorlinks=true,linkcolor=blue,urlcolor=magenta,citecolor=blue]{hyperref} 20 | 21 | % --- Font and Encoding (for XeLaTeX/LuaLaTeX) --- 22 | % This is a major package. It MUST come after math packages like amsmath. 23 | % It provides modern font support and makes amssymb/amsfonts largely redundant. 24 | \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math} 25 | 26 | % --- Custom Commands --- 27 | % Blackboard Bold letters 28 | \newcommand{\C}{{\mathbb C}} 29 | \newcommand{\R}{{\mathbb R}} 30 | \newcommand{\Q}{{\mathbb Q}} 31 | \newcommand{\Z}{{\mathbb Z}} 32 | \newcommand{\N}{{\mathbb N}} 33 | \newcommand{\F}{{\mathbb F}} 34 | \newcommand{\E}{{\mathbb E}} 35 | \newcommand{\T}{{\mathbb T}} 36 | \newcommand{\D}{{\mathbb D}} 37 | 38 | % Math operators (the correct way to define them) 39 | \DeclareMathOperator\rad{rad} 40 | \DeclareMathOperator{\diag}{diag} 41 | 42 | % Other shortcuts 43 | \newcommand{\1}{{\mathbf 1}} 44 | \newcommand{\eps}{\varepsilon} % Using varepsilon (ε) which is often preferred over epsilon (ϵ) 45 | \renewcommand{\phi}{\varphi} % Personal preference for phi symbol 46 | 47 | % For Lie algebras, use \mathfrak (modern) instead of \frak (old) 48 | \newcommand{\gl}{\mathfrak{gl}} 49 | \newcommand{\so}{\mathfrak{so}} 50 | % Do NOT define \sl, it's a built-in LaTeX command. 51 | 52 | % --- LeanBlueprint Macros --- 53 | % These files from leanblueprint will set up theorem environments, etc. 54 | % It's important they come AFTER your packages and custom commands. 55 | \input{macros/common} 56 | \input{macros/print} 57 | 58 | %====================================================================== 59 | % DOCUMENT 60 | %====================================================================== 61 | 62 | \title{abc} 63 | \author{morph} 64 | 65 | \begin{document} 66 | \maketitle 67 | % The content file contains all the chapters and sections. 68 | \input{content} 69 | \end{document} 70 | -------------------------------------------------------------------------------- /blueprint/web/styles/dep_graph.css: -------------------------------------------------------------------------------- 1 | header { 2 | height: 3rem; 3 | justify-content: center; 4 | display: flex; 5 | } 6 | 7 | header a { 8 | margin-right: auto; 9 | text-decoration: none; 10 | color: inherit; 11 | } 12 | 13 | header a:visited { 14 | color: inherit; 15 | } 16 | 17 | header h1 { 18 | position: absolute; 19 | } 20 | 21 | div#graph { 22 | width: 100%; 23 | height: 90vh; 24 | resize: both; 25 | overflow: hidden; } 26 | 27 | 28 | div#statements { 29 | display: none; 30 | position: absolute; 31 | bottom: 0; 32 | width: 100%; 33 | background-color: #e8e8e8; /* FIXME: use sass */ 34 | } 35 | 36 | #Legend span.title { 37 | font-size: 150%; 38 | font-weight: bold; 39 | display: flex; 40 | margin-right: 2rem; 41 | cursor: pointer; 42 | } 43 | 44 | #Legend dl { 45 | position: absolute; 46 | top: 6rem; 47 | left:1.5rem; 48 | font-size: 120%; 49 | display: none; 50 | max-width: 30%; 51 | background: white 52 | } 53 | 54 | #Legend div.btn { 55 | margin-left: .5rem; 56 | margin-top: .1rem; 57 | } 58 | 59 | #Legend dt { 60 | font-weight: bold; 61 | } 62 | 63 | #Legend dt::after { 64 | content: ":"; 65 | } 66 | 67 | #Legend dd { 68 | margin-left: .5rem; 69 | margin-right: 1rem; 70 | display: inline; 71 | } 72 | 73 | 74 | div.bar { 75 | display: block; 76 | width: 22px; 77 | height: 3px; 78 | border-radius: 1px; 79 | margin-top: 2px; 80 | margin-bot: 2px; 81 | background: black; 82 | } 83 | 84 | 85 | button.dep-closebtn 86 | { 87 | position: absolute; 88 | top: 1rem; 89 | right: 1rem; 90 | font-size: 100%; 91 | font-weight: bold; 92 | 93 | background: Transparent; 94 | border: none; 95 | 96 | text-decoration: none; 97 | 98 | /* color: #fff;*/ 99 | cursor: pointer; 100 | } 101 | 102 | div.dep-modal-container { 103 | position: fixed; 104 | z-index: $modal-z-index; 105 | top: 0; 106 | left: 0; 107 | 108 | display: none; 109 | 110 | width: 90vw; 111 | margin-top: 4rem; 112 | margin-left: 5vw; 113 | margin-right: 5vw; 114 | } 115 | div.dep-modal-content { 116 | font-weight: normal; 117 | 118 | overflow: auto; 119 | 120 | margin: auto; 121 | 122 | vertical-align: middle; 123 | 124 | border: 1px solid #497da5; /* FIXME use sass, compare main modals */ 125 | border-radius: 5px; 126 | background-color: white; 127 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .2), 0 6px 20px 0 rgba(0, 0, 0, .19); 128 | padding: .5rem 1rem .2rem 1rem; 129 | } 130 | 131 | div.dep-modal-content a { 132 | color: inherit; 133 | text-decoration: none; 134 | } 135 | 136 | div.thm_icons .icon { 137 | width: .7rem; 138 | height: .7rem; 139 | } 140 | 141 | a.latex_link, a.lean_link, a.issue_link { 142 | font-weight: normal; 143 | font-size: 90%; 144 | font-style: italic; 145 | } 146 | 147 | a.latex_link { 148 | padding-left: 1rem; 149 | } 150 | 151 | a.lean_link, a.issue_link { 152 | padding-left: .5rem; 153 | } 154 | 155 | 156 | /* Tooltip container */ 157 | .tooltip { 158 | font-weight: normal; 159 | margin-left: .5rem; 160 | position: relative; 161 | display: inline-block; 162 | } 163 | 164 | /* Tooltip text */ 165 | .tooltip .tooltip_list { 166 | visibility: hidden; 167 | text-align: center; 168 | border-radius: 6px; 169 | 170 | position: absolute; 171 | z-index: 1; 172 | top: 100%; 173 | } 174 | 175 | ul.tooltip_list { 176 | list-style-type: none; 177 | padding-left: 0; 178 | border: 1px solid #497da5; /* FIXME use sass, compare main modals */ 179 | border-radius: 5px; 180 | background-color: white; 181 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .2), 0 6px 20px 0 rgba(0, 0, 0, .19); 182 | } 183 | 184 | ul.tooltip_list li { 185 | padding: .1rem .5rem; 186 | } 187 | 188 | /* Show the tooltip text when you mouse over the tooltip container */ 189 | .tooltip:hover .tooltip_list { 190 | visibility: visible; 191 | } 192 | 193 | .node { 194 | cursor: pointer; 195 | } 196 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | .*.lb 14 | 15 | ## Intermediate documents: 16 | *.dvi 17 | *.xdv 18 | *-converted-to.* 19 | # these rules might exclude image files for figures etc. 20 | # *.ps 21 | # *.eps 22 | # *.pdf 23 | 24 | ## Generated if empty string is given at "Please type another file name for output:" 25 | .pdf 26 | 27 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 28 | *.bbl 29 | *.bbl-SAVE-ERROR 30 | *.bcf 31 | *.bcf-SAVE-ERROR 32 | *.blg 33 | *-blx.aux 34 | *-blx.bib 35 | *.run.xml 36 | 37 | ## Build tool auxiliary files: 38 | *.fdb_latexmk 39 | *.synctex 40 | *.synctex(busy) 41 | *.synctex.gz 42 | *.synctex.gz(busy) 43 | *.pdfsync 44 | *.rubbercache 45 | rubber.cache 46 | 47 | ## Build tool directories for auxiliary files 48 | # latexrun 49 | latex.out/ 50 | 51 | ## Auxiliary and intermediate files from other packages: 52 | # algorithms 53 | *.alg 54 | *.loa 55 | 56 | # achemso 57 | acs-*.bib 58 | 59 | # amsthm 60 | *.thm 61 | 62 | # attachfile2 63 | *.atfi 64 | 65 | # beamer 66 | *.nav 67 | *.pre 68 | *.snm 69 | *.vrb 70 | 71 | # changes 72 | *.soc 73 | *.loc 74 | 75 | # comment 76 | *.cut 77 | 78 | # cprotect 79 | *.cpt 80 | 81 | # elsarticle (documentclass of Elsevier journals) 82 | *.spl 83 | 84 | # endnotes 85 | *.ent 86 | 87 | # fixme 88 | *.lox 89 | 90 | # feynmf/feynmp 91 | *.mf 92 | *.mp 93 | *.t[1-9] 94 | *.t[1-9][0-9] 95 | *.tfm 96 | 97 | #(r)(e)ledmac/(r)(e)ledpar 98 | *.end 99 | *.?end 100 | *.[1-9] 101 | *.[1-9][0-9] 102 | *.[1-9][0-9][0-9] 103 | *.[1-9]R 104 | *.[1-9][0-9]R 105 | *.[1-9][0-9][0-9]R 106 | *.eledsec[1-9] 107 | *.eledsec[1-9]R 108 | *.eledsec[1-9][0-9] 109 | *.eledsec[1-9][0-9]R 110 | *.eledsec[1-9][0-9][0-9] 111 | *.eledsec[1-9][0-9][0-9]R 112 | 113 | # glossaries 114 | *.acn 115 | *.acr 116 | *.glg 117 | *.glo 118 | *.gls 119 | *.glsdefs 120 | *.lzo 121 | *.lzs 122 | *.slg 123 | *.slo 124 | *.sls 125 | 126 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 127 | # *.ist 128 | 129 | # gnuplot 130 | *.gnuplot 131 | *.table 132 | 133 | # gnuplottex 134 | *-gnuplottex-* 135 | 136 | # gregoriotex 137 | *.gaux 138 | *.glog 139 | *.gtex 140 | 141 | # htlatex 142 | *.4ct 143 | *.4tc 144 | *.idv 145 | *.lg 146 | *.trc 147 | *.xref 148 | 149 | # hypdoc 150 | *.hd 151 | 152 | # hyperref 153 | *.brf 154 | 155 | # knitr 156 | *-concordance.tex 157 | # TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files 158 | # *.tikz 159 | *-tikzDictionary 160 | 161 | # listings 162 | *.lol 163 | 164 | # luatexja-ruby 165 | *.ltjruby 166 | 167 | # makeidx 168 | *.idx 169 | *.ilg 170 | *.ind 171 | 172 | # minitoc 173 | *.maf 174 | *.mlf 175 | *.mlt 176 | *.mtc[0-9]* 177 | *.slf[0-9]* 178 | *.slt[0-9]* 179 | *.stc[0-9]* 180 | 181 | # minted 182 | _minted* 183 | *.data.minted 184 | *.pyg 185 | 186 | # morewrites 187 | *.mw 188 | 189 | # newpax 190 | *.newpax 191 | 192 | # nomencl 193 | *.nlg 194 | *.nlo 195 | *.nls 196 | 197 | # pax 198 | *.pax 199 | 200 | # pdfpcnotes 201 | *.pdfpc 202 | 203 | # sagetex 204 | *.sagetex.sage 205 | *.sagetex.py 206 | *.sagetex.scmd 207 | 208 | # scrwfile 209 | *.wrt 210 | 211 | # spelling 212 | *.spell.bad 213 | *.spell.txt 214 | 215 | # svg 216 | svg-inkscape/ 217 | 218 | # sympy 219 | *.sout 220 | *.sympy 221 | sympy-plots-for-*.tex/ 222 | 223 | # pdfcomment 224 | *.upa 225 | *.upb 226 | 227 | # pythontex 228 | *.pytxcode 229 | pythontex-files-*/ 230 | 231 | # tcolorbox 232 | *.listing 233 | 234 | # thmtools 235 | *.loe 236 | 237 | # TikZ & PGF 238 | *.dpth 239 | *.md5 240 | *.auxlock 241 | 242 | # titletoc 243 | *.ptc 244 | 245 | # todonotes 246 | *.tdo 247 | 248 | # vhistory 249 | *.hst 250 | *.ver 251 | 252 | # easy-todo 253 | *.lod 254 | 255 | # xcolor 256 | *.xcp 257 | 258 | # xmpincl 259 | *.xmpi 260 | 261 | # xindy 262 | *.xdy 263 | 264 | # xypic precompiled matrices and outlines 265 | *.xyc 266 | *.xyd 267 | 268 | # endfloat 269 | *.ttt 270 | *.fff 271 | 272 | # Latexian 273 | TSWLatexianTemp* 274 | 275 | ## Editors: 276 | # WinEdt 277 | *.bak 278 | *.sav 279 | 280 | # latexindent.pl 281 | *.bak[0-9]* 282 | 283 | # Texpad 284 | .texpadtmp 285 | 286 | # LyX 287 | *.lyx~ 288 | 289 | # Kile 290 | *.backup 291 | 292 | # gummi 293 | .*.swp 294 | 295 | # KBibTeX 296 | *~[0-9]* 297 | 298 | # TeXnicCenter 299 | *.tps 300 | 301 | # auto folder when using emacs and auctex 302 | ./auto/* 303 | *.el 304 | 305 | # expex forward references with \gathertags 306 | *-tags.tex 307 | 308 | # standalone packages 309 | *.sta 310 | 311 | # Makeindex log files 312 | *.lpz 313 | 314 | # xwatermark package 315 | *.xwm 316 | 317 | # REVTeX puts footnotes in the bibliography by default, unless the nofootinbib 318 | # option is specified. Footnotes are the stored in a file with suffix Notes.bib. 319 | # Uncomment the next line to have this generated file ignored. 320 | #*Notes.bib 321 | 322 | # Lean build artifacts 323 | .lake/ 324 | -------------------------------------------------------------------------------- /lake-manifest.json: -------------------------------------------------------------------------------- 1 | {"version": "1.1.0", 2 | "packagesDir": ".lake/packages", 3 | "packages": 4 | [{"url": "https://github.com/leanprover/doc-gen4", 5 | "type": "git", 6 | "subDir": null, 7 | "scope": "", 8 | "rev": "86d735ecf420e0dbaaf84e2fc2221969f9fca097", 9 | "name": "«doc-gen4»", 10 | "manifestFile": "lake-manifest.json", 11 | "inputRev": "main", 12 | "inherited": false, 13 | "configFile": "lakefile.lean"}, 14 | {"url": "https://github.com/PatrickMassot/checkdecls.git", 15 | "type": "git", 16 | "subDir": null, 17 | "scope": "", 18 | "rev": "3d425859e73fcfbef85b9638c2a91708ef4a22d4", 19 | "name": "checkdecls", 20 | "manifestFile": "lake-manifest.json", 21 | "inputRev": null, 22 | "inherited": false, 23 | "configFile": "lakefile.lean"}, 24 | {"url": "https://github.com/leanprover/doc-gen4", 25 | "type": "git", 26 | "subDir": null, 27 | "scope": "", 28 | "rev": "86d735ecf420e0dbaaf84e2fc2221969f9fca097", 29 | "name": "«doc-gen4»", 30 | "manifestFile": "lake-manifest.json", 31 | "inputRev": "main", 32 | "inherited": false, 33 | "configFile": "lakefile.lean"}, 34 | {"url": "https://github.com/leanprover-community/mathlib4", 35 | "type": "git", 36 | "subDir": null, 37 | "scope": "leanprover-community", 38 | "rev": "c211948581bde9846a99e32d97a03f0d5307c31e", 39 | "name": "mathlib", 40 | "manifestFile": "lake-manifest.json", 41 | "inputRev": "v4.20.0", 42 | "inherited": false, 43 | "configFile": "lakefile.lean"}, 44 | {"url": "https://github.com/mhuisi/lean4-cli", 45 | "type": "git", 46 | "subDir": null, 47 | "scope": "", 48 | "rev": "a0abd472348dd725adbb26732e79b26e7e220913", 49 | "name": "Cli", 50 | "manifestFile": "lake-manifest.json", 51 | "inputRev": "main", 52 | "inherited": true, 53 | "configFile": "lakefile.toml"}, 54 | {"url": "https://github.com/fgdorais/lean4-unicode-basic", 55 | "type": "git", 56 | "subDir": null, 57 | "scope": "", 58 | "rev": "9f94839235c03d3e04aaed60d277a287f9c84873", 59 | "name": "UnicodeBasic", 60 | "manifestFile": "lake-manifest.json", 61 | "inputRev": "main", 62 | "inherited": true, 63 | "configFile": "lakefile.lean"}, 64 | {"url": "https://github.com/dupuisf/BibtexQuery", 65 | "type": "git", 66 | "subDir": null, 67 | "scope": "", 68 | "rev": "dbfe2b7630c5f7c5c1cf71e7747ffc0a30337f69", 69 | "name": "BibtexQuery", 70 | "manifestFile": "lake-manifest.json", 71 | "inputRev": "master", 72 | "inherited": true, 73 | "configFile": "lakefile.toml"}, 74 | {"url": "https://github.com/acmepjz/md4lean", 75 | "type": "git", 76 | "subDir": null, 77 | "scope": "", 78 | "rev": "8ba0ef10d178ab95a5d6fe3cfbd586c6ecef2717", 79 | "name": "MD4Lean", 80 | "manifestFile": "lake-manifest.json", 81 | "inputRev": "main", 82 | "inherited": true, 83 | "configFile": "lakefile.lean"}, 84 | {"url": "https://github.com/leanprover-community/plausible", 85 | "type": "git", 86 | "subDir": null, 87 | "scope": "leanprover-community", 88 | "rev": "2ac43674e92a695e96caac19f4002b25434636da", 89 | "name": "plausible", 90 | "manifestFile": "lake-manifest.json", 91 | "inputRev": "main", 92 | "inherited": true, 93 | "configFile": "lakefile.toml"}, 94 | {"url": "https://github.com/leanprover-community/LeanSearchClient", 95 | "type": "git", 96 | "subDir": null, 97 | "scope": "leanprover-community", 98 | "rev": "6c62474116f525d2814f0157bb468bf3a4f9f120", 99 | "name": "LeanSearchClient", 100 | "manifestFile": "lake-manifest.json", 101 | "inputRev": "main", 102 | "inherited": true, 103 | "configFile": "lakefile.toml"}, 104 | {"url": "https://github.com/leanprover-community/import-graph", 105 | "type": "git", 106 | "subDir": null, 107 | "scope": "leanprover-community", 108 | "rev": "a11bcb5238149ae5d8a0aa5e2f8eddf8a3a9b27d", 109 | "name": "importGraph", 110 | "manifestFile": "lake-manifest.json", 111 | "inputRev": "main", 112 | "inherited": true, 113 | "configFile": "lakefile.toml"}, 114 | {"url": "https://github.com/leanprover-community/ProofWidgets4", 115 | "type": "git", 116 | "subDir": null, 117 | "scope": "leanprover-community", 118 | "rev": "21e6a0522cd2ae6cf88e9da99a1dd010408ab306", 119 | "name": "proofwidgets", 120 | "manifestFile": "lake-manifest.json", 121 | "inputRev": "v0.0.60", 122 | "inherited": true, 123 | "configFile": "lakefile.lean"}, 124 | {"url": "https://github.com/leanprover-community/aesop", 125 | "type": "git", 126 | "subDir": null, 127 | "scope": "leanprover-community", 128 | "rev": "ddfca7829bf8aa4083cdf9633935dddbb28b7b2a", 129 | "name": "aesop", 130 | "manifestFile": "lake-manifest.json", 131 | "inputRev": "master", 132 | "inherited": true, 133 | "configFile": "lakefile.toml"}, 134 | {"url": "https://github.com/leanprover-community/quote4", 135 | "type": "git", 136 | "subDir": null, 137 | "scope": "leanprover-community", 138 | "rev": "2865ea099ab1dd8d6fc93381d77a4ac87a85527a", 139 | "name": "Qq", 140 | "manifestFile": "lake-manifest.json", 141 | "inputRev": "master", 142 | "inherited": true, 143 | "configFile": "lakefile.toml"}, 144 | {"url": "https://github.com/leanprover-community/batteries", 145 | "type": "git", 146 | "subDir": null, 147 | "scope": "leanprover-community", 148 | "rev": "7a0d63fbf8fd350e891868a06d9927efa545ac1e", 149 | "name": "batteries", 150 | "manifestFile": "lake-manifest.json", 151 | "inputRev": "main", 152 | "inherited": true, 153 | "configFile": "lakefile.toml"}], 154 | "name": "ABCTrueAlmostAlways", 155 | "lakeDir": ".lake"} 156 | -------------------------------------------------------------------------------- /blueprint/web/sect0001.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 12 | 13 | 14 | 15 | abc 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 |
27 | 28 |
29 | 37 | 38 |
39 |
40 | 41 | 42 |
43 | 44 |
The \(abc\) conjecture is true almost always — Expanded statements. (v4)
45 |

Notation:

46 |

Here \(f(n) = O(g(n))\) means that \(|f(n)| \le C\, g(n)\) for all \(n{\gt}0\) where \(C{\gt}0\) is an absolute constant; while \(f(n) = O_{\epsilon }(g(n))\) means \(|f(n)| \le C\, g(n)\) for some \(C=C_{\epsilon }{\gt}0\) depending on \({\epsilon }\). \(f(n) = o(1)\) means that \(\lim _{n\to \infty }f(n) = 0\).

47 |
48 |
49 | 50 | Lemma 51 | 52 | 1 53 |
54 | 55 |
56 |
57 | 58 | # 59 | 60 | 61 | 62 | 63 | 79 | 80 | 81 |
82 |
83 |
84 |

() We have \(2^x \ge x+1\) for any real \(x\ge 1\).

85 | 86 |
87 |
88 |
89 |
90 | 91 | Lemma 92 | 93 | 2 94 |
95 | 96 |
97 |
98 | 99 | # 100 | 101 | 102 | 103 | 104 | 120 | 121 | 122 |
123 |
124 |
125 |

() We have \(2^x \ge x/2+1\) for any real \(x\ge 0\).

126 | 127 |
128 |
129 |
130 |
131 | 132 | Theorem 133 | 134 | 3 135 | Fundamental theorem of arithmetic 136 |
137 | 138 |
139 |
140 | 141 | # 142 | 143 | 144 | 145 | 146 | 162 | 163 | 164 |
165 |
166 |
167 |

() Every integer \(n\ge 1\) factors uniquely into a product of primes \(n = p_1^{a_1}\cdots p_k^{a_k}\).

168 | 169 |
170 |
171 | 172 |
173 |
174 |
175 |
176 | 177 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | -------------------------------------------------------------------------------- /blueprint/web/dep_graph_document.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dependency graph 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | Home 29 |

Dependencies

30 |
31 |
32 |
33 |
34 | Legend 35 |
36 |
37 |
38 |
39 |
40 |
41 | 42 |
Boxes
definitions
43 | 44 |
Ellipses
theorems and lemmas
45 | 46 |
Blue border
the statement of this result is ready to be formalized; all prerequisites are done
47 | 48 |
Orange border
the statement of this result is not ready to be formalized; the blueprint needs more work
49 | 50 |
Blue background
the proof of this result is ready to be formalized; all prerequisites are done
51 | 52 |
Green border
the statement of this result is formalized
53 | 54 |
Green background
the proof of this result is formalized
55 | 56 |
Dark green background
the proof of this result and all its ancestors are formalized
57 | 58 |
Dark green border
this is in Mathlib
59 | 60 |
61 |
62 |
63 |
64 | 65 | 66 |
67 |
68 | 71 | 72 | 90 | 91 |
92 |
93 | 94 | 95 | 96 |
97 |
98 | 101 | 102 | 120 | 121 |
122 |
123 | 124 | 125 | 126 |
127 |
128 | 131 | 132 | 150 | 151 |
152 |
153 |
154 |
155 |
156 | 157 | 158 | 159 | 160 | 161 | 162 | 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /home_page/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (6.0.5) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | zeitwerk (~> 2.2, >= 2.2.2) 10 | addressable (2.8.0) 11 | public_suffix (>= 2.0.2, < 5.0) 12 | coffee-script (2.4.1) 13 | coffee-script-source 14 | execjs 15 | coffee-script-source (1.11.1) 16 | colorator (1.1.0) 17 | commonmarker (0.23.4) 18 | concurrent-ruby (1.1.10) 19 | dnsruby (1.61.9) 20 | simpleidn (~> 0.1) 21 | em-websocket (0.5.3) 22 | eventmachine (>= 0.12.9) 23 | http_parser.rb (~> 0) 24 | ethon (0.15.0) 25 | ffi (>= 1.15.0) 26 | eventmachine (1.2.7) 27 | execjs (2.8.1) 28 | faraday (1.10.0) 29 | faraday-em_http (~> 1.0) 30 | faraday-em_synchrony (~> 1.0) 31 | faraday-excon (~> 1.1) 32 | faraday-httpclient (~> 1.0) 33 | faraday-multipart (~> 1.0) 34 | faraday-net_http (~> 1.0) 35 | faraday-net_http_persistent (~> 1.0) 36 | faraday-patron (~> 1.0) 37 | faraday-rack (~> 1.0) 38 | faraday-retry (~> 1.0) 39 | ruby2_keywords (>= 0.0.4) 40 | faraday-em_http (1.0.0) 41 | faraday-em_synchrony (1.0.0) 42 | faraday-excon (1.1.0) 43 | faraday-httpclient (1.0.1) 44 | faraday-multipart (1.0.3) 45 | multipart-post (>= 1.2, < 3) 46 | faraday-net_http (1.0.1) 47 | faraday-net_http_persistent (1.2.0) 48 | faraday-patron (1.0.0) 49 | faraday-rack (1.0.0) 50 | faraday-retry (1.0.3) 51 | ffi (1.15.5) 52 | forwardable-extended (2.6.0) 53 | gemoji (3.0.1) 54 | github-pages (226) 55 | github-pages-health-check (= 1.17.9) 56 | jekyll (= 3.9.2) 57 | jekyll-avatar (= 0.7.0) 58 | jekyll-coffeescript (= 1.1.1) 59 | jekyll-commonmark-ghpages (= 0.2.0) 60 | jekyll-default-layout (= 0.1.4) 61 | jekyll-feed (= 0.15.1) 62 | jekyll-gist (= 1.5.0) 63 | jekyll-github-metadata (= 2.13.0) 64 | jekyll-include-cache (= 0.2.1) 65 | jekyll-mentions (= 1.6.0) 66 | jekyll-optional-front-matter (= 0.3.2) 67 | jekyll-paginate (= 1.1.0) 68 | jekyll-readme-index (= 0.3.0) 69 | jekyll-redirect-from (= 0.16.0) 70 | jekyll-relative-links (= 0.6.1) 71 | jekyll-remote-theme (= 0.4.3) 72 | jekyll-sass-converter (= 1.5.2) 73 | jekyll-seo-tag (= 2.8.0) 74 | jekyll-sitemap (= 1.4.0) 75 | jekyll-swiss (= 1.0.0) 76 | jekyll-theme-architect (= 0.2.0) 77 | jekyll-theme-cayman (= 0.2.0) 78 | jekyll-theme-dinky (= 0.2.0) 79 | jekyll-theme-hacker (= 0.2.0) 80 | jekyll-theme-leap-day (= 0.2.0) 81 | jekyll-theme-merlot (= 0.2.0) 82 | jekyll-theme-midnight (= 0.2.0) 83 | jekyll-theme-minimal (= 0.2.0) 84 | jekyll-theme-modernist (= 0.2.0) 85 | jekyll-theme-primer (= 0.6.0) 86 | jekyll-theme-slate (= 0.2.0) 87 | jekyll-theme-tactile (= 0.2.0) 88 | jekyll-theme-time-machine (= 0.2.0) 89 | jekyll-titles-from-headings (= 0.5.3) 90 | jemoji (= 0.12.0) 91 | kramdown (= 2.3.2) 92 | kramdown-parser-gfm (= 1.1.0) 93 | liquid (= 4.0.3) 94 | mercenary (~> 0.3) 95 | minima (= 2.5.1) 96 | nokogiri (>= 1.13.4, < 2.0) 97 | rouge (= 3.26.0) 98 | terminal-table (~> 1.4) 99 | github-pages-health-check (1.17.9) 100 | addressable (~> 2.3) 101 | dnsruby (~> 1.60) 102 | octokit (~> 4.0) 103 | public_suffix (>= 3.0, < 5.0) 104 | typhoeus (~> 1.3) 105 | html-pipeline (2.14.1) 106 | activesupport (>= 2) 107 | nokogiri (>= 1.4) 108 | http_parser.rb (0.8.0) 109 | i18n (0.9.5) 110 | concurrent-ruby (~> 1.0) 111 | jekyll (3.9.2) 112 | addressable (~> 2.4) 113 | colorator (~> 1.0) 114 | em-websocket (~> 0.5) 115 | i18n (~> 0.7) 116 | jekyll-sass-converter (~> 1.0) 117 | jekyll-watch (~> 2.0) 118 | kramdown (>= 1.17, < 3) 119 | liquid (~> 4.0) 120 | mercenary (~> 0.3.3) 121 | pathutil (~> 0.9) 122 | rouge (>= 1.7, < 4) 123 | safe_yaml (~> 1.0) 124 | jekyll-avatar (0.7.0) 125 | jekyll (>= 3.0, < 5.0) 126 | jekyll-coffeescript (1.1.1) 127 | coffee-script (~> 2.2) 128 | coffee-script-source (~> 1.11.1) 129 | jekyll-commonmark (1.4.0) 130 | commonmarker (~> 0.22) 131 | jekyll-commonmark-ghpages (0.2.0) 132 | commonmarker (~> 0.23.4) 133 | jekyll (~> 3.9.0) 134 | jekyll-commonmark (~> 1.4.0) 135 | rouge (>= 2.0, < 4.0) 136 | jekyll-default-layout (0.1.4) 137 | jekyll (~> 3.0) 138 | jekyll-feed (0.15.1) 139 | jekyll (>= 3.7, < 5.0) 140 | jekyll-gist (1.5.0) 141 | octokit (~> 4.2) 142 | jekyll-github-metadata (2.13.0) 143 | jekyll (>= 3.4, < 5.0) 144 | octokit (~> 4.0, != 4.4.0) 145 | jekyll-include-cache (0.2.1) 146 | jekyll (>= 3.7, < 5.0) 147 | jekyll-mentions (1.6.0) 148 | html-pipeline (~> 2.3) 149 | jekyll (>= 3.7, < 5.0) 150 | jekyll-optional-front-matter (0.3.2) 151 | jekyll (>= 3.0, < 5.0) 152 | jekyll-paginate (1.1.0) 153 | jekyll-readme-index (0.3.0) 154 | jekyll (>= 3.0, < 5.0) 155 | jekyll-redirect-from (0.16.0) 156 | jekyll (>= 3.3, < 5.0) 157 | jekyll-relative-links (0.6.1) 158 | jekyll (>= 3.3, < 5.0) 159 | jekyll-remote-theme (0.4.3) 160 | addressable (~> 2.0) 161 | jekyll (>= 3.5, < 5.0) 162 | jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) 163 | rubyzip (>= 1.3.0, < 3.0) 164 | jekyll-sass-converter (1.5.2) 165 | sass (~> 3.4) 166 | jekyll-seo-tag (2.8.0) 167 | jekyll (>= 3.8, < 5.0) 168 | jekyll-sitemap (1.4.0) 169 | jekyll (>= 3.7, < 5.0) 170 | jekyll-swiss (1.0.0) 171 | jekyll-theme-architect (0.2.0) 172 | jekyll (> 3.5, < 5.0) 173 | jekyll-seo-tag (~> 2.0) 174 | jekyll-theme-cayman (0.2.0) 175 | jekyll (> 3.5, < 5.0) 176 | jekyll-seo-tag (~> 2.0) 177 | jekyll-theme-dinky (0.2.0) 178 | jekyll (> 3.5, < 5.0) 179 | jekyll-seo-tag (~> 2.0) 180 | jekyll-theme-hacker (0.2.0) 181 | jekyll (> 3.5, < 5.0) 182 | jekyll-seo-tag (~> 2.0) 183 | jekyll-theme-leap-day (0.2.0) 184 | jekyll (> 3.5, < 5.0) 185 | jekyll-seo-tag (~> 2.0) 186 | jekyll-theme-merlot (0.2.0) 187 | jekyll (> 3.5, < 5.0) 188 | jekyll-seo-tag (~> 2.0) 189 | jekyll-theme-midnight (0.2.0) 190 | jekyll (> 3.5, < 5.0) 191 | jekyll-seo-tag (~> 2.0) 192 | jekyll-theme-minimal (0.2.0) 193 | jekyll (> 3.5, < 5.0) 194 | jekyll-seo-tag (~> 2.0) 195 | jekyll-theme-modernist (0.2.0) 196 | jekyll (> 3.5, < 5.0) 197 | jekyll-seo-tag (~> 2.0) 198 | jekyll-theme-primer (0.6.0) 199 | jekyll (> 3.5, < 5.0) 200 | jekyll-github-metadata (~> 2.9) 201 | jekyll-seo-tag (~> 2.0) 202 | jekyll-theme-slate (0.2.0) 203 | jekyll (> 3.5, < 5.0) 204 | jekyll-seo-tag (~> 2.0) 205 | jekyll-theme-tactile (0.2.0) 206 | jekyll (> 3.5, < 5.0) 207 | jekyll-seo-tag (~> 2.0) 208 | jekyll-theme-time-machine (0.2.0) 209 | jekyll (> 3.5, < 5.0) 210 | jekyll-seo-tag (~> 2.0) 211 | jekyll-titles-from-headings (0.5.3) 212 | jekyll (>= 3.3, < 5.0) 213 | jekyll-watch (2.2.1) 214 | listen (~> 3.0) 215 | jemoji (0.12.0) 216 | gemoji (~> 3.0) 217 | html-pipeline (~> 2.2) 218 | jekyll (>= 3.0, < 5.0) 219 | kramdown (2.3.2) 220 | rexml 221 | kramdown-parser-gfm (1.1.0) 222 | kramdown (~> 2.0) 223 | liquid (4.0.3) 224 | listen (3.7.1) 225 | rb-fsevent (~> 0.10, >= 0.10.3) 226 | rb-inotify (~> 0.9, >= 0.9.10) 227 | mercenary (0.3.6) 228 | minima (2.5.1) 229 | jekyll (>= 3.5, < 5.0) 230 | jekyll-feed (~> 0.9) 231 | jekyll-seo-tag (~> 2.1) 232 | minitest (5.15.0) 233 | multipart-post (2.1.1) 234 | nokogiri (1.13.6-x86_64-linux) 235 | racc (~> 1.4) 236 | octokit (4.22.0) 237 | faraday (>= 0.9) 238 | sawyer (~> 0.8.0, >= 0.5.3) 239 | pathutil (0.16.2) 240 | forwardable-extended (~> 2.6) 241 | public_suffix (4.0.7) 242 | racc (1.6.0) 243 | rb-fsevent (0.11.1) 244 | rb-inotify (0.10.1) 245 | ffi (~> 1.0) 246 | rexml (3.2.5) 247 | rouge (3.26.0) 248 | ruby2_keywords (0.0.5) 249 | rubyzip (2.3.2) 250 | safe_yaml (1.0.5) 251 | sass (3.7.4) 252 | sass-listen (~> 4.0.0) 253 | sass-listen (4.0.0) 254 | rb-fsevent (~> 0.9, >= 0.9.4) 255 | rb-inotify (~> 0.9, >= 0.9.7) 256 | sawyer (0.8.2) 257 | addressable (>= 2.3.5) 258 | faraday (> 0.8, < 2.0) 259 | simpleidn (0.2.1) 260 | unf (~> 0.1.4) 261 | terminal-table (1.8.0) 262 | unicode-display_width (~> 1.1, >= 1.1.1) 263 | thread_safe (0.3.6) 264 | typhoeus (1.4.0) 265 | ethon (>= 0.9.0) 266 | tzinfo (1.2.9) 267 | thread_safe (~> 0.1) 268 | unf (0.1.4) 269 | unf_ext 270 | unf_ext (0.0.8.1) 271 | unicode-display_width (1.8.0) 272 | webrick (1.7.0) 273 | zeitwerk (2.5.4) 274 | 275 | PLATFORMS 276 | x86_64-linux 277 | 278 | DEPENDENCIES 279 | github-pages 280 | http_parser.rb (~> 0.6.0) 281 | tzinfo (~> 1.2) 282 | tzinfo-data 283 | wdm (~> 0.1.1) 284 | webrick (~> 1.7) 285 | 286 | BUNDLED WITH 287 | 2.3.14 -------------------------------------------------------------------------------- /blueprint/web/js/svgxuse.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * @copyright Copyright (c) 2016 IcoMoon.io 3 | * @license Licensed under MIT license 4 | * See https://github.com/Keyamoon/svgxuse 5 | * @version 1.1.20 6 | */ 7 | /*jslint browser: true */ 8 | /*global XDomainRequest, MutationObserver, window */ 9 | (function () { 10 | 'use strict'; 11 | if (window && window.addEventListener) { 12 | var cache = Object.create(null); // holds xhr objects to prevent multiple requests 13 | var checkUseElems; 14 | var tid; // timeout id 15 | var debouncedCheck = function () { 16 | clearTimeout(tid); 17 | tid = setTimeout(checkUseElems, 100); 18 | }; 19 | var unobserveChanges = function () { 20 | return; 21 | }; 22 | var observeChanges = function () { 23 | var observer; 24 | window.addEventListener('resize', debouncedCheck, false); 25 | window.addEventListener('orientationchange', debouncedCheck, false); 26 | if (window.MutationObserver) { 27 | observer = new MutationObserver(debouncedCheck); 28 | observer.observe(document.documentElement, { 29 | childList: true, 30 | subtree: true, 31 | attributes: true 32 | }); 33 | unobserveChanges = function () { 34 | try { 35 | observer.disconnect(); 36 | window.removeEventListener('resize', debouncedCheck, false); 37 | window.removeEventListener('orientationchange', debouncedCheck, false); 38 | } catch (ignore) {} 39 | }; 40 | } else { 41 | document.documentElement.addEventListener('DOMSubtreeModified', debouncedCheck, false); 42 | unobserveChanges = function () { 43 | document.documentElement.removeEventListener('DOMSubtreeModified', debouncedCheck, false); 44 | window.removeEventListener('resize', debouncedCheck, false); 45 | window.removeEventListener('orientationchange', debouncedCheck, false); 46 | }; 47 | } 48 | }; 49 | var createRequest = function (url) { 50 | // In IE 9, cross domain requests can only be sent using XDomainRequest. 51 | // XDomainRequest would fail if CORS headers are not set. 52 | // Therefore, XDomainRequest should only be used with cross domain requests. 53 | function getHostname(href) { 54 | var a = document.createElement('a'); 55 | a.href = href; 56 | return a.hostname; 57 | } 58 | var Request; 59 | var hname = location.hostname; 60 | var hname2; 61 | if (window.XMLHttpRequest) { 62 | Request = new XMLHttpRequest(); 63 | hname2 = getHostname(url); 64 | if (Request.withCredentials === undefined && hname2 !== '' && hname2 !== hname) { 65 | Request = XDomainRequest || undefined; 66 | } else { 67 | Request = XMLHttpRequest; 68 | } 69 | } 70 | return Request; 71 | }; 72 | var xlinkNS = 'http://www.w3.org/1999/xlink'; 73 | checkUseElems = function () { 74 | var base; 75 | var bcr; 76 | var fallback = ''; // optional fallback URL in case no base path to SVG file was given and no symbol definition was found. 77 | var hash; 78 | var i; 79 | var inProgressCount = 0; 80 | var isHidden; 81 | var Request; 82 | var url; 83 | var uses; 84 | var xhr; 85 | function observeIfDone() { 86 | // If done with making changes, start watching for chagnes in DOM again 87 | inProgressCount -= 1; 88 | if (inProgressCount === 0) { // if all xhrs were resolved 89 | unobserveChanges(); // make sure to remove old handlers 90 | observeChanges(); // watch for changes to DOM 91 | } 92 | } 93 | function attrUpdateFunc(spec) { 94 | return function () { 95 | if (cache[spec.base] !== true) { 96 | spec.useEl.setAttributeNS(xlinkNS, 'xlink:href', '#' + spec.hash); 97 | } 98 | }; 99 | } 100 | function onloadFunc(xhr) { 101 | return function () { 102 | var body = document.body; 103 | var x = document.createElement('x'); 104 | var svg; 105 | xhr.onload = null; 106 | x.innerHTML = xhr.responseText; 107 | svg = x.getElementsByTagName('svg')[0]; 108 | if (svg) { 109 | svg.setAttribute('aria-hidden', 'true'); 110 | svg.style.position = 'absolute'; 111 | svg.style.width = 0; 112 | svg.style.height = 0; 113 | svg.style.overflow = 'hidden'; 114 | body.insertBefore(svg, body.firstChild); 115 | } 116 | observeIfDone(); 117 | }; 118 | } 119 | function onErrorTimeout(xhr) { 120 | return function () { 121 | xhr.onerror = null; 122 | xhr.ontimeout = null; 123 | observeIfDone(); 124 | }; 125 | } 126 | unobserveChanges(); // stop watching for changes to DOM 127 | // find all use elements 128 | uses = document.getElementsByTagName('use'); 129 | for (i = 0; i < uses.length; i += 1) { 130 | try { 131 | bcr = uses[i].getBoundingClientRect(); 132 | } catch (ignore) { 133 | // failed to get bounding rectangle of the use element 134 | bcr = false; 135 | } 136 | url = uses[i].getAttributeNS(xlinkNS, 'href').split('#'); 137 | base = url[0]; 138 | hash = url[1]; 139 | isHidden = bcr && bcr.left === 0 && bcr.right === 0 && bcr.top === 0 && bcr.bottom === 0; 140 | if (bcr && bcr.width === 0 && bcr.height === 0 && !isHidden) { 141 | // the use element is empty 142 | // if there is a reference to an external SVG, try to fetch it 143 | // use the optional fallback URL if there is no reference to an external SVG 144 | if (fallback && !base.length && hash && !document.getElementById(hash)) { 145 | base = fallback; 146 | } 147 | if (base.length) { 148 | // schedule updating xlink:href 149 | xhr = cache[base]; 150 | if (xhr !== true) { 151 | // true signifies that prepending the SVG was not required 152 | setTimeout(attrUpdateFunc({ 153 | useEl: uses[i], 154 | base: base, 155 | hash: hash 156 | }), 0); 157 | } 158 | if (xhr === undefined) { 159 | Request = createRequest(base); 160 | if (Request !== undefined) { 161 | xhr = new Request(); 162 | cache[base] = xhr; 163 | xhr.onload = onloadFunc(xhr); 164 | xhr.onerror = onErrorTimeout(xhr); 165 | xhr.ontimeout = onErrorTimeout(xhr); 166 | xhr.open('GET', base); 167 | xhr.send(); 168 | inProgressCount += 1; 169 | } 170 | } 171 | } 172 | } else { 173 | if (!isHidden) { 174 | if (cache[base] === undefined) { 175 | // remember this URL if the use element was not empty and no request was sent 176 | cache[base] = true; 177 | } else if (cache[base].onload) { 178 | // if it turns out that prepending the SVG is not necessary, 179 | // abort the in-progress xhr. 180 | cache[base].abort(); 181 | delete cache[base].onload; 182 | cache[base] = true; 183 | } 184 | } else if (base.length && cache[base]) { 185 | attrUpdateFunc({ 186 | useEl: uses[i], 187 | base: base, 188 | hash: hash 189 | })(); 190 | } 191 | } 192 | } 193 | uses = ''; 194 | inProgressCount += 1; 195 | observeIfDone(); 196 | }; 197 | // The load event fires when all resources have finished loading, which allows detecting whether SVG use elements are empty. 198 | window.addEventListener('load', function winLoad() { 199 | window.removeEventListener('load', winLoad, false); // to prevent memory leaks 200 | tid = setTimeout(checkUseElems, 0); 201 | }, false); 202 | } 203 | }()); 204 | -------------------------------------------------------------------------------- /blueprint/web/styles/theme-white.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{font:inherit;font-size:100%;margin:0;padding:0;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;overflow-x:hidden;background:#f4f4f4}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-spacing:0;border-collapse:collapse}.clear:after{font-size:0;display:block;visibility:hidden;clear:both;height:0;content:" "}.clear{display:inline-block}* html .clear{height:1%}.clear{display:block}*{box-sizing:border-box}hr{clear:both;border:none;outline:none}em{font-style:italic}a{text-decoration:underline}ul{list-style:disc}ol{list-style:decimal}ol,ul{font-size:14px;padding:0 0 0 33px}ol li,ul li{margin:0}blockquote{padding:0 15px 0 40px}table{font-size:13px;width:100%;margin:20px 0;background:#fff}table th{font-size:16px;font-weight:700}table tr td{padding:7px}::selection{color:#fff;background:#000}::-moz-selection{color:#fff;background:#000}body{height:100vh;margin:0;flex-direction:column;color:#24292e;background-color:#fff}body,div.wrapper{display:flex;overflow:hidden}div.wrapper{flex-grow:1}div.content-wrapper{max-width:75ch}@media (min-width:1024px){div.content-wrapper{margin-left:auto;margin-right:auto}}div.content{flex-grow:1;display:flex;flex-direction:column;overflow:auto;padding:.5rem;margin-bottom:2.5rem}@media (min-width:1024px){div.content{padding:1rem;margin-bottom:0}}div.centered{display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;justify-content:space-around;min-width:100%;margin:0 auto}div.flushleft,div.raggedright{display:flex;justify-content:flex-start}div.flushright,div.raggedbottom,div.raggedleft{display:flex;justify-content:flex-end}div.raggedbottom{flex-direction:column}div.content{line-height:1.4rem}div.content>p{margin:2.1rem 0}li>p{margin:.28rem 0}.icon{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1rem;height:1rem;stroke-width:0;stroke:currentColor;fill:currentColor}h1,h2,h3,h4,h5,h6{font-family:Lucida Grande,Arial,Helvetica,sans-serif}h1{font-size:2rem;line-height:2rem;margin:1rem 0}h1,h2{color:#24292e}h2{font-size:1.5rem;margin:.8rem 0}h3,h4{margin:.67rem 0;color:#24292e}h3,h4,p{font-size:1rem}p{margin:.5rem 0}.titlepage{text-align:center}.titlepage h1{font-weight:400}b,strong{font-weight:700}dfn{font-style:italic}code,kbd,pre,samp{font-family:monospace,serif;font-size:1rem}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5rem}sub{bottom:-.25rem}.mdseries,.textmf{font-weight:400}.bfseries,.textbf{font-weight:700}.rmfamily,.textrm{font-family:serif}.sffamily,.textsf{font-family:sans-serif}.texttt,.ttfamily{font-family:monospace}.textup,.upshape{text-transform:uppercase}.itshape,.textit{font-style:italic}.slshape,.textsl{font-style:oblique}.scshape,.textsc{font-variant:small-caps}small.tiny{font-size:x-small}small.scriptsize{font-size:smaller}small.footnotesize,small.small{font-size:small}.normalsize{font-size:normal}big.large{font-size:large}big.xlarge,big.xxlarge{font-size:x-large}big.huge,big.xhuge{font-size:xx-large}.rm{font-family:serif;font-style:normal;font-weight:400}.cal,.it{font-style:italic}.cal,.it,.sl{font-family:serif;font-weight:400}.sl{font-style:oblique}.bf{font-family:serif;font-weight:700}.bf,.tt{font-style:normal}.tt{font-family:monospace;font-weight:400}.underbar{text-decoration:underline}.fbox,.framebox{border:1px solid #000;padding:1px 3px}.quotation p,.quote p,.verse p{margin-top:0;margin-bottom:.5em}hr{color:#000}dd{margin-left:3rem}dd p{padding:0;margin:0 0 1rem}ul.breadcrumbs{margin:0;padding:0;list-style:none;font-size:small}ul.breadcrumbs li{display:inline}ul.breadcrumbs a{text-decoration:none;color:#3a434b}li.crumb:after{content:" / "}div.equation{display:flex;align-items:center;margin:1rem}div.equation span.equation_label{margin-right:1rem}div.equation span.equation_label:before{content:"("}div.equation span.equation_label:after{content:")"}div.equation div.equation_content{margin:auto}figure{display:flex;flex-direction:column;vertical-align:bottom;overflow:auto}figure img{display:block;margin:0 auto}figcaption{display:block;text-align:center;margin-bottom:.1rem}span.caption_ref,span.caption_title,span.subcaption{font-weight:700}span.caption_ref:after{content:":"}span.subref:after{content:")"}footer#footnotes{clear:both;padding-top:1rem;padding-left:1rem;border-color:gray;border-top:1px solid}footer#footnotes h1{font-size:1.5rem;margin:0;margin-bottom:.5rem;color:#000}a.footnote{text-decoration:none}a.footnote sup:after{content:"]"}a.footnote sup:before{content:"["}body>header{background:#f2f2f2;color:#24292e;text-shadow:none;display:flex;align-items:center;padding:.5rem}svg#toc-toggle{width:1.125rem;height:1.125rem;margin-right:.5rem}h1#doc_title{color:#24292e;font-size:1.5rem;margin:auto}#doc_title a,#doc_title a:visited{text-decoration:none;color:#24292e}.theindex li{list-style-type:none}nav.index-groups{margin-bottom:1rem}a[class^=index-group]{text-decoration:none}a.index-group:after{content:" |"}section.theindex{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:1rem}section.theindex h2{min-width:100%;margin:1rem 0 .5rem}ul.index-column{min-width:100%}@media (min-width:1024px){ul.index-column{min-width:auto}}nav.prev_up_next a.index{font-size:small;padding-left:.5rem;padding-right:.5rem}dl.description dt{font-weight:700}table.list{margin-left:15px;margin-top:1em;margin-bottom:1em}table.list td{padding-right:5px}div.displaymath{overflow:auto}a.eqref:before{content:"("}a.eqref:after{content:")"}nav.prev_up_next{position:fixed;z-index:1;right:0;bottom:0;display:flex;height:2.5rem;background:#f2f2f2}nav.prev_up_next a{font-size:150%;margin:auto;padding:.5rem 1rem;text-decoration:none;color:#24292e;text-shadow:none}hspace,vspace{margin:0;padding:0}div.bigskip{margin-bottom:4rem}div.medskip{margin:0;padding:0;margin-bottom:2rem}div.bigskip{margin:0;padding:0;margin-bottom:1rem}.tabular{border-collapse:collapse;color:#24292e;background-color:#fff;width:auto}.tabular td,.tabular th{vertical-align:baseline;text-align:left;padding:.3em .6em;empty-cells:show}td p:first-child,th p:first-child{margin-top:0;margin-bottom:0}td p,th p{margin-top:1em;margin-bottom:0}@keyframes a{0%{background-color:#d9d9d9}to{background-color:#fff}}div[class$=_thmwrapper]{margin-top:1rem}div[class$=_thmwrapper]:target{animation:a 1s ease}div[class$=_thmheading]{display:flex;font-weight:700;line-height:150%}span[class$=_thmtitle]:before{content:"("}span[class$=_thmtitle]:after{content:")"}div[class$=_thmcontent]{font-weight:400;margin-left:1rem;padding-top:.14rem;padding-left:1rem}span[class$=_thmlabel]{margin-left:.5rem;margin-right:.5rem}div[class$=proof_heading]{font-weight:700;line-height:120%;cursor:pointer}div.proof_content{font-weight:400;margin-left:1rem;padding-top:.5rem;padding-left:1rem}span.expand-proof{font-size:80%}div.hilite{animation:a 1s ease}span.qed{float:right}button.modal{border:none;text-align:center;text-decoration:none;background:transparent;cursor:pointer;padding:0}div.modal-container{position:fixed;z-index:2;top:0;left:0;display:none;width:100%;height:100%}div.modal-content{font-weight:400;overflow:auto;margin:auto;vertical-align:middle;border:1px solid #e6e6e6;border-radius:5px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}div.modal-content header{position:relative;background:#f2f2f2;color:#24292e;text-shadow:none;display:flex;flex-direction:row;min-height:1rem;min-width:100%;text-align:center;vertical-align:middle;padding:0 .5rem;justify-content:space-between}div.modal-content header button.closebtn{font-size:120%;font-weight:700;background:Transparent;border:none;margin:auto 0;padding-right:.3rem;text-decoration:none;color:#24292e;cursor:pointer}div.modal-content header h1{font-size:120%;margin:auto 0;padding:.2rem;color:#464f59}div.modal-content a{text-decoration:none}div.modal-content ul{padding:1rem;list-style:none}div.modal-content li{padding-left:.5rem}a.icon{text-decoration:none;color:#24292e;border:none;background-color:Transparent}div[class$=_thmheading]:hover div.thm_header_hidden_extras{display:inline-block}div.thm_header_hidden_extras{display:none}ul.quizz{display:flex;flex-direction:column;list-style:circle!important}ul.quizz li{display:flex;padding:.5rem;flex-direction:row;min-width:100%;min-height:3rem;flex-grow:1;align-items:center;justify-content:space-between}ul.quizz li.active-qright{background-color:green}ul.quizz li.active-qwrong{background-color:red}ul.quizz svg.icon{display:none;padding-right:.5rem;width:2rem;height:2rem}.tikzcd{overflow:auto}.tikzcd,.tikzpicture{display:block;margin:.5rem auto}.local_toc ul{padding-left:1rem;list-style:none}.local_toc ul a{text-decoration:none;color:#24292e}.local_toc ul li{padding:.2rem 0}nav.toc{flex-shrink:0;display:none;width:100%;overflow-x:hidden;overflow-y:auto;flex-direction:column;margin-right:1rem;padding:0;padding-right:1rem;transition:left .5s ease;background-color:#fff;border-right:1px solid #f2f2f2}@media (min-width:1024px){nav.toc{display:flex;max-width:25ch}}nav.active{width:100%}.toc ul{min-width:100%;padding-left:0;list-style:none}.toc ul a{display:inline-block;max-width:90%;padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;transition:all .1s ease;text-align:left;text-decoration:none;font-size:1.125rem;color:#464f59;text-shadow:none;flex-grow:1}.toc ul a:hover{transition:all .2s ease;background:#e6e6e6}.toc ul li{display:flex;min-width:100%;align-items:center;flex-wrap:wrap;justify-content:space-between;background-color:#fff}.toc ul li.current{background-color:#fff;font-weight:700}.sub-toc-0 a{padding-left:.8rem}.sub-toc-1 a{padding-left:1.6rem}.sub-toc-2 a{padding-left:2.4rem}.sub-toc-3 a{padding-left:3.2rem}.sub-toc-4 a{padding-left:4rem}ul.sub-toc-1,ul.sub-toc-2,ul.sub-toc-3,ul.sub-toc-4{display:none}span.expand-toc{min-width:.7rem;width:.8rem;height:.8rem;padding:0;padding-right:.5rem;color:#5c6976;font-size:125%}span.expand-toc,svg.close-toc{cursor:pointer;text-align:center;background-color:Transparent}svg.close-toc{min-width:1.3rem;min-height:1.3rem;margin:.5rem;margin-left:auto;color:#464f59;display:none}nav.active svg.close-toc{display:inline-block}ul.active{display:block}code.verb{font-family:monospace;font-style:normal;font-weight:400}pre.verbatim{margin:1rem 2rem;background-color:#f2f2f2;padding:.5rem} -------------------------------------------------------------------------------- /blueprint/web/styles/theme-green.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{font:inherit;font-size:100%;margin:0;padding:0;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;overflow-x:hidden;background:#f4f4f4}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-spacing:0;border-collapse:collapse}.clear:after{font-size:0;display:block;visibility:hidden;clear:both;height:0;content:" "}.clear{display:inline-block}* html .clear{height:1%}.clear{display:block}*{box-sizing:border-box}hr{clear:both;border:none;outline:none}em{font-style:italic}a{text-decoration:underline}ul{list-style:disc}ol{list-style:decimal}ol,ul{font-size:14px;padding:0 0 0 33px}ol li,ul li{margin:0}blockquote{padding:0 15px 0 40px}table{font-size:13px;width:100%;margin:20px 0;background:#fff}table th{font-size:16px;font-weight:700}table tr td{padding:7px}::selection{color:#fff;background:#000}::-moz-selection{color:#fff;background:#000}body{height:100vh;margin:0;flex-direction:column;color:#000;background-color:#fff}body,div.wrapper{display:flex;overflow:hidden}div.wrapper{flex-grow:1}div.content-wrapper{max-width:75ch}@media (min-width:1024px){div.content-wrapper{margin-left:auto;margin-right:auto}}div.content{flex-grow:1;display:flex;flex-direction:column;overflow:auto;padding:.5rem;margin-bottom:2.5rem}@media (min-width:1024px){div.content{padding:1rem;margin-bottom:0}}div.centered{display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;justify-content:space-around;min-width:100%;margin:0 auto}div.flushleft,div.raggedright{display:flex;justify-content:flex-start}div.flushright,div.raggedbottom,div.raggedleft{display:flex;justify-content:flex-end}div.raggedbottom{flex-direction:column}div.content{line-height:1.4rem}div.content>p{margin:2.1rem 0}li>p{margin:.28rem 0}.icon{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1rem;height:1rem;stroke-width:0;stroke:currentColor;fill:currentColor}h1,h2,h3,h4,h5,h6{font-family:Lucida Grande,Arial,Helvetica,sans-serif}h1{font-size:2rem;line-height:2rem;margin:1rem 0}h1,h2{color:#000}h2{font-size:1.5rem;margin:.8rem 0}h3,h4{margin:.67rem 0;color:#000}h3,h4,p{font-size:1rem}p{margin:.5rem 0}.titlepage{text-align:center}.titlepage h1{font-weight:400}b,strong{font-weight:700}dfn{font-style:italic}code,kbd,pre,samp{font-family:monospace,serif;font-size:1rem}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5rem}sub{bottom:-.25rem}.mdseries,.textmf{font-weight:400}.bfseries,.textbf{font-weight:700}.rmfamily,.textrm{font-family:serif}.sffamily,.textsf{font-family:sans-serif}.texttt,.ttfamily{font-family:monospace}.textup,.upshape{text-transform:uppercase}.itshape,.textit{font-style:italic}.slshape,.textsl{font-style:oblique}.scshape,.textsc{font-variant:small-caps}small.tiny{font-size:x-small}small.scriptsize{font-size:smaller}small.footnotesize,small.small{font-size:small}.normalsize{font-size:normal}big.large{font-size:large}big.xlarge,big.xxlarge{font-size:x-large}big.huge,big.xhuge{font-size:xx-large}.rm{font-family:serif;font-style:normal;font-weight:400}.cal,.it{font-style:italic}.cal,.it,.sl{font-family:serif;font-weight:400}.sl{font-style:oblique}.bf{font-family:serif;font-weight:700}.bf,.tt{font-style:normal}.tt{font-family:monospace;font-weight:400}.underbar{text-decoration:underline}.fbox,.framebox{border:1px solid #000;padding:1px 3px}.quotation p,.quote p,.verse p{margin-top:0;margin-bottom:.5em}hr{color:#000}dd{margin-left:3rem}dd p{padding:0;margin:0 0 1rem}ul.breadcrumbs{margin:0;padding:0;list-style:none;font-size:small}ul.breadcrumbs li{display:inline}ul.breadcrumbs a{text-decoration:none;color:#4d7326}li.crumb:after{content:" / "}div.equation{display:flex;align-items:center;margin:1rem}div.equation span.equation_label{margin-right:1rem}div.equation span.equation_label:before{content:"("}div.equation span.equation_label:after{content:")"}div.equation div.equation_content{margin:auto}figure{display:flex;flex-direction:column;vertical-align:bottom;overflow:auto}figure img{display:block;margin:0 auto}figcaption{display:block;text-align:center;margin-bottom:.1rem}span.caption_ref,span.caption_title,span.subcaption{font-weight:700}span.caption_ref:after{content:":"}span.subref:after{content:")"}footer#footnotes{clear:both;padding-top:1rem;padding-left:1rem;border-color:gray;border-top:1px solid}footer#footnotes h1{font-size:1.5rem;margin:0;margin-bottom:.5rem;color:#000}a.footnote{text-decoration:none}a.footnote sup:after{content:"]"}a.footnote sup:before{content:"["}body>header{background:linear-gradient(180deg,#80bf40 0,#4d7326);color:#ffc;text-shadow:1px 2px 0 rgba(0,0,0,.8);display:flex;align-items:center;padding:.5rem}svg#toc-toggle{width:1.125rem;height:1.125rem;margin-right:.5rem}h1#doc_title{color:#ffc;font-size:1.5rem;margin:auto}#doc_title a,#doc_title a:visited{text-decoration:none;color:#ffc}.theindex li{list-style-type:none}nav.index-groups{margin-bottom:1rem}a[class^=index-group]{text-decoration:none}a.index-group:after{content:" |"}section.theindex{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:1rem}section.theindex h2{min-width:100%;margin:1rem 0 .5rem}ul.index-column{min-width:100%}@media (min-width:1024px){ul.index-column{min-width:auto}}nav.prev_up_next a.index{font-size:small;padding-left:.5rem;padding-right:.5rem}dl.description dt{font-weight:700}table.list{margin-left:15px;margin-top:1em;margin-bottom:1em}table.list td{padding-right:5px}div.displaymath{overflow:auto}a.eqref:before{content:"("}a.eqref:after{content:")"}nav.prev_up_next{position:fixed;z-index:1;right:0;bottom:0;display:flex;height:2.5rem;background:linear-gradient(180deg,#80bf40 0,#4d7326)}nav.prev_up_next a{font-size:150%;margin:auto;padding:.5rem 1rem;text-decoration:none;color:#fff;text-shadow:1px 2px 0 rgba(0,0,0,.8)}hspace,vspace{margin:0;padding:0}div.bigskip{margin-bottom:4rem}div.medskip{margin:0;padding:0;margin-bottom:2rem}div.bigskip{margin:0;padding:0;margin-bottom:1rem}.tabular{border-collapse:collapse;color:#000;background-color:#fff;width:auto}.tabular td,.tabular th{vertical-align:baseline;text-align:left;padding:.3em .6em;empty-cells:show}td p:first-child,th p:first-child{margin-top:0;margin-bottom:0}td p,th p{margin-top:1em;margin-bottom:0}@keyframes a{0%{background-color:#d9d9d9}to{background-color:#fff}}div[class$=_thmwrapper]{margin-top:1rem}div[class$=_thmwrapper]:target{animation:a 1s ease}div[class$=_thmheading]{display:flex;font-weight:700;line-height:150%}span[class$=_thmtitle]:before{content:"("}span[class$=_thmtitle]:after{content:")"}div[class$=_thmcontent]{font-weight:400;margin-left:1rem;padding-top:.14rem;padding-left:1rem}span[class$=_thmlabel]{margin-left:.5rem;margin-right:.5rem}div[class$=proof_heading]{font-weight:700;line-height:120%;cursor:pointer}div.proof_content{font-weight:400;margin-left:1rem;padding-top:.5rem;padding-left:1rem}span.expand-proof{font-size:80%}div.hilite{animation:a 1s ease}span.qed{float:right}button.modal{border:none;text-align:center;text-decoration:none;background:transparent;cursor:pointer;padding:0}div.modal-container{position:fixed;z-index:2;top:0;left:0;display:none;width:100%;height:100%}div.modal-content{font-weight:400;overflow:auto;margin:auto;vertical-align:middle;border:1px solid #693;border-radius:5px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}div.modal-content header{position:relative;background:linear-gradient(180deg,#80bf40 0,#4d7326);color:#ffc;text-shadow:1px 2px 0 rgba(0,0,0,.8);display:flex;flex-direction:row;min-height:1rem;min-width:100%;text-align:center;vertical-align:middle;padding:0 .5rem;justify-content:space-between}div.modal-content header button.closebtn{font-size:120%;font-weight:700;background:Transparent;border:none;margin:auto 0;padding-right:.3rem;text-decoration:none;color:#ffc;cursor:pointer}div.modal-content header h1{font-size:120%;margin:auto 0;padding:.2rem;color:#fff}div.modal-content a{text-decoration:none}div.modal-content ul{padding:1rem;list-style:none}div.modal-content li{padding-left:.5rem}a.icon{text-decoration:none;color:#000;border:none;background-color:Transparent}div[class$=_thmheading]:hover div.thm_header_hidden_extras{display:inline-block}div.thm_header_hidden_extras{display:none}ul.quizz{display:flex;flex-direction:column;list-style:circle!important}ul.quizz li{display:flex;padding:.5rem;flex-direction:row;min-width:100%;min-height:3rem;flex-grow:1;align-items:center;justify-content:space-between}ul.quizz li.active-qright{background-color:green}ul.quizz li.active-qwrong{background-color:red}ul.quizz svg.icon{display:none;padding-right:.5rem;width:2rem;height:2rem}.tikzcd{overflow:auto}.tikzcd,.tikzpicture{display:block;margin:.5rem auto}.local_toc ul{padding-left:1rem;list-style:none}.local_toc ul a{text-decoration:none;color:#000}.local_toc ul li{padding:.2rem 0}nav.toc{flex-shrink:0;display:none;width:100%;overflow-x:hidden;overflow-y:auto;flex-direction:column;margin-right:1rem;padding:0;padding-right:1rem;transition:left .5s ease;background-color:#80bf40;border-right:none}@media (min-width:1024px){nav.toc{display:flex;max-width:25ch}}nav.active{width:100%}.toc ul{min-width:100%;padding-left:0;list-style:none}.toc ul a{display:inline-block;max-width:90%;padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;transition:all .1s ease;text-align:left;text-decoration:none;font-size:1.125rem;color:#fff;text-shadow:2px 2px 2px rgba(0,0,0,.8);flex-grow:1}.toc ul a:hover{transition:all .2s ease;background:#693}.toc ul li{display:flex;min-width:100%;align-items:center;flex-wrap:wrap;justify-content:space-between;background-color:#80bf40}.toc ul li.current{background-color:#9c6;font-weight:400}.sub-toc-0 a{padding-left:.8rem}.sub-toc-1 a{padding-left:1.6rem}.sub-toc-2 a{padding-left:2.4rem}.sub-toc-3 a{padding-left:3.2rem}.sub-toc-4 a{padding-left:4rem}ul.sub-toc-1,ul.sub-toc-2,ul.sub-toc-3,ul.sub-toc-4{display:none}span.expand-toc{min-width:.7rem;width:.8rem;height:.8rem;padding:0;padding-right:.5rem;font-size:125%}span.expand-toc,svg.close-toc{cursor:pointer;text-align:center;color:#fff;background-color:Transparent}svg.close-toc{min-width:1.3rem;min-height:1.3rem;margin:.5rem;margin-left:auto;display:none}nav.active svg.close-toc{display:inline-block}ul.active{display:block}code.verb{font-family:monospace;font-style:normal;font-weight:400}pre.verbatim{margin:1rem 2rem;background-color:#f2f2f2;padding:.5rem} -------------------------------------------------------------------------------- /blueprint/web/styles/theme-blue.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{font:inherit;font-size:100%;margin:0;padding:0;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;overflow-x:hidden;background:#f4f4f4}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-spacing:0;border-collapse:collapse}.clear:after{font-size:0;display:block;visibility:hidden;clear:both;height:0;content:" "}.clear{display:inline-block}* html .clear{height:1%}.clear{display:block}*{box-sizing:border-box}hr{clear:both;border:none;outline:none}em{font-style:italic}a{text-decoration:underline}ul{list-style:disc}ol{list-style:decimal}ol,ul{font-size:14px;padding:0 0 0 33px}ol li,ul li{margin:0}blockquote{padding:0 15px 0 40px}table{font-size:13px;width:100%;margin:20px 0;background:#fff}table th{font-size:16px;font-weight:700}table tr td{padding:7px}::selection{color:#fff;background:#000}::-moz-selection{color:#fff;background:#000}body{height:100vh;margin:0;flex-direction:column;color:#0a0a14;background-color:#e8e8e8}body,div.wrapper{display:flex;overflow:hidden}div.wrapper{flex-grow:1}div.content-wrapper{max-width:75ch}@media (min-width:1024px){div.content-wrapper{margin-left:auto;margin-right:auto}}div.content{flex-grow:1;display:flex;flex-direction:column;overflow:auto;padding:.5rem;margin-bottom:2.5rem}@media (min-width:1024px){div.content{padding:1rem;margin-bottom:0}}div.centered{display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;justify-content:space-around;min-width:100%;margin:0 auto}div.flushleft,div.raggedright{display:flex;justify-content:flex-start}div.flushright,div.raggedbottom,div.raggedleft{display:flex;justify-content:flex-end}div.raggedbottom{flex-direction:column}div.content{line-height:1.4rem}div.content>p{margin:2.1rem 0}li>p{margin:.28rem 0}.icon{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1rem;height:1rem;stroke-width:0;stroke:currentColor;fill:currentColor}h1,h2,h3,h4,h5,h6{font-family:Lucida Grande,Arial,Helvetica,sans-serif}h1{font-size:2rem;line-height:2rem;margin:1rem 0}h1,h2{color:#0f2f48}h2{font-size:1.5rem;margin:.8rem 0}h3,h4{margin:.67rem 0;color:#0f2f48}h3,h4,p{font-size:1rem}p{margin:.5rem 0}.titlepage{text-align:center}.titlepage h1{font-weight:400}b,strong{font-weight:700}dfn{font-style:italic}code,kbd,pre,samp{font-family:monospace,serif;font-size:1rem}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5rem}sub{bottom:-.25rem}.mdseries,.textmf{font-weight:400}.bfseries,.textbf{font-weight:700}.rmfamily,.textrm{font-family:serif}.sffamily,.textsf{font-family:sans-serif}.texttt,.ttfamily{font-family:monospace}.textup,.upshape{text-transform:uppercase}.itshape,.textit{font-style:italic}.slshape,.textsl{font-style:oblique}.scshape,.textsc{font-variant:small-caps}small.tiny{font-size:x-small}small.scriptsize{font-size:smaller}small.footnotesize,small.small{font-size:small}.normalsize{font-size:normal}big.large{font-size:large}big.xlarge,big.xxlarge{font-size:x-large}big.huge,big.xhuge{font-size:xx-large}.rm{font-family:serif;font-style:normal;font-weight:400}.cal,.it{font-style:italic}.cal,.it,.sl{font-family:serif;font-weight:400}.sl{font-style:oblique}.bf{font-family:serif;font-weight:700}.bf,.tt{font-style:normal}.tt{font-family:monospace;font-weight:400}.underbar{text-decoration:underline}.fbox,.framebox{border:1px solid #000;padding:1px 3px}.quotation p,.quote p,.verse p{margin-top:0;margin-bottom:.5em}hr{color:#000}dd{margin-left:3rem}dd p{padding:0;margin:0 0 1rem}ul.breadcrumbs{margin:0;padding:0;list-style:none;font-size:small}ul.breadcrumbs li{display:inline}ul.breadcrumbs a{text-decoration:none;color:#396282}li.crumb:after{content:" / "}div.equation{display:flex;align-items:center;margin:1rem}div.equation span.equation_label{margin-right:1rem}div.equation span.equation_label:before{content:"("}div.equation span.equation_label:after{content:")"}div.equation div.equation_content{margin:auto}figure{display:flex;flex-direction:column;vertical-align:bottom;overflow:auto}figure img{display:block;margin:0 auto}figcaption{display:block;text-align:center;margin-bottom:.1rem}span.caption_ref,span.caption_title,span.subcaption{font-weight:700}span.caption_ref:after{content:":"}span.subref:after{content:")"}footer#footnotes{clear:both;padding-top:1rem;padding-left:1rem;border-color:gray;border-top:1px solid}footer#footnotes h1{font-size:1.5rem;margin:0;margin-bottom:.5rem;color:#000}a.footnote{text-decoration:none}a.footnote sup:after{content:"]"}a.footnote sup:before{content:"["}body>header{background:linear-gradient(180deg,#6696bb 0,#396282);color:#fff;text-shadow:1px 2px 0 rgba(0,0,0,.8);display:flex;align-items:center;padding:.5rem}svg#toc-toggle{width:1.125rem;height:1.125rem;margin-right:.5rem}h1#doc_title{color:#fff;font-size:1.5rem;margin:auto}#doc_title a,#doc_title a:visited{text-decoration:none;color:#fff}.theindex li{list-style-type:none}nav.index-groups{margin-bottom:1rem}a[class^=index-group]{text-decoration:none}a.index-group:after{content:" |"}section.theindex{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:1rem}section.theindex h2{min-width:100%;margin:1rem 0 .5rem}ul.index-column{min-width:100%}@media (min-width:1024px){ul.index-column{min-width:auto}}nav.prev_up_next a.index{font-size:small;padding-left:.5rem;padding-right:.5rem}dl.description dt{font-weight:700}table.list{margin-left:15px;margin-top:1em;margin-bottom:1em}table.list td{padding-right:5px}div.displaymath{overflow:auto}a.eqref:before{content:"("}a.eqref:after{content:")"}nav.prev_up_next{position:fixed;z-index:1;right:0;bottom:0;display:flex;height:2.5rem;background:linear-gradient(180deg,#6696bb 0,#396282)}nav.prev_up_next a{font-size:150%;margin:auto;padding:.5rem 1rem;text-decoration:none;color:#fff;text-shadow:1px 2px 0 rgba(0,0,0,.8)}hspace,vspace{margin:0;padding:0}div.bigskip{margin-bottom:4rem}div.medskip{margin:0;padding:0;margin-bottom:2rem}div.bigskip{margin:0;padding:0;margin-bottom:1rem}.tabular{border-collapse:collapse;color:#0a0a14;background-color:#e8e8e8;width:auto}.tabular td,.tabular th{vertical-align:baseline;text-align:left;padding:.3em .6em;empty-cells:show}td p:first-child,th p:first-child{margin-top:0;margin-bottom:0}td p,th p{margin-top:1em;margin-bottom:0}@keyframes a{0%{background-color:#c2c2c2}to{background-color:#e8e8e8}}div[class$=_thmwrapper]{margin-top:1rem}div[class$=_thmwrapper]:target{animation:a 1s ease}div[class$=_thmheading]{display:flex;font-weight:700;line-height:150%}span[class$=_thmtitle]:before{content:"("}span[class$=_thmtitle]:after{content:")"}div[class$=_thmcontent]{font-weight:400;margin-left:1rem;padding-top:.14rem;padding-left:1rem}span[class$=_thmlabel]{margin-left:.5rem;margin-right:.5rem}div[class$=proof_heading]{font-weight:700;line-height:120%;cursor:pointer}div.proof_content{font-weight:400;margin-left:1rem;padding-top:.5rem;padding-left:1rem}span.expand-proof{font-size:80%}div.hilite{animation:a 1s ease}span.qed{float:right}button.modal{border:none;text-align:center;text-decoration:none;background:transparent;cursor:pointer;padding:0}div.modal-container{position:fixed;z-index:2;top:0;left:0;display:none;width:100%;height:100%}div.modal-content{font-weight:400;overflow:auto;margin:auto;vertical-align:middle;border:1px solid #497da5;border-radius:5px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}div.modal-content header{position:relative;background:linear-gradient(180deg,#6696bb 0,#396282);color:#fff;text-shadow:1px 2px 0 rgba(0,0,0,.8);display:flex;flex-direction:row;min-height:1rem;min-width:100%;text-align:center;vertical-align:middle;padding:0 .5rem;justify-content:space-between}div.modal-content header button.closebtn{font-size:120%;font-weight:700;background:Transparent;border:none;margin:auto 0;padding-right:.3rem;text-decoration:none;color:#fff;cursor:pointer}div.modal-content header h1{font-size:120%;margin:auto 0;padding:.2rem;color:#fff}div.modal-content a{text-decoration:none}div.modal-content ul{padding:1rem;list-style:none}div.modal-content li{padding-left:.5rem}a.icon{text-decoration:none;color:#0a0a14;border:none;background-color:Transparent}div[class$=_thmheading]:hover div.thm_header_hidden_extras{display:inline-block}div.thm_header_hidden_extras{display:none}ul.quizz{display:flex;flex-direction:column;list-style:circle!important}ul.quizz li{display:flex;padding:.5rem;flex-direction:row;min-width:100%;min-height:3rem;flex-grow:1;align-items:center;justify-content:space-between}ul.quizz li.active-qright{background-color:green}ul.quizz li.active-qwrong{background-color:red}ul.quizz svg.icon{display:none;padding-right:.5rem;width:2rem;height:2rem}.tikzcd{overflow:auto}.tikzcd,.tikzpicture{display:block;margin:.5rem auto}.local_toc ul{padding-left:1rem;list-style:none}.local_toc ul a{text-decoration:none;color:#0a0a14}.local_toc ul li{padding:.2rem 0}nav.toc{flex-shrink:0;display:none;width:100%;overflow-x:hidden;overflow-y:auto;flex-direction:column;margin-right:1rem;padding:0;padding-right:1rem;transition:left .5s ease;background-color:#6696bb;border-right:none}@media (min-width:1024px){nav.toc{display:flex;max-width:25ch}}nav.active{width:100%}.toc ul{min-width:100%;padding-left:0;list-style:none}.toc ul a{display:inline-block;max-width:90%;padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;transition:all .1s ease;text-align:left;text-decoration:none;font-size:1.125rem;color:#fff;text-shadow:2px 2px 2px rgba(0,0,0,.8);flex-grow:1}.toc ul a:hover{transition:all .2s ease;background:#497da5}.toc ul li{display:flex;min-width:100%;align-items:center;flex-wrap:wrap;justify-content:space-between;background-color:#6696bb}.toc ul li.current{background-color:#89aecb;font-weight:400}.sub-toc-0 a{padding-left:.8rem}.sub-toc-1 a{padding-left:1.6rem}.sub-toc-2 a{padding-left:2.4rem}.sub-toc-3 a{padding-left:3.2rem}.sub-toc-4 a{padding-left:4rem}ul.sub-toc-1,ul.sub-toc-2,ul.sub-toc-3,ul.sub-toc-4{display:none}span.expand-toc{min-width:.7rem;width:.8rem;height:.8rem;padding:0;padding-right:.5rem;font-size:125%}span.expand-toc,svg.close-toc{cursor:pointer;text-align:center;color:#fff;background-color:Transparent}svg.close-toc{min-width:1.3rem;min-height:1.3rem;margin:.5rem;margin-left:auto;display:none}nav.active svg.close-toc{display:inline-block}ul.active{display:block}code.verb{font-family:monospace;font-style:normal;font-weight:400}pre.verbatim{margin:1rem 2rem;background-color:#dbdbdb;padding:.5rem} -------------------------------------------------------------------------------- /blueprint/web/symbol-defs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | mindmap 5 | 6 | 7 | 8 | pencil 9 | 10 | 11 | 12 | lifebuoy 13 | 14 | 15 | 16 | cogs 17 | 18 | 19 | 20 | list-numbered 21 | 22 | 23 | 24 | list2 25 | 26 | 27 | 28 | menu 29 | 30 | 31 | 32 | eye-plus 33 | 34 | 35 | 36 | 37 | eye-minus 38 | 39 | 40 | 41 | 42 | smile 43 | 44 | 45 | 46 | sad 47 | 48 | 49 | 50 | plus 51 | 52 | 53 | 54 | cross 55 | 56 | 57 | 58 | arrow-up 59 | 60 | 61 | 62 | arrow-right 63 | 64 | 65 | 66 | arrow-left 67 | 68 | 69 | 70 | warning 71 | 72 | 73 | 74 | 75 | 76 | question 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /blueprint/src/content.tex: -------------------------------------------------------------------------------- 1 | \chapter{smallpaper} 2 | \begin{lemma}\label{lem1} \lean{two_rpow_ge_add_one}\leanok 3 | We have $2^x \ge x+1$ for any real $x\ge1$. 4 | \end{lemma} 5 | \begin{proof} 6 | \leanok 7 | \end{proof} 8 | 9 | \begin{lemma}\label{lem2} \lean{two_rpow_ge_half_add_one} 10 | We have $2^x \ge x/2+1$ for any real $x\ge0$. 11 | \end{lemma} 12 | \begin{proof} 13 | \leanok 14 | \end{proof} 15 | 16 | 17 | \begin{theorem}[Fundamental theorem of arithmetic] \label{thm3} \lean{fundamental_theorem_of_arithmetic}\leanok 18 | Every integer $n\ge1$ factors uniquely into a product of primes $n = p_1^{a_1}\cdots p_k^{a_k}$. 19 | \end{theorem} 20 | \begin{proof} 21 | \leanok 22 | \end{proof} 23 | 24 | \begin{definition}[Divisor function] \label{def4} \lean{tau}\leanok 25 | $\tau(n)$ denotes the number of divisors of an integer $n\ge1$. 26 | \end{definition} 27 | 28 | \begin{lemma} \label{lem5} \lean{tau_eq_prod_factorization_add_one}\leanok 29 | If $n = p_1^{a_1}\cdots p_k^{a_k}$ is the prime factorization of an integer, then the divisor function evaluated at $n$ equals $\tau(n) = (a_1+1)\cdots(a_k+1)$. 30 | \end{lemma} 31 | \begin{proof} 32 | \leanok 33 | \end{proof} 34 | 35 | \begin{lemma} \label{lem6} \lean{tau_n_div_n_rpow_eps_eq_prod} 36 | If $n = p_1^{a_1}\cdots p_k^{a_k}$ is the prime factorization of an integer, then 37 | \begin{equation}\label{eq:taunn} 38 | \frac{\tau(n)}{n^\eps} = \prod_{i\le k}\frac{a_i+1}{p_i^{a_i \eps}}. 39 | \end{equation} 40 | \end{lemma} 41 | \begin{proof}\leanok 42 | \uses{def4, lem5} 43 | Use definition \ref{def4}, lemma \ref{lem5}. 44 | \end{proof} 45 | 46 | 47 | \begin{lemma} \label{lem7} \lean{lemma7} 48 | Let $p_i,a_i\ge1$ and $\eps>0$. If $p_i^{\eps}\ge 2$ then $\frac{a_i+1}{p_i^{a_i \eps}}\le \frac{a_i+1}{2^{a_i}}\le 1$. 49 | \end{lemma} 50 | \begin{proof}\leanok 51 | \uses{lem1} 52 | Use lemma \ref{lem1} with $x=a_i$. 53 | \end{proof} 54 | 55 | \begin{lemma} \label{lem8} \lean{lemma8} 56 | Let $p_i,a_i\ge1$ and $\eps>0$. If $p_i^{\eps}< 2$ then $\frac{a_i+1}{p_i^{a_i \eps}}\le 2/\eps$. 57 | \end{lemma} 58 | \begin{proof}\leanok 59 | \uses{lem2} 60 | Use lemma \ref{lem2} with $x=\eps$. 61 | \end{proof} 62 | 63 | \begin{lemma} \label{lem9} \lean{lemma9} 64 | If $\eps>0$, $a_1,\ldots,a_k\ge1$ are integers, and $p_1,\ldots, p_k$ are primes, then 65 | \[ 66 | \prod_{i\le k}\frac{a_i+1}{p_i^{a_i \eps}} = \prod_{i\le k, \, p_i^{\eps}\ge 2}\frac{a_i+1}{p_i^{a_i \eps}}\prod_{i\le k, \, p_i^{\eps}< 2}\frac{a_i+1}{p_i^{a_i \eps}} 67 | \] 68 | \end{lemma} 69 | \begin{proof}\leanok 70 | \uses{} 71 | Uses no previous result 72 | \end{proof} 73 | 74 | \begin{lemma} \label{lem10} \lean{lemma10} 75 | If $\eps>0$, $a_1,\ldots,a_k\ge1$ are integers, and $p_1,\ldots, p_k$ are primes, then 76 | \[ 77 | \prod_{i\le k, \, p_i^{\eps}\ge 2}\frac{a_i+1}{p_i^{a_i \eps}} \le 1 78 | \] 79 | \end{lemma} 80 | \begin{proof}\leanok 81 | \uses{lem7} 82 | Uses lemma \ref{lem7} 83 | \end{proof} 84 | 85 | \begin{lemma} \label{lem11} \lean{lemma11} 86 | If $\eps>0$, $a_1,\ldots,a_k\ge1$ are integers, and $p_1,\ldots, p_k$ are primes, then 87 | \[ 88 | \prod_{i\le k, \, p_i^{\eps}< 2}\frac{a_i+1}{p_i^{a_i \eps}} \le \prod_{i\le k, \, p_i^{\eps}< 2}\frac{2}{\eps} 89 | \] 90 | \end{lemma} 91 | \begin{proof}\leanok 92 | \uses{lem8} 93 | Uses lemma \ref{lem8} 94 | \end{proof} 95 | 96 | 97 | \begin{lemma} \label{lem12} \lean{lemma12} 98 | If $\eps>0$, $a_1,\ldots,a_k\ge1$ are integers, and $p_1,\ldots, p_k$ are primes, then 99 | \[ 100 | \prod_{i\le k, \, p_i^{\eps}< 2}\frac{2}{\eps} \le (2/\eps)^{2^{1/\eps}} 101 | \] 102 | \end{lemma} 103 | \begin{proof}\leanok 104 | \uses{} 105 | Uses no previous result 106 | \end{proof} 107 | 108 | 109 | \begin{lemma} \label{lem13} \lean{lemma13} 110 | If $\eps>0$, $a_1,\ldots,a_k\ge1$ are integers, and $p_1,\ldots, p_k$ are primes, then 111 | \[ 112 | \prod_{i\le k}\frac{a_i+1}{p_i^{a_i \eps}} \le (2/\eps)^{2^{1/\eps}} 113 | \] 114 | \end{lemma} 115 | \begin{proof}\leanok 116 | \uses{lem9, lem10, lem11, lem12} 117 | Uses lemmas \ref{lem9}, \ref{lem10}, \ref{lem11}, \ref{lem12} 118 | \end{proof} 119 | 120 | \begin{lemma} \label{lem14} \lean{lemma14} 121 | Let $\eps>0$. Then $(2/\eps)^{2^{1/\eps}} \le O_\eps(1)$. 122 | \end{lemma} 123 | \begin{proof}\leanok 124 | \uses{} 125 | Uses definition of $O_\eps(1)$. 126 | \end{proof} 127 | 128 | \begin{lemma} \label{lem15} \lean{lemma15} 129 | Let $\eps>0$ and $n\ge1$. Then $\frac{\tau(n)}{n^\eps}\le O_\eps(1)$ 130 | \end{lemma} 131 | \begin{proof}\leanok 132 | \uses{lem6, lem13, lem14} 133 | Uses lemma \ref{lem6}, \ref{lem13}, \ref{lem14} 134 | \end{proof} 135 | 136 | \begin{lemma} \label{lem16} \lean{lemma16} 137 | Let $\eps>0$ and $n\ge1$. Then $\tau(n) \le O_\eps(n^\eps)$. 138 | \end{lemma} 139 | \begin{proof}\leanok 140 | \uses{lem15} 141 | Uses lemma \ref{lem15} 142 | \end{proof} 143 | 144 | \begin{lemma} \label{lem17} \lean{lemma17} 145 | We have $\tau(n) \le O_\eps(n^\eps)$ for any integer $n\ge1$ and any $\eps>0$. 146 | \end{lemma} 147 | \begin{proof}\leanok 148 | \uses{lem16} 149 | Uses lemma \ref{lem16} 150 | \end{proof} 151 | 152 | \begin{theorem}[Divisor bound] \label{lem:div} \label{thm18} \lean{divisor_bound_tau_le_n_pow_o_one} 153 | We have $\tau(n) \le n^{o(1)}$ for any integer $n\ge1$. 154 | \end{theorem} 155 | \begin{proof}\leanok 156 | \uses{lem17} 157 | Uses lemma \ref{lem17} and definition of $o(1)$. 158 | \end{proof} 159 | 160 | 161 | \begin{definition}[Radical] \label{def19} \lean{rad}\leanok 162 | For an integer $n\ge1$ define the radical $\rad(n)=\prod_{p\mid n}p$. 163 | \end{definition} 164 | 165 | \begin{lemma} \label{lem20} \lean{rad_eq_prod_distinct_prime_factors} 166 | If $n = p_1^{a_1}\cdots p_k^{a_k}$ is the prime factorization of an integer, then $\rad(n)=p_1\cdots p_k$. 167 | \end{lemma} 168 | \begin{proof}\leanok 169 | \uses{def19} 170 | Uses definition \ref{def19}. 171 | \end{proof} 172 | 173 | \begin{lemma} \label{lem21} \lean{rad_mul_of_coprime} 174 | $\rad(n)$ is a multiplicative function. That is, if $a,b\ge1$ are integers with $\gcd(a,b)=1$ then $\rad(ab) = \rad(a)\rad(b)$. 175 | \end{lemma} 176 | \begin{proof}\leanok 177 | \uses{thm3, lem20} 178 | Uses lemma \ref{lem20} and theorem \ref{thm3}. 179 | \end{proof} 180 | 181 | \begin{lemma} \label{lem22} \lean{rad_abc_of_coprime} 182 | If $a,b\ge1$ are integers with $\gcd(a,bc)=1$ and $\gcd(b,c)=1$ then $\rad(abc) = \rad(a)\rad(b)\rad(c)$. 183 | \end{lemma} 184 | \begin{proof}\leanok 185 | \uses{lem21} 186 | Uses lemma \ref{lem21} with $\{a,bc\}$, and again uses lemma \ref{lem21} with $\{b,c\}$ 187 | \end{proof} 188 | 189 | \begin{lemma} \label{lem23} \lean{lemma23} 190 | If $a,b\ge1$ are integers with $\gcd(a,bc)=1$ and $\gcd(b,c)=1$ then $\rad(ab) \rad(ac)\rad(bc) = (\rad(abc))^2$. 191 | \end{lemma} 192 | \begin{proof}\leanok 193 | \uses{lem21, lem22} 194 | Uses lemma \ref{lem22}, and then uses lemma \ref{lem21} three times, with $\{a,b\}$ and $\{a,c\}$ and $\{b,c\}$. 195 | \end{proof} 196 | 197 | 198 | \begin{lemma} \label{lem24} \lean{lemma24} 199 | Let $p_1<\cdots0$ and $1\le n\le N$, then $\frac{1}{n^{\eps}} \ge \frac{1}{N^{\eps}}$. 231 | \end{lemma} 232 | \begin{proof}\leanok 233 | \uses{} 234 | Uses no previous result 235 | \end{proof} 236 | 237 | \begin{lemma} \label{lem29} \lean{lemma29} 238 | For any $\eps>0$ and $N,r\ge1$, we have 239 | \[ 240 | \sum_{n\in \mathcal{R}}\frac{1}{n^{\eps}} \ge \frac{|\mathcal{R}|}{N^\eps}, 241 | \] 242 | \end{lemma} 243 | \begin{proof}\leanok 244 | \uses{def25, lem27, lem28} 245 | Uses lemma \ref{lem27} with $\mathcal S=\mathcal R$, and lemma \ref{lem28}. 246 | \end{proof} 247 | 248 | \begin{lemma} \label{lem30} 249 | Let $\eps>0$ and $N\ge1$. If $r=p_1p_2$, then $\mathcal{R} = \mathcal{R}(r,N)$ satisfies 250 | \[ 251 | \sum_{n\in \mathcal{R}}\frac{1}{n^{\eps}} 252 | \le \sum_{a_1\ge1}\sum_{a_2\ge1} \frac{1}{(p_1^{a_1}p_2^{a_2})^\eps} 253 | \] 254 | \end{lemma} 255 | \begin{proof}\leanok 256 | \uses{lem26} 257 | Uses lemma \ref{lem26}. 258 | \end{proof} 259 | 260 | \begin{lemma} \label{lem31} \lean{lemma31} 261 | Let $\eps>0$ and $N\ge1$. If $r=p_1\cdots p_k$, then $\mathcal{R} = \mathcal{R}(r,N)$ satisfies 262 | \[ 263 | \sum_{n\in \mathcal{R}}\frac{1}{n^{\eps}} 264 | \le \sum_{a_1,\ldots, a_k\ge1} \frac{1}{(p_1^{a_1}\cdots p_k^{a_k})^\eps} 265 | \] 266 | \end{lemma} 267 | \begin{proof}\leanok 268 | \uses{lem26} 269 | Uses lemma \ref{lem26}. 270 | \end{proof} 271 | 272 | \begin{lemma} \label{lem32} \lean{lemma32} 273 | Let $\eps>0$ and $N\ge1$. Then 274 | \[ 275 | \sum_{a_1\ge1}\sum_{a_2\ge1} \frac{1}{(p_1^{a_1}p_2^{a_2})^\eps} = \Bigl(\sum_{a_1\ge1} \frac{1}{p_1^{\eps a_1}}\Bigr) \Bigl(\sum_{a_2\ge1} \frac{1}{p_2^{\eps a_2}}\Bigr) 276 | \] 277 | \end{lemma} 278 | \begin{proof}\leanok 279 | \uses{} 280 | Uses no previous result 281 | \end{proof} 282 | 283 | \begin{lemma} \label{lem33} \lean{lemma33} 284 | Let $\eps>0$ and $p_1<\cdots0$ and let $p_i\ge2$ be a prime. Then 305 | \[ 306 | \sum_{a_i\ge1} \frac{1}{p_i^{\eps a_i}} = \frac{1}{p_i^\eps-1}. 307 | \] 308 | \end{lemma} 309 | \begin{proof}\leanok 310 | \uses{lem34} 311 | Uses lemma \ref{lem34} 312 | \end{proof} 313 | 314 | \begin{lemma} \label{lem36} \lean{lemma36} 315 | Let $\eps>0$ and let $p_1<\cdots0$ and let $p_1<\cdots0$. If $p_i^{\eps}\ge 2$ then $\frac{1}{p_i^{\eps}-1}\le 1$. 340 | \end{lemma} 341 | \begin{proof}\leanok 342 | \uses{} 343 | Uses no previous result 344 | \end{proof} 345 | 346 | \begin{lemma} \label{lem39} \lean{lemma39} 347 | Let $\eps>0$ and let $p_1<\cdots0$. Then $\frac{1}{2^{\eps}-1} \le \frac{2}{\eps}$. 359 | \end{lemma} 360 | \begin{proof}\leanok 361 | \uses{lem2} 362 | Uses lemma \ref{lem2} 363 | \end{proof} 364 | 365 | \begin{lemma} \label{lem41} \lean{lemma41} 366 | Let $p_i\ge2$, $a_i\ge1$ and $\eps>0$. If $p_i^{\eps}< 2$ then $\frac{1}{p_i^{\eps}-1} \le \frac{2}{\eps}$. 367 | \end{lemma} 368 | \begin{proof}\leanok 369 | \uses{lem40} 370 | Uses $p_i\ge2$ and lemma \ref{lem40} 371 | \end{proof} 372 | 373 | \begin{lemma} \label{lem42} \lean{lemma42} 374 | Let $\eps>0$ and let $p_1<\cdots0$ and let $p_1<\cdots0$ and let $p_1<\cdots0$ and $N\ge1$. Then $(2/\eps)^{2^{1/\eps}} \le O_\eps(1)$. 409 | \end{lemma} 410 | \begin{proof}\leanok 411 | \uses{lem14} 412 | Uses lemma \ref{lem14}. 413 | \end{proof} 414 | 415 | 416 | \begin{lemma} \label{lem46} \lean{lemma46} 417 | For any $\eps>0$ and $N,r\ge1$, we have 418 | \[ 419 | \frac{|\mathcal{R}|}{N^\eps} \le O_\eps(1). 420 | \] 421 | \end{lemma} 422 | \begin{proof}\leanok 423 | \uses{lem29, lem31, lem33, lem36, lem44, lem45} 424 | Uses lemmas \ref{lem29}, \ref{lem31}, \ref{lem33}, \ref{lem36}, \ref{lem44}, \ref{lem45}. 425 | \end{proof} 426 | 427 | \begin{lemma} \label{lem47} \lean{lemma47} 428 | Let $\eps>0$ and $1\le r\le N$. Then we have 429 | \[ 430 | |\mathcal{R}(r,N)| \le O_\eps(N^\eps) 431 | \] 432 | \end{lemma} 433 | \begin{proof}\leanok 434 | \uses{lem46} 435 | Uses lemma \ref{lem46} 436 | \end{proof} 437 | 438 | 439 | \begin{theorem} \label{lem:radical} \label{thm48} \lean{theorem48} 440 | Let $1\le r\le N$. Then we have 441 | \[ 442 | |\mathcal{R}(r,N)| \le N^{o(1)}. 443 | \] 444 | \end{theorem} 445 | \begin{proof}\leanok 446 | \uses{lem47} 447 | Uses lemma \ref{lem47} and definition of $o(1)$ 448 | \end{proof} 449 | 450 | \begin{lemma} \label{lem49} \lean{lemma49} 451 | Let $N\ge1$ and $0<\lambda<1$. We have 452 | \[ 453 | \big|\big\{n\le N : \rad(n) \le N^{\lambda}\big\}\big| = \sum_{1\le r\le N^{\lambda}}\sum_{\substack{1\le n\le N \\ \rad(n) = r}}1 454 | \] 455 | \end{lemma} 456 | \begin{proof}\leanok 457 | \uses{lem27} 458 | Uses no previous results 459 | \end{proof} 460 | 461 | \begin{lemma} \label{lem50} \lean{lemma50} 462 | Let $N\ge1$ and $0<\lambda<1$. We have 463 | \[ 464 | \big|\big\{n\le N : \rad(n) \le N^{\lambda}\big\}\big| = \sum_{1\le r\le N^{\lambda}}|\mathcal R(r,N)| 465 | \] 466 | \end{lemma} 467 | \begin{proof}\leanok 468 | \uses{lem49, def25, lem27} 469 | Uses lemma \ref{lem49} and definition \ref{def25}. 470 | \end{proof} 471 | 472 | \begin{lemma} \label{lem51} \lean{lemma51} 473 | Let $N\ge1$ and $0<\lambda<1$. We have 474 | \[ 475 | \big|\big\{n\le N : \rad(n) \le N^{\lambda}\big\}\big| \le \sum_{1\le r\le N^{\lambda}}N^{o(1)} 476 | \] 477 | \end{lemma} 478 | \begin{proof}\leanok 479 | \uses{lem50, thm48} 480 | Uses lemma \ref{lem50} and theorem \ref{thm48}. 481 | \end{proof} 482 | 483 | 484 | \begin{theorem}\label{cor:rad} \label{thm52} \lean{corollary52} 485 | Let $N\ge1$ and $0<\lambda<1$. We have 486 | \[ 487 | \big|\big\{n\le N : \rad(n) \le N^{\lambda}\big\}\big| \ \le \ N^{\lambda+o(1)}. 488 | \] 489 | \end{theorem} 490 | \begin{proof}\leanok 491 | \uses{lem51} 492 | Uses lemma \ref{lem51} 493 | \end{proof} 494 | 495 | \begin{definition}[Exceptional set] \label{def53} \lean{exceptionalSet}\leanok 496 | Let $N\ge1$ and $\eps>0$. Define the exceptional set 497 | \[ 498 | \mathcal E(N) \; = \; \bigg\{(a,b,c)\in \{1,\ldots,N\}^3 \;:\; \gcd(a,b)=1, a+b=c, \ \rad(abc) \, < \, c^{1-\eps} 499 | \bigg\}. 500 | \] 501 | \end{definition} 502 | 503 | \begin{lemma} \label{lem54} \lean{lemma54} 504 | Let $a,b\ge1$ be integers with $\gcd(a,bc)=1$ and $\gcd(b,c)=1$. If $\rad(ab)$, $\rad(ac)$, $\rad(bc)$ all exceed $c^{\frac{2}{3}(1-\eps)}$, then 505 | \[ 506 | c^{2-2\eps}\le\rad(ab) \rad(ac)\rad(bc) = (\rad(abc))^2. 507 | \] 508 | \end{lemma} 509 | \begin{proof}\leanok 510 | \uses{lem23} 511 | Uses lemma \ref{lem23} 512 | \end{proof} 513 | 514 | \begin{lemma} \label{lem55} \lean{lemma55} 515 | Let $a,b\ge1$ be integers with $\gcd(a,bc)=1$ and $\gcd(b,c)=1$. If $\rad(ab)$, $\rad(ac)$, $\rad(bc)$ all exceed $c^{\frac{2}{3}(1-\eps)}$, then $c^{1-\eps}\le\rad(abc)$. 516 | \end{lemma} 517 | \begin{proof}\leanok 518 | \uses{lem54} 519 | Uses lemma \ref{lem54} 520 | \end{proof} 521 | 522 | 523 | \begin{lemma} \label{lem56} \lean{lemma56} 524 | Let $(a,b,c)\in \mathcal E(N)$. Then either $\rad(ab)0$ and $N\ge1$. We have 552 | \[ 553 | \underset{\substack{1\le a,b,c\le N\\ \gcd(a,b)=1\\ \rad(abc) \ < \ c^{1-\eps} \\ a+b=c}}{\sum\sum\sum} 1 554 | \ \le \ \sum_{r\le N^{2/3-\eps}}\underset{\substack{1\le a,b,c\le N\\ \gcd(a,b)=1\\ r=\rad(abc) \\ a+b=c}}{\sum\sum\sum} 1 555 | \] 556 | \end{lemma} 557 | \begin{proof}\leanok 558 | \uses{def53, lem27, lem57} 559 | Uses no previous results 560 | \end{proof} 561 | 562 | \begin{lemma} \label{lem60} \lean{lemma60} 563 | Let $\eps>0$ and $r,N\ge1$. We have 564 | \[ 565 | \underset{\substack{1\le a,b,c\le N\\ \gcd(a,b)=1\\ r=\rad(abc) \\ a+b=c}}{\sum\sum\sum} 1 566 | \ \le \ 3\underset{\substack{1\le x,y\le N\\ \gcd(x,y)=1\\r=\rad(xy)}}{\sum\sum} 1 567 | \] 568 | \end{lemma} 569 | \begin{proof}\leanok 570 | \uses{lem57} 571 | Uses lemma \ref{lem57} 572 | \end{proof} 573 | 574 | \begin{lemma} \label{lem61} \lean{lemma61} 575 | Let $\eps>0$ and $r,N\ge1$. We have 576 | \[ 577 | \underset{\substack{1\le x,y\le N\\ \gcd(x,y)=1\\r=\rad(xy)}}{\sum\sum} 1 578 | \ \le \ \sum_{\substack{1\le n\le N^2\\r=\rad(n)}} \tau(n). 579 | \] 580 | \end{lemma} 581 | \begin{proof}\leanok 582 | \uses{def4} 583 | Uses definition \ref{def4} with $n=xy$ 584 | \end{proof} 585 | 586 | \begin{lemma} \label{lem62} \lean{lemma62} 587 | We have 588 | \[ 589 | \sum_{\substack{1\le n\le N^2\\r=\rad(n)}} \tau(n) 590 | \le \sum_{\substack{1\le n\le N^2\\r=\rad(n)}} N^{o(1)} 591 | \] 592 | \end{lemma} 593 | \begin{proof}\leanok 594 | \uses{thm18} 595 | Uses theorem \ref{thm18}, and that $n\le N$ 596 | \end{proof} 597 | 598 | \begin{lemma} \label{lem63} \lean{lemma63} 599 | We have 600 | \[ 601 | 3\sum_{r\le N^{2/3-\eps}}\underset{\substack{1\le x,y\le N\\ \gcd(x,y)=1\\r=\rad(xy)}}{\sum\sum} 1 602 | \ \le \ \sum_{r\le N^{2/3-\eps}}\sum_{\substack{1\le n\le N^2\\r=\rad(n)}} N^{o(1)} 603 | \] 604 | \end{lemma} 605 | \begin{proof}\leanok 606 | \uses{lem61, lem62} 607 | Uses lemmas \ref{lem61}, \ref{lem62} 608 | \end{proof} 609 | 610 | \begin{lemma} \label{lem64} \lean{lemma64} 611 | We have 612 | \[ 613 | \sum_{r\le N^{2/3-\eps}}\sum_{\substack{1\le n\le N^2\\r=\rad(n)}}1 = \big|\big\{n\le N^2 : \rad(n) \le N^{2/3-\eps}\big\}\big|. 614 | \] 615 | \end{lemma} 616 | \begin{proof}\leanok 617 | \uses{} 618 | Uses no previous results 619 | \end{proof} 620 | 621 | 622 | \begin{lemma} \label{lem65} \lean{lemma65} 623 | Let $N\ge1$ and $\eps>0$. We have 624 | \[ 625 | |\mathcal E(N)| \ \le \ N^{o(1)}\cdot\big|\big\{n\le N^2 : \rad(n) \le N^{2/3-\eps}\big\}\big| 626 | \] 627 | \end{lemma} 628 | \begin{proof}\leanok 629 | \uses{lem58, lem59, lem60, lem63, lem64} 630 | Uses lemmas \ref{lem58}, \ref{lem59}, \ref{lem60}, \ref{lem63}, \ref{lem64} 631 | \end{proof} 632 | 633 | \begin{lemma} \label{lem66} \lean{lemma66} 634 | Let $N\ge1$ and $\eps>0$. We have 635 | \[ 636 | \big|\big\{n\le N^2 : \rad(n) \le N^{2/3-\eps}\big\}\big| \ \le \ N^{2/3-\eps+o(1)} 637 | \] 638 | \end{lemma} 639 | \begin{proof}\leanok 640 | \uses{def25, thm52} 641 | Uses definition \ref{def25}, theorem \ref{thm52} with $N^2$ and $\lambda=2/3-\eps$ 642 | \end{proof} 643 | 644 | \begin{theorem}\label{thm:deBr} \label{thm67} \lean{theorem67} 645 | We have $|\mathcal E(N)| \le O(N^{2/3})$. 646 | \end{theorem} 647 | \begin{proof}\leanok 648 | \uses{lem65, lem66} 649 | Uses lemmas \ref{lem65}, \ref{lem66} 650 | \end{proof} 651 | --------------------------------------------------------------------------------