├── .github └── workflows │ └── workflow.yml ├── .gitignore ├── .markdownlint.yml ├── LICENSE.md ├── README.md ├── abstract.md ├── atomic.md ├── axiom.md ├── categoric.md ├── critical.md ├── decompose.md ├── images ├── abstractThinking.png ├── abstraction.png ├── broccoli.png ├── dontKnow1.png ├── dontKnow2.png ├── dontKnow3.png ├── dontKnow4.png ├── implicitConversion.png ├── notTaught.png ├── notTaughtInSchool.png ├── wallOfMetaKnowledge2.png └── worms.jpg ├── implicit.md ├── intuit.md ├── meta.md ├── metacog.md ├── metaknow.md ├── modality.md ├── model.md ├── paradigm.md ├── patterns.md ├── physical.md ├── reason.md ├── recursive.md ├── relation.md ├── rulebased.md ├── semantic.md ├── solve.md ├── structure.md ├── symbolic.md ├── system.md ├── temporal.md ├── unified.md └── visual.md /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-22.04 9 | steps: 10 | - uses: actions/checkout@v4.1.1 11 | - uses: avto-dev/markdown-lint@v1 12 | with: 13 | args: '.' 14 | ignore: './LICENSE.md' 15 | 16 | -------------------------------------------------------------------------------- /.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 | *.bcf 30 | *.blg 31 | *-blx.aux 32 | *-blx.bib 33 | *.run.xml 34 | 35 | ## Build tool auxiliary files: 36 | *.fdb_latexmk 37 | *.synctex 38 | *.synctex(busy) 39 | *.synctex.gz 40 | *.synctex.gz(busy) 41 | *.pdfsync 42 | 43 | ## Build tool directories for auxiliary files 44 | # latexrun 45 | latex.out/ 46 | 47 | ## Auxiliary and intermediate files from other packages: 48 | # algorithms 49 | *.alg 50 | *.loa 51 | 52 | # achemso 53 | acs-*.bib 54 | 55 | # amsthm 56 | *.thm 57 | 58 | # beamer 59 | *.nav 60 | *.pre 61 | *.snm 62 | *.vrb 63 | 64 | # changes 65 | *.soc 66 | 67 | # comment 68 | *.cut 69 | 70 | # cprotect 71 | *.cpt 72 | 73 | # elsarticle (documentclass of Elsevier journals) 74 | *.spl 75 | 76 | # endnotes 77 | *.ent 78 | 79 | # fixme 80 | *.lox 81 | 82 | # feynmf/feynmp 83 | *.mf 84 | *.mp 85 | *.t[1-9] 86 | *.t[1-9][0-9] 87 | *.tfm 88 | 89 | #(r)(e)ledmac/(r)(e)ledpar 90 | *.end 91 | *.?end 92 | *.[1-9] 93 | *.[1-9][0-9] 94 | *.[1-9][0-9][0-9] 95 | *.[1-9]R 96 | *.[1-9][0-9]R 97 | *.[1-9][0-9][0-9]R 98 | *.eledsec[1-9] 99 | *.eledsec[1-9]R 100 | *.eledsec[1-9][0-9] 101 | *.eledsec[1-9][0-9]R 102 | *.eledsec[1-9][0-9][0-9] 103 | *.eledsec[1-9][0-9][0-9]R 104 | 105 | # glossaries 106 | *.acn 107 | *.acr 108 | *.glg 109 | *.glo 110 | *.gls 111 | *.glsdefs 112 | 113 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 114 | # *.ist 115 | 116 | # gnuplottex 117 | *-gnuplottex-* 118 | 119 | # gregoriotex 120 | *.gaux 121 | *.gtex 122 | 123 | # htlatex 124 | *.4ct 125 | *.4tc 126 | *.idv 127 | *.lg 128 | *.trc 129 | *.xref 130 | 131 | # hyperref 132 | *.brf 133 | 134 | # knitr 135 | *-concordance.tex 136 | # TODO Comment the next line if you want to keep your tikz graphics files 137 | *.tikz 138 | *-tikzDictionary 139 | 140 | # listings 141 | *.lol 142 | 143 | # luatexja-ruby 144 | *.ltjruby 145 | 146 | # makeidx 147 | *.idx 148 | *.ilg 149 | *.ind 150 | 151 | # minitoc 152 | *.maf 153 | *.mlf 154 | *.mlt 155 | *.mtc[0-9]* 156 | *.slf[0-9]* 157 | *.slt[0-9]* 158 | *.stc[0-9]* 159 | 160 | # minted 161 | _minted* 162 | *.pyg 163 | 164 | # morewrites 165 | *.mw 166 | 167 | # nomencl 168 | *.nlg 169 | *.nlo 170 | *.nls 171 | 172 | # pax 173 | *.pax 174 | 175 | # pdfpcnotes 176 | *.pdfpc 177 | 178 | # sagetex 179 | *.sagetex.sage 180 | *.sagetex.py 181 | *.sagetex.scmd 182 | 183 | # scrwfile 184 | *.wrt 185 | 186 | # sympy 187 | *.sout 188 | *.sympy 189 | sympy-plots-for-*.tex/ 190 | 191 | # pdfcomment 192 | *.upa 193 | *.upb 194 | 195 | # pythontex 196 | *.pytxcode 197 | pythontex-files-*/ 198 | 199 | # tcolorbox 200 | *.listing 201 | 202 | # thmtools 203 | *.loe 204 | 205 | # TikZ & PGF 206 | *.dpth 207 | *.md5 208 | *.auxlock 209 | 210 | # todonotes 211 | *.tdo 212 | 213 | # vhistory 214 | *.hst 215 | *.ver 216 | 217 | # easy-todo 218 | *.lod 219 | 220 | # xcolor 221 | *.xcp 222 | 223 | # xmpincl 224 | *.xmpi 225 | 226 | # xindy 227 | *.xdy 228 | 229 | # xypic precompiled matrices and outlines 230 | *.xyc 231 | *.xyd 232 | 233 | # endfloat 234 | *.ttt 235 | *.fff 236 | 237 | # Latexian 238 | TSWLatexianTemp* 239 | 240 | ## Editors: 241 | # WinEdt 242 | *.bak 243 | *.sav 244 | 245 | # Texpad 246 | .texpadtmp 247 | 248 | # LyX 249 | *.lyx~ 250 | 251 | # Kile 252 | *.backup 253 | 254 | # KBibTeX 255 | *~[0-9]* 256 | 257 | # auto folder when using emacs and auctex 258 | ./auto/* 259 | *.el 260 | 261 | # expex forward references with \gathertags 262 | *-tags.tex 263 | 264 | # standalone packages 265 | *.sta 266 | 267 | # Obsidian 268 | .obsidian 269 | -------------------------------------------------------------------------------- /.markdownlint.yml: -------------------------------------------------------------------------------- 1 | # Example markdownlint configuration with all properties set to their default value 2 | 3 | # Default state for all rules 4 | default: true 5 | 6 | # Path to configuration file to extend 7 | extends: null 8 | 9 | # MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md001.md 10 | MD001: true 11 | 12 | # MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md003.md 13 | MD003: 14 | # Heading style 15 | style: "consistent" 16 | 17 | # MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md004.md 18 | MD004: 19 | # List style 20 | style: "consistent" 21 | 22 | # MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md005.md 23 | MD005: true 24 | 25 | # MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md007.md 26 | MD007: 27 | # Spaces for indent 28 | indent: 2 29 | # Whether to indent the first level of the list 30 | start_indented: false 31 | # Spaces for first level indent (when start_indented is set) 32 | start_indent: 2 33 | 34 | # MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md009.md 35 | MD009: 36 | # Spaces for line break 37 | br_spaces: 2 38 | # Allow spaces for empty lines in list items 39 | list_item_empty_lines: false 40 | # Include unnecessary breaks 41 | strict: false 42 | 43 | # MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md010.md 44 | MD010: 45 | # Include code blocks 46 | code_blocks: true 47 | # Fenced code languages to ignore 48 | ignore_code_languages: [] 49 | # Number of spaces for each hard tab 50 | spaces_per_tab: 1 51 | 52 | # MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md011.md 53 | MD011: true 54 | 55 | # MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md012.md 56 | MD012: 57 | # Consecutive blank lines 58 | maximum: 1 59 | 60 | # MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md013.md 61 | MD013: 62 | # Number of characters 63 | #line_length: 80 64 | line_length: -1 65 | # Number of characters for headings 66 | #heading_line_length: 80 67 | heading_line_length: -1 68 | # Number of characters for code blocks 69 | #code_block_line_length: 80 70 | code_block_line_length: -1 71 | # Include code blocks 72 | #code_blocks: true 73 | code_blocks: false 74 | # Include tables 75 | #tables: true 76 | tables: false 77 | # Include headings 78 | #headings: true 79 | headings: false 80 | # Strict length checking 81 | strict: false 82 | # Stern length checking 83 | stern: false 84 | 85 | # MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md014.md 86 | MD014: true 87 | 88 | # MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md018.md 89 | MD018: true 90 | 91 | # MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md019.md 92 | MD019: true 93 | 94 | # MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md020.md 95 | MD020: true 96 | 97 | # MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md021.md 98 | MD021: true 99 | 100 | # MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md022.md 101 | MD022: 102 | # Blank lines above heading 103 | lines_above: 1 104 | # Blank lines below heading 105 | lines_below: 1 106 | 107 | # MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md023.md 108 | MD023: true 109 | 110 | # MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md024.md 111 | MD024: 112 | # Only check sibling headings 113 | siblings_only: false 114 | 115 | # MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md025.md 116 | MD025: 117 | # Heading level 118 | level: 1 119 | # RegExp for matching title in front matter 120 | front_matter_title: "^\\s*title\\s*[:=]" 121 | 122 | # MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md026.md 123 | MD026: 124 | # Punctuation characters 125 | punctuation: ".,;:!。,;:!" 126 | 127 | # MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md027.md 128 | MD027: true 129 | 130 | # MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md028.md 131 | MD028: true 132 | 133 | # MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md029.md 134 | MD029: 135 | # List style 136 | style: "one_or_ordered" 137 | 138 | # MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md030.md 139 | MD030: 140 | # Spaces for single-line unordered list items 141 | ul_single: 1 142 | # Spaces for single-line ordered list items 143 | ol_single: 1 144 | # Spaces for multi-line unordered list items 145 | ul_multi: 1 146 | # Spaces for multi-line ordered list items 147 | ol_multi: 1 148 | 149 | # MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md031.md 150 | MD031: 151 | # Include list items 152 | list_items: true 153 | 154 | # MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md032.md 155 | MD032: true 156 | 157 | # MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md033.md 158 | MD033: 159 | # Allowed elements 160 | allowed_elements: [] 161 | 162 | # MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md034.md 163 | MD034: true 164 | 165 | # MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md035.md 166 | MD035: 167 | # Horizontal rule style 168 | style: "consistent" 169 | 170 | # MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md036.md 171 | MD036: 172 | # Punctuation characters 173 | punctuation: ".,;:!?。,;:!?" 174 | 175 | # MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md037.md 176 | MD037: true 177 | 178 | # MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md038.md 179 | MD038: true 180 | 181 | # MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md039.md 182 | MD039: true 183 | 184 | # MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md040.md 185 | MD040: 186 | # List of languages 187 | allowed_languages: [] 188 | # Require language only 189 | language_only: false 190 | 191 | # MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md041.md 192 | MD041: 193 | # Heading level 194 | level: 1 195 | # RegExp for matching title in front matter 196 | front_matter_title: "^\\s*title\\s*[:=]" 197 | 198 | # MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md042.md 199 | MD042: true 200 | 201 | # MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md043.md 202 | MD043: 203 | # List of headings 204 | #headings: [] 205 | # Match case of headings 206 | match_case: false 207 | 208 | # MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md044.md 209 | MD044: 210 | # List of proper names 211 | names: [] 212 | # Include code blocks 213 | code_blocks: true 214 | # Include HTML elements 215 | html_elements: true 216 | 217 | # MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md045.md 218 | MD045: true 219 | 220 | # MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md046.md 221 | MD046: 222 | # Block style 223 | style: "consistent" 224 | 225 | # MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md047.md 226 | MD047: true 227 | 228 | # MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md048.md 229 | MD048: 230 | # Code fence style 231 | style: "consistent" 232 | 233 | # MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md049.md 234 | MD049: 235 | # Emphasis style 236 | style: "consistent" 237 | 238 | # MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md050.md 239 | MD050: 240 | # Strong style 241 | style: "consistent" 242 | 243 | # MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md051.md 244 | MD051: true 245 | 246 | # MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md052.md 247 | MD052: 248 | # Include shortcut syntax 249 | shortcut_syntax: false 250 | 251 | # MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md053.md 252 | MD053: 253 | # Ignored definitions 254 | ignored_definitions: 255 | - "//" 256 | 257 | # MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md054.md 258 | MD054: 259 | # Allow autolinks 260 | autolink: true 261 | # Allow inline links and images 262 | inline: true 263 | # Allow full reference links and images 264 | full: true 265 | # Allow collapsed reference links and images 266 | collapsed: true 267 | # Allow shortcut reference links and images 268 | shortcut: true 269 | # Allow URLs as inline links 270 | url_inline: true 271 | 272 | # MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md055.md 273 | MD055: 274 | # Table pipe style 275 | style: "consistent" 276 | 277 | # MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md056.md 278 | MD056: true 279 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Elements of Abstract Thinking 2 | 3 | ![can-of-worms](images/worms.jpg) 4 | 5 | Welcome to the world of ***abstract nonsense!*** 6 | 7 | ## Motivation 8 | 9 | ![dont-know-1](images/dontKnow1.png) 10 | 11 | ![dont-know-2](images/dontKnow2.png) 12 | 13 | I've been trying to figure out the underlying reasons why many are struggling with mathematics and computer science, *even when they have great resources and they study the subjects.* 14 | 15 | ### The Usual Suspects 16 | 17 | > ***It soon became clear that the unconscious instincts for logic and language which had enabled me to succeed were not shared by the large majority of my students.*** 18 | > 19 | > - Susanna Epp (author of [Discrete Mathematics with Applications, 5th edition](https://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp-ebook/dp/B07M87BWRC)) 20 | 21 | ![abstract-thinking-1](images/abstractThinking.png) 22 | 23 | I don\'t accept the general / genetic explanation that "they're just not smart enough." 24 | 25 | ![dont-know-3](images/dontKnow3.png) 26 | 27 | ![dont-know-4](images/dontKnow4.png) 28 | 29 | It seems there is something else going on. Even after finishing courses and passing tests / exams, or, *going through the motions*, students say "I don't feel like I've understood it." 30 | 31 | ### Journey 32 | 33 | The journey went like this: 34 | 35 | 1. Students taking programming language theory, especially parts that are *rich in recursive thinking*, struggled. 36 | 2. First I falsely diagnosed the issue to be *recursion* and suggested studying it earlier. 37 | 3. That didn't help much. 38 | 4. I noticed the issue goes beyond recursion, and is more about having a poor mathematical background in general. 39 | 5. I suggested taking Mathematics for Computer Science earlier. 40 | 6. Some students could not make it past even Chapter 1, section 1 of Math for CS. 41 | 7. I suggested a much gentler, easier resource (Susanna Epp's book). 42 | 8. Students still struggled with that. 43 | 44 | ### The ever-elusive *maturity* 45 | 46 | Students are told to "go get some [*maturity*](https://en.wikipedia.org/wiki/Mathematical_maturity) and [intuition](https://en.wikipedia.org/wiki/Logical_intuition)" but 47 | 48 | 1. it's not clear *what they are*, 49 | 2. nobody explains exactly *how to get them*. 50 | 51 | ### The usual advice 52 | 53 | The general advice is to "keep doing it and eventually you'll start getting it", also known as *learning by osmosis*. Unfortunately I've seen examples where some students didn't get it even after 1-2 years of practice. The [research says](https://maa.org/wp-content/uploads/2024/06/2015-CUPM-Curriculum-Guide.pdf) that *"...experience alone is a poor teacher. Many learners don't know the quality of their comprehension..."* 54 | 55 | Another common advice is to take Calculus first, to gain enough maturity for Discrete math and proofs. I've seen students who successfully completed 3 Calculus courses and then fail at even the most basic problems in Discrete Mathematics after months of study. (Once again, these students are not stupid, or lazy.) 56 | 57 | The rare advice is to seek help from books such as [How to solve it](https://www.amazon.com/How-Solve-Mathematical-Princeton-Science-dp-069111966X/dp/069111966X/), [Book of proof](https://www.people.vcu.edu/~rhammack/BookOfProof/), [The Little Prover](https://mitpress.mit.edu/9780262527958/the-little-prover/) or [The heart of mathematics](https://www.amazon.com/Heart-Mathematics-Invitation-Effective-Thinking/dp/1118156595). This is good advice, and sometimes works, but some of these resources either assume a decent mathematical background and maturity already, or are too verbose / poorly translated, or too difficult for starters. 58 | 59 | ### Insights 60 | 61 | The belief (and hope) is that math / CS "teaches you how to think." True, maybe? :thinking: But they require you to know how to think *a little*. What if you don't know how to think *at all ?* So we got a *recursive knowledge scaffolding* problem. 62 | 63 | The issue is that math / CS subjects do not (usually) make abstract thinking *explicit*. Instead this thinking is *implicit* and "baked into" the subjects in subtle ways. They cover the "surface content" of the topics in an explicit fashion. 64 | 65 | But unlike what the general advice says, the deeper, implicit thinking patterns go unnoticed by many students even after hundreds of hours of practice, instead of "automatically and subconsciously being picked up by your brain". 66 | 67 | There does not seem to be any clear reason or pattern. Should we believe the "unconscious instinct" explanation and admit defeat? 68 | 69 | ### Not taught in school 70 | 71 | According to [a Stanford prof](https://www.youtube.com/watch?v=LtRWu9DErgU), the most important thing is problem decomposition, and ***nobody teaches it:*** 72 | 73 | ![problem-decomposition](images/notTaught.png) 74 | 75 | (He is also dealing with the questions "is it innate?" and ["can it be taught?"](https://www.youtube.com/watch?v=lgZ7Cxt5uIU)) 76 | 77 | Some students tend to agree: 78 | 79 | ![cognitive-skills](images/notTaughtInSchool.png) 80 | 81 | ### :bug: Opening :bug: a :bug: can :bug: of :bug: worms 82 | 83 | The culprit seems to be the lack of abstract thinking skills, ***whatever the hell that is!*** 84 | 85 | Also the lack of problem solving skills, which are deeply connected to abstract thinking (breaking down a problem, modeling it, understanding the problem space, conceptualizing a solution...) 86 | 87 | One more major issue, in my opinion, is the lack of metacognitive skills. Students are not aware of their thought processes. Metacognition itself can be abstract. 88 | 89 | There is simply no way around this. Abstract thinking *HAS TO BE LEARNED.* And I believe *it can be taught,* even if it's just by making it a bit more explicit and not much else! 90 | 91 | ***And here we are...*** 92 | 93 | ## What this is 94 | 95 | - A loose collection of the common abstract patterns and ways of thinking found everywhere, which 96 | - are *implicit*, *intrinsic* and *invisible*, 97 | - *underlie* all the subjects we study; 98 | - plus metacognitive skills. 99 | - It's ***an extremely rough draft for now***, hopefully it will be fleshed out later, with lots of examples. 100 | - So, there are probably many references to things you don't know. 101 | - This is about ***abstract thinking within the context of mathematics and computer science.*** 102 | - There are similarities to the scientific method: 103 | - observations, hypotheses, evidence, testing 104 | - but they are not the focus. 105 | 106 | ## What this is *not* 107 | 108 | - This is not about abstract thinking in the [broadest sense](https://en.wikipedia.org/wiki/Abstraction#As_used_in_different_disciplines): 109 | - in science, [art](https://en.wikipedia.org/wiki/Mathematics_and_art), music, literature, 110 | - in politics, religion, 111 | - in military, business, 112 | - in decision making, etc. 113 | - This is not comprehensive, or hierarchical / strictly organized: 114 | - thinking patterns are tied to each other in a messy tangled web, 115 | - it's near impossible to make them hierarchical. 116 | - Hence, "elements." 117 | - This is not a coverage of the Math / CS topics that are mentioned. 118 | - It could be *embedded* into a math / CS curriculum *while* those topics are being taught; 119 | - giving much clearer understanding. 120 | 121 | ***So... here we go!*** 122 | 123 | ***First, the human side of things:*** 124 | 125 | ## Our physical senses and the world 126 | 127 | ### Pattern recognition 128 | 129 | [Link to the Patterns section](./patterns.md) 130 | 131 | - Humans are [pattern recognition machines](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4141622/). 132 | - So much so, that [we see patterns even where there are none](https://en.wikipedia.org/wiki/Pareidolia). 133 | - Patterns can be found in anything: [syntax](symbolic.md), [semantics](semantic.md), [structures](structure.md), problems, [solutions](solve.md), [domains](model.md)... 134 | 135 | ### Connections to the physical world 136 | 137 | [Link to the Physical world section](physical.md) 138 | 139 | ### Spatial-visual thinking 140 | 141 | [Link to the visual thinking section](visual.md) 142 | 143 | ## Our subconscious stuff 144 | 145 | ### Intuition and intuitive thinking 146 | 147 | [Link to the Intuition section](intuit.md) 148 | 149 | - Our brains 150 | - take subconscious shortcuts, 151 | - pick up on implicit things, and 152 | - make invisible connections. 153 | 154 | - Connection to wishful thinking (see [problem solving](solve.md)). 155 | 156 | ### Implicit and Explicit knowledge, Contextual thinking 157 | 158 | [Link to the Implicit and Explicit knowledge section](implicit.md) 159 | 160 | - Assumptions and background knowledge are 161 | - unavoidable, 162 | - necessary and 163 | - always present everywhere. 164 | 165 | ## The meta stuff in our heads 166 | 167 | ### Metacognition 168 | 169 | [Link to the Metacognition section](metacog.md) 170 | 171 | - Being aware of one's own thought processes, taking control of it. 172 | 173 | ### Meta-knowledge 174 | 175 | [Link to the Meta-knowledge section](metaknow.md) 176 | 177 | - Knowledge can have a recursive nature. So you can get stuck: 178 | - "I don't know what I don't know", or 179 | - "I can't figure out why I can't figure things out." 180 | 181 | ***Now the more technical side of things:*** 182 | 183 | ## The logical stuff 184 | 185 | ### Syntax: symbolic thinking and symbol manipulation 186 | 187 | [Link to the Symbolic thinking section](symbolic.md) 188 | 189 | - Ubiquitous for humans (language, writing, numbers etc.) 190 | - Symbols = syntax = formal = mechanical = unintuitive 191 | 192 | ### Semantics: domains and predicates 193 | 194 | [Link to the Semantic thinking section](semantic.md) 195 | 196 | - We have patterns / models in our brains through the [physical world](physical.md) and our senses, 197 | - with which we assign meaning / interpretation to things. 198 | - Worlds = semantics = informal = meaningful = intuitive = interpretation 199 | - Humans can never agree on worlds and interpretations, 200 | - keep fighting over which is "right". 201 | 202 | ### Critical Thinking 203 | 204 | [Link to the Critical thinking section](critical.md) 205 | 206 | - It boils down to: ***NEGATION!*** 207 | - Fruitful interaction with [axiomatic thinking](axiom.md): negate the axioms! 208 | - Power of negation: [Non-Euclidean geometry](https://www.youtube.com/watch?v=lFlu60qs7_4) 209 | 210 | ### Reasoning 211 | 212 | [Link to the Reasoning section](reason.md) 213 | 214 | - Making or removing assumptions 215 | - Very difficult for humans! (Messes up the implicit models in our heads.) 216 | - Modus ponens: the heart of reasoning 217 | - Connections to [rule-based](rulebased.md) and [axiomatic thinking](axiom.md) 218 | - Deductive, 219 | - Inductive, 220 | - Abductive, and 221 | - Fuzzy reasoning 222 | 223 | ### Axiomatic thinking 224 | 225 | [Link to the Axiomatic thinking section](axiom.md) 226 | 227 | - Realizing the syntax, capturing syntax in a precise way 228 | - Minimal assumptions that are taken for granted as a starting point, 229 | - because they are self-evident 230 | - Similarities to [reductionist / atomic thinking](atomic.md) 231 | 232 | ## Many ways of thinking 233 | 234 | ### Structural thinking 235 | 236 | [Link to the Structures section](structure.md) 237 | 238 | - Realizing the [semantics](semantic.md), capturing semantics in a concrete way 239 | - Connections to [modeling](model.md) and [axiomatic thinking](axiom.md) 240 | - Many types of structures: 241 | - algebraic, 242 | - topological, 243 | - relational, 244 | - logical, 245 | - order 246 | - Combined, rich, complex structures: 247 | - analytical, 248 | - geometric, 249 | - ergodic / stochastic 250 | - Connection to [systems thinking](system.md) 251 | 252 | ### Temporal thinking 253 | 254 | [Link to the Temporal thinking section](temporal.md) 255 | 256 | - chronological, state-based and event-based 257 | - discrete vs. continuous 258 | - static vs. dynamic 259 | - mutating state 260 | - connections with timeless, stateless thinking, and [rule-based thinking](rulebased.md) 261 | 262 | ### Reductionist (atomic) thinking 263 | 264 | [Link to the Atomic thinking section](atomic.md) 265 | 266 | - Break into smaller parts, 267 | - then even smaller, 268 | - then even smaller than that, 269 | - until the smallest parts are self-evident, 270 | - and keep track of the connections. 271 | - The whole *equals* the sum of the parts. 272 | - This works with wishful thinking (see [problem solving](solve.md)). 273 | - Similarities to [axiomatic thinking](axiom.md) 274 | 275 | ### Recursive thinking 276 | 277 | [Link to the Recursive thinking section](recursive.md) 278 | 279 | - Self-reference and self-similarity (fractals) 280 | - This is found in nature, biology recurs. 281 | - See fractal broccoli picture :broccoli: 282 | - Notoriously difficult for humans! 283 | - It's "anti-temporal" or "reverse-chronological" thinking, 284 | - but humans are story-oriented creatures. 285 | - Connection with [structural thinking](structure.md): 286 | - self-similar structures (fractals) 287 | 288 | ### Rule-based thinking 289 | 290 | [Link to the Rule-based Thinking section](rulebased.md) 291 | 292 | - Completely controlled world that: 293 | - obeys rules, 294 | - is built gradually from earlier stages, 295 | - offers strict guarantees (invariants). 296 | - Stratification, predicativity 297 | 298 | ## The many joys of world building 299 | 300 | ### Modalities 301 | 302 | [Link to the Modalities section](modality.md) 303 | 304 | - Switching between "thinking styles" (or *modes*): 305 | - some problems are better conceived / modeled in certain ways than others. 306 | 307 | ### Paradigms 308 | 309 | [Link to the Paradigms section](paradigm.md) 310 | 311 | - Changing the focal point through which the world is viewed and expressed. 312 | - Switching between "expression styles": 313 | - some solutions are better expressed in certain ways than others. 314 | 315 | ### Domain modeling 316 | 317 | [Link to the Modeling section](model.md) 318 | 319 | - Parts of: 320 | - [structural](structure.md), 321 | - [reductionist](atomic.md), 322 | - [axiomatic](axiom.md), and 323 | - [rule-based](rulebased.md) thinking. 324 | - A family of models correspond directly to axioms they satisfy. 325 | - Possible [worlds and interpretations](semantic.md) 326 | - Domain general and domain specific knowledge 327 | 328 | ### Relations and connections 329 | 330 | [Link to the Relations section](relation.md) 331 | 332 | ## The abstract stuff 333 | 334 | ### Abstraction 335 | 336 | [Link to the Abstraction section](abstract.md) 337 | 338 | ### Composition and decomposition 339 | 340 | [Link to the Decomposition section](decompose.md) 341 | 342 | - Strong connections to [Domain Modeling](model.md) and [Problem Solving](solve.md) 343 | 344 | ### Higher-order and categorical thinking 345 | 346 | [Link to the Categorical thinking section](categoric.md) 347 | 348 | ## The big, complex, combined stuff 349 | 350 | ### Systems thinking 351 | 352 | [Link to the Systems section](system.md) 353 | 354 | ### Meta-thinking 355 | 356 | [Link to the Meta thinking section](meta.md) 357 | 358 | ### Unified theory of everything 359 | 360 | - Different fields are deeply connected. 361 | 362 | [Link to the Deep Connections section](unified.md) 363 | 364 | ## Problem solving 365 | 366 | [Link to the Problem Solving section](solve.md) 367 | 368 | - Basically, *Applied Abstract Thinking*. 369 | - [The essentials of problem solving](https://www.youtube.com/watch?v=6DxTQiJuAoc) 370 | -------------------------------------------------------------------------------- /abstract.md: -------------------------------------------------------------------------------- 1 | # Abstraction 2 | 3 | ## Generalization and Specialization 4 | 5 | - Universal and existential quantification. 6 | - Parametrization. 7 | - Contextual generalization (connection to implicits.) 8 | - Abstraction and reification. 9 | 10 | ## How to generalize: thinking abstractly 11 | 12 | ![abstraction-hierarchy](images/abstraction.png) 13 | 14 | - Here, we can add logic as an external meta-abstraction that applies to ALL of these. 15 | - With arrows pointing from Logic to each one. 16 | 17 | - Start with real-world, often physical, observations of objects, 18 | - Remove "special properties" (or "context") from the real world: 19 | - If you are looking at a picture with three different lions, remove their differences, 20 | - and then remove their "animalness", etc. 21 | - this is called making it "context-free". 22 | - Look for: 23 | - relations between them, 24 | - operations that act on them, 25 | - properties they might have. 26 | - This is the most difficult part and cannot be taught completely. 27 | - Now see if the objects can be replaced with others. 28 | - Do the properties / relations still hold? 29 | - Now see if the operations could be replaced with others: 30 | - Do they still work? 31 | 32 | ## An example 33 | 34 | - Surface area in the naive, physical sense: 35 | - how much water does it take to fill some flat surface? 36 | 37 | Then generalize to: 38 | 39 | - squares: $A = s \times s$, 40 | - rectangles: $A = w \times h$, 41 | - triangles: $A = w \times h / 2$, 42 | - regular polygons: add up the triangles, 43 | - irregular polygons, 44 | - areas under arbitrary *continuous* curves of a single variable over *an interval*: 45 | - add up areas of rectangles over the interval, take limit: Riemann integral 46 | - *piecewise continuous* curves over *an interval,* 47 | - *"integrable" curves* over *an interval*, 48 | - *integrable curves* over *the partitioning of an interval by a function of bounded variation,* 49 | - *integrable curves* over *measurable sets*: Lebesgue integral, 50 | - multi-variable version of this, 51 | - the $p$-adic numbers instead of $\mathbb{R}$, 52 | - an integral over a *locally compact topological group* with a *left-invariant Haar measure*: 53 | - abstract harmonic analysis! 54 | 55 | ## Work in progress 56 | 57 | [Back to Elements](README.md#abstraction) 58 | -------------------------------------------------------------------------------- /atomic.md: -------------------------------------------------------------------------------- 1 | # Reductionist and Atomic thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#reductionist-atomic-thinking) 6 | -------------------------------------------------------------------------------- /axiom.md: -------------------------------------------------------------------------------- 1 | # Axiomatic thinking 2 | 3 | - Axioms are the same as the idea of "primitives" in programming: 4 | - basic building blocks that cannot be broken down any further, 5 | - but everything else can be built up from them. 6 | - Synchronization primitives for concurrency, 7 | - Geometric primitives for graphics, etc. 8 | 9 | ## Work in progress 10 | 11 | [Back to Elements](README.md#axiomatic-thinking) 12 | -------------------------------------------------------------------------------- /categoric.md: -------------------------------------------------------------------------------- 1 | # Higher-order and Categorical Thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#higher-order-and-categorical-thinking) 6 | -------------------------------------------------------------------------------- /critical.md: -------------------------------------------------------------------------------- 1 | # Critical thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#critical-thinking) 6 | -------------------------------------------------------------------------------- /decompose.md: -------------------------------------------------------------------------------- 1 | # Composition and decomposition 2 | 3 | ## Work in progress 4 | 5 | [Back to the Elements](README.md#composition-and-decomposition) 6 | -------------------------------------------------------------------------------- /images/abstractThinking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/abstractThinking.png -------------------------------------------------------------------------------- /images/abstraction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/abstraction.png -------------------------------------------------------------------------------- /images/broccoli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/broccoli.png -------------------------------------------------------------------------------- /images/dontKnow1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/dontKnow1.png -------------------------------------------------------------------------------- /images/dontKnow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/dontKnow2.png -------------------------------------------------------------------------------- /images/dontKnow3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/dontKnow3.png -------------------------------------------------------------------------------- /images/dontKnow4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/dontKnow4.png -------------------------------------------------------------------------------- /images/implicitConversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/implicitConversion.png -------------------------------------------------------------------------------- /images/notTaught.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/notTaught.png -------------------------------------------------------------------------------- /images/notTaughtInSchool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/notTaughtInSchool.png -------------------------------------------------------------------------------- /images/wallOfMetaKnowledge2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/wallOfMetaKnowledge2.png -------------------------------------------------------------------------------- /images/worms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spamegg1/abstract-thinking/a0b1c7be084ff0319d14f5cbbdf37abb5af5ad4d/images/worms.jpg -------------------------------------------------------------------------------- /implicit.md: -------------------------------------------------------------------------------- 1 | # Implicit and explicit knowledge 2 | 3 | - Assumptions and "background knowledge" are unavoidable, and necessary. 4 | - Always keep "dancing back and forth" between: 5 | - implicit and explicit knowledge, 6 | - syntax and semantics, 7 | - formal and informal, 8 | - abstract and concrete, 9 | - yourself and others, 10 | - theoretical and practical. 11 | - Being aware of: 12 | - what's needed, 13 | - what's missing, 14 | - the surrounding context, 15 | - to which paradigm / modality something belongs, 16 | - self and other-knowledge (see below). 17 | - Make it explicit! 18 | - Play the role of "math lawyer": write a *bullet-proof definition*. 19 | 20 | ## Implicit conversions 21 | 22 | ![implicit-conversion](images/implicitConversion.png) 23 | 24 | - Converting one idea / concept / assumption to another, without being aware of it. 25 | - Found in math, programming, and a natural function of our brains. 26 | - which makes it an interesting example of meta-thinking! 27 | - It happens all the time without us noticing. 28 | 29 | ## Contextual thinking 30 | 31 | ## Work in progress 32 | 33 | [Back to Elements](README.md#implicit-and-explicit-knowledge-contextual-thinking) 34 | -------------------------------------------------------------------------------- /intuit.md: -------------------------------------------------------------------------------- 1 | # Intuition and intuitive thinking 2 | 3 | - 4 | 5 | ## Work in progress 6 | 7 | [Back to Elements](README.md#intuition-and-intuitive-thinking) 8 | -------------------------------------------------------------------------------- /meta.md: -------------------------------------------------------------------------------- 1 | # Meta-thinking 2 | 3 | - All the other ways of thinking can *recur* and *compound* on each other: 4 | - we can have a pattern that generalizes to a bigger domain, 5 | - which satisfies some predicates that define a modality, 6 | - which has a connection with another predicate from a bigger pattern, 7 | - and this connection has a form that applies more generally to other connections between other domains, 8 | - and so on and so on infinitely! 9 | - Good example: going from [Gauss-Bonnet theorem](https://en.wikipedia.org/wiki/Gauss%E2%80%93Bonnet_theorem) to [Chern-Gauss-Bonnet theorem](https://en.wikipedia.org/wiki/Chern%E2%80%93Gauss%E2%80%93Bonnet_theorem) to [Riemann-Roch theorem](https://en.wikipedia.org/wiki/Riemann%E2%80%93Roch_theorem) to [Atiyah-Singer index theorem](https://en.wikipedia.org/wiki/Atiyah%E2%80%93Singer_index_theorem). 10 | 11 | ## Work in progress 12 | 13 | [Back to Elements](README.md#meta-thinking) 14 | -------------------------------------------------------------------------------- /metacog.md: -------------------------------------------------------------------------------- 1 | # Metacognition 2 | 3 | - Being aware of one's own thought processes. 4 | - Very closely related to meta-knowledge (see below). 5 | 6 | ## Self-reflection and self-criticism 7 | 8 | - ??? 9 | 10 | ## The rubber-ducky (or platypus) method 11 | 12 | - Projection onto others (get out of your own head!), 13 | - Empathy, and the "teacher's mind". 14 | 15 | ## Meta-cognitive vocabulary starter pack 16 | 17 | - Have I *overlooked* something *obvious*? 18 | - Have I considered all the *possibilities*? 19 | - Have I used too little or too much *soft focus* or *hard focus*? 20 | - Do I have the right *approach*? 21 | - Am I aware of the *big picture / small picture*? 22 | - Is my approach *too general* or *too specific*? 23 | - What is the *context*? What are the *implicit assumptions*? 24 | - Which *modality* and *paradigm* are best suited for this? 25 | - Did I take a *shortcut*? If so, *why*? 26 | - I know it works, but *why / how*? 27 | - Is my approach *necessary*, or *contingent* (just *happens to work*)? 28 | - Can I *explain / teach* this to *someone else*? 29 | - Do others think about this *differently* than I do? 30 | 31 | ## Work in progress 32 | 33 | [Back to Elements](README.md#metacognition) 34 | -------------------------------------------------------------------------------- /metaknow.md: -------------------------------------------------------------------------------- 1 | # Meta-knowledge 2 | 3 | - I know something. 4 | - I know that I know it. 5 | - I *learned it*, I *should* know it but I'm not confident. 6 | - To convince myself I should teach it to others. 7 | - I don't know *something*. 8 | - Sometimes I don't know that I don't know something. 9 | - Sometimes I can *feel* that I lack something, but I don't know *what it is that I don't know.* 10 | - I call this ***hitting the wall of meta-knowledge.*** (OUCH) 11 | - I can't figure out why I can't figure out things. 12 | 13 | ![hitting-the-wall](images/wallOfMetaKnowledge2.png) 14 | 15 | - I know what I lack, but I don't know where to go or how to acquire it. 16 | - I know what others don't, or I don't know what others know. 17 | - Others don't know that I know something. 18 | - I know that I know something but I can't explain it to others. 19 | - I'm not sure if *they* know what I'm talking about. 20 | - Are they missing some prerequisite knowledge to understand it? 21 | - I can't understand what others "see" in something. 22 | - They get it, I don't, and I'm not sure why. 23 | - Am I missing some prerequisite knowledge to understand it? 24 | 25 | ## Work in progress 26 | 27 | [Back to Elements](README.md#meta-knowledge) 28 | -------------------------------------------------------------------------------- /modality.md: -------------------------------------------------------------------------------- 1 | # Modalities 2 | 3 | Changing: 4 | 5 | - the ***active agent*** and the nature of ***knowledge*** (epistemology): 6 | - "something is true" vs. "*I know* something is true" vs. "something is *provable*", 7 | - the ***nature of truth***: 8 | - *necessary truth* vs. *possible truth* vs. *contingent truth*, 9 | - the ***type and goal of the activity***: 10 | - *calculating* vs. *proving* vs. *exploring* vs. *guessing / heuristics*, 11 | - and the ***accuracy***: 12 | - *deterministic* vs *probabilistic / stochastic*, 13 | - *exact* vs *approximate*. 14 | 15 | ## Work in progress 16 | 17 | [Back to Elements](README.md#modalities) 18 | -------------------------------------------------------------------------------- /model.md: -------------------------------------------------------------------------------- 1 | # Models and domain modeling 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#domain-modeling) 6 | -------------------------------------------------------------------------------- /paradigm.md: -------------------------------------------------------------------------------- 1 | # Paradigms 2 | 3 | ## Math paradigms 4 | 5 | ### Calculus / analysis / continuous math 6 | 7 | - "Everything is whole, together, inseparable, uncountable, unreal, and infinitesimally smooth." 8 | - "Best we can hope for is a local approximation that gets precise at infinity." 9 | 10 | ### Discrete math 11 | 12 | - "Everything is separate, individual, countable, jagged, real and precise." 13 | 14 | ## Programming paradigms 15 | 16 | ### OOP 17 | 18 | - "I, the object, am the center of the world." 19 | 20 | - Everything is local, noun-based and locally-state-based. 21 | 22 | ### FP 23 | 24 | - "Universal verbs from the heavens (functions) act on us all." 25 | 26 | - Everything is global, verb-based but no state (timeless). 27 | 28 | ### Logic Programming 29 | 30 | - "Everything is a proof search tree. Nothing else exists." 31 | 32 | ### Imperative Programming 33 | 34 | - "World is a chaotic mess of forever changing states. Keep up with it!" 35 | - Everything is global, temporal, side-effect-based and globally-state-based. 36 | 37 | ## Local vs Global thinking 38 | 39 | ## Work in progress 40 | 41 | [Back to Elements](README.md#paradigms) 42 | -------------------------------------------------------------------------------- /patterns.md: -------------------------------------------------------------------------------- 1 | # Patterns 2 | 3 | - Humans are comparison machines, which give rise to *order patterns*. 4 | - Humans also see spatial patterns, which give rise to *geometric / topological patterns*. 5 | - Humans are story-oriented, which gives rise to "...and then..." style *temporal patterns*. 6 | - Some of these can also be viewed as *causal patterns*. 7 | - Humans see and form relations everywhere between things / people, which give rise to *relational patterns*. 8 | - Humans observe / exhibit behaviors and think behaviorally, which gives rise to *behavioral patterns*. 9 | 10 | ## Work in progress 11 | 12 | [Back to Elements](README.md#pattern-recognition) 13 | -------------------------------------------------------------------------------- /physical.md: -------------------------------------------------------------------------------- 1 | # Physical world analogies 2 | 3 | | Abstract version | ↔ | Physical version | 4 | | --------------------: | :--: | ---------------------------------------- | 5 | | addition, subtraction | ↔ | putting things together, removing things | 6 | | transformation | ↔ | bending / stretching / shifting objects | 7 | | modus ponens | ↔ | cause and effect | 8 | | traits / polymorphism | ↔ | genetics | 9 | | recursion | ↔ | plants, shells, other life forms | 10 | | software architecture | ↔ | physical architecture | 11 | | neural networks | ↔ | human brain | 12 | | OS task switching| ↔ | multi-tasking of the human brain | 13 | 14 | ## Work in progress 15 | 16 | [Back to Elements](README.md#connections-to-the-physical-world) 17 | -------------------------------------------------------------------------------- /reason.md: -------------------------------------------------------------------------------- 1 | # Reasoning 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#reasoning) 6 | -------------------------------------------------------------------------------- /recursive.md: -------------------------------------------------------------------------------- 1 | # Recursive thinking 2 | 3 | ![broccoli](images/broccoli.png) 4 | 5 | ## recursive computations 6 | 7 | This explanation is from [Big Java: Early Objects 7ed](https://www.wiley.com/en-us/Big+Java%3A+Early+Objects%2C+7th+Edition-p-9781119499091) by Cay Horstmann. A few changes were made. 8 | 9 | A recursive computation solves a problem by using the solution to a simpler version of the problem, to solve the original problem. 10 | 11 | For example, if we look at a triangle made from shapes such as this one: 12 | 13 | ```java 14 | [] 15 | [][] 16 | [][][] 17 | ``` 18 | 19 | We’d like to compute the area of the triangle assuming each square has area 1. The purpose of this example is to explain the concept of recursion by walking through an example. 20 | 21 | If the width of the triangle is 1, then the triangle consists of a single square, and the area is 1. 22 | 23 | To deal with the general case, consider this picture: 24 | 25 | ```java 26 | [] 27 | [][] 28 | [][][] 29 | [][][][] 30 | ``` 31 | 32 | Suppose we knew the area of the upper triangle with width 3. Then we could easily compute the area of the larger triangle as: 33 | `smallerTriangleArea` + `width`. 34 | 35 | How can we get the area of the smaller triangle? 36 | 37 | ```java 38 | [] 39 | [][] 40 | [][][] 41 | ``` 42 | 43 | Similar to before, if we knew the area of the smaller triangle with width 2, then we could easily compute the area of the triangle with width 3 as: 44 | `smallerTriangleArea` + `width`. 45 | 46 | ```java 47 | [] 48 | [][] 49 | + 50 | [][][] 51 | = 52 | [] 53 | [][] 54 | [][][] 55 | ``` 56 | 57 | Now we can complete a recursive computation for getting the area of any given triangle: 58 | 59 | 1. if width is equal to 1, the area of this triangle is 1 60 | 2. otherwise, the smaller triangle is the triangle with width equal to this traingle's width - 1 61 | 3. and the area of this triangle is equal to the area of the smaller triangle plus the width of this triangle. 62 | 63 | or, in pseudocode: 64 | 65 | ```java 66 | if this.width == 1 { area = 1 } 67 | else { 68 | smallerTraingle = Triangle(width = this.width - 1) 69 | area = smallerTriangle.getArea() + this.width 70 | } 71 | ``` 72 | 73 | The computation: `smallerTriangleArea` + `width` will repeat itself until the area of the triangle is 1, at which point all the computaitons will be computed like so: 74 | 75 | ```java 76 | [] 77 | + 78 | [][] 79 | = 80 | [] 81 | [][] 82 | + 83 | [][][] 84 | = 85 | [] 86 | [][] 87 | [][][] 88 | + 89 | [][][][] 90 | = 91 | [] 92 | [][] 93 | [][][] 94 | [][][][] 95 | ``` 96 | 97 | This solution has 1 remarkable quality. To solve the area problem for a triangle of a given width, we use the fact that we can solve the same problem for a triangle of lesser width. This is called a _recursive_ solution because the same computation recurs, i.e. repeats itself. 98 | 99 | You only need to figure out how to combine the solution to a simpler version of the problem, in this case the area of the smaller triangle, with the extra input of your problem, in this case the width, to find a solution to your problem, the area of the triangle with the wider base. 100 | 101 | ### the mental model for coming up with recursive solutions 102 | 103 | The steps to follow when coming up with a recursive solution are the following. 104 | 105 | 1. Consider various ways to simplify the inputs, e.g. the area of the smaller triangle 106 | 2. Combine solutions with simpler inputs into a solution for the original problem, e.g. `smallerTriangleArea` + `width` 107 | 3. Find solutions to the simplest inputs, e.g. `if (width == 1) { area = 1 }` 108 | 4. Implement the solution by combining the simple cases, and the simplification followed by combination step. e.g. 109 | 110 | ```java 111 | if this.width == 1 { area = 1 } 112 | else { 113 | smallerTriangle = Triangle(width = this.width - 1) 114 | area = smallerTriangle.getArea() + this.width 115 | } 116 | ``` 117 | 118 | ## Work in progress 119 | 120 | [Back to Elements](README.md#recursive-thinking) 121 | -------------------------------------------------------------------------------- /relation.md: -------------------------------------------------------------------------------- 1 | # Relations 2 | 3 | - Lots of things are based on relations: 4 | - Graphs (social networks, GraphQL), 5 | - Databases (relational set theory), 6 | - OOP (UML diagrams, concept maps), many more. 7 | - Connections are informal, conceptual relations. 8 | 9 | ## Work in progress 10 | 11 | [Back to Elements](README.md#relations-and-connections) 12 | -------------------------------------------------------------------------------- /rulebased.md: -------------------------------------------------------------------------------- 1 | # Rule-based Thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#rule-based-thinking) 6 | -------------------------------------------------------------------------------- /semantic.md: -------------------------------------------------------------------------------- 1 | # Semantic thinking and predicates 2 | 3 | ## Syntax vs semantics 4 | 5 | - Constant tension between symbols and meaning. 6 | - Different possible worlds and interpretations. 7 | - Going back and forth between formal and informal, axioms and models. 8 | - Deep connection and equivalence between syntax and semantics: 9 | 10 | | Correspondence | Syntax | ↔ | Semantics | 11 | | :------------------------- | -------------: | :--: | -------------- | 12 | | Soundness and Completeness | Provability | ↔ | Truth | 13 | | Soundness and Completeness | Abstract proof | ↔ | Concrete model | 14 | | Curry-Howard Isomorphism | Proofs | ↔ | Programs | 15 | 16 | ## Work in progress 17 | 18 | [Back to Elements](README.md#semantics-domains-and-predicates) 19 | -------------------------------------------------------------------------------- /solve.md: -------------------------------------------------------------------------------- 1 | # Problem Solving 2 | 3 | ## Domain-general knowledge 4 | 5 | ## Domain-specific knowledge 6 | 7 | ## Knowledge transfer from general to specific 8 | 9 | ## The art of problem solving 10 | 11 | ### Constraints and trade-offs 12 | 13 | ### Implicit assumptions and context 14 | 15 | ### Insights 16 | 17 | ### General strategies and thinking 18 | 19 | - Wishful thinking and making wish lists; 20 | - Outside-the-box, or lateral thinking: "putting out fires with sound"; 21 | - Goal-oriented solving: start at the end, work backward; 22 | - Domain analysis, problem breakdown, solution design (blueprinting); 23 | - Look at it from real up close, look at it from ten miles away; 24 | - search for a solution = proof search in a proof tree; 25 | - ??? (more) 26 | 27 | ### "Convert, solve, convert back" paradigm 28 | 29 | - Algebraic topology / number theory / analytic geometry: 30 | - take a problem in topology / numbers / geometry, 31 | - convert to algebra, 32 | - solve the algebraic problem, 33 | - convert back to topology / numbers / geometry. 34 | - Laplace transform in differential equations is a perfect example. 35 | - Many, many more examples in all areas of math and CS. 36 | 37 | ### Mathematics specific strategies 38 | 39 | - Explain the mental models and patterns of mathematical ideas: 40 | - structural build-up from axioms by following rules; 41 | - the (cumulative) past determines the present; 42 | - how abstraction works, infinite families of mathematical objects; 43 | - what properties / predicates are and how to detect them; 44 | - ??? (more) 45 | 46 | ### Strategies from MAA 47 | 48 | - [01: Engage in successful flailing](https://maa.org/resource/problem-solving-strategy-1-engage-in-successful-flailing/) 49 | - [02: Do something](https://maa.org/resource/problem-solving-strategy-2-do-something/) 50 | - [03: Engage in wishful thinking](https://maa.org/resource/problem-solving-strategy-3-engage-in-wishful-thinking/) 51 | - [04: Draw a picture](https://maa.org/resource/problem-solving-strategy-4-draw-a-picture/) 52 | - [05: Solve a smaller version](https://maa.org/resource/problem-solving-strategy-5-solve-a-smaller-version-of-the-same-problem/) 53 | - [06: Eliminate incorrect choices](https://maa.org/resource/problem-solving-strategy-6-eliminate-incorrect-choices/) 54 | - [07: Perseverance is key](https://maa.org/resource/problem-solving-strategy-7-perseverance-is-key/) 55 | - [08: Second-guess the author](https://maa.org/resource/problem-solving-strategy-8-second-guess-the-author/) 56 | - [09: Avoid hard work](https://maa.org/resource/problem-solving-strategy-9-avoid-hard-work/) 57 | - [10: Go to extremes](https://maa.org/resource/problem-solving-strategy-10-go-to-extremes/) 58 | 59 | ## Rules 60 | 61 | ### Discovering the rules 62 | 63 | ### Following the rules 64 | 65 | ### Breaking the rules 66 | 67 | ## Work in progress 68 | 69 | [Back to Elements](README.md#problem-solving) 70 | -------------------------------------------------------------------------------- /structure.md: -------------------------------------------------------------------------------- 1 | # Structures and structural thinking 2 | 3 | ## Equivalences, identities and isomorphisms 4 | 5 | ## Spaces and transformations 6 | 7 | ## Operations, iterations and closures 8 | 9 | ## Work in progress 10 | 11 | [Back to Elements](README.md#structural-thinking) 12 | -------------------------------------------------------------------------------- /symbolic.md: -------------------------------------------------------------------------------- 1 | # Syntactic and symbolic thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#syntax-symbolic-thinking-and-symbol-manipulation) 6 | -------------------------------------------------------------------------------- /system.md: -------------------------------------------------------------------------------- 1 | # Systems thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to the Elements](README.md#systems-thinking) 6 | -------------------------------------------------------------------------------- /temporal.md: -------------------------------------------------------------------------------- 1 | # Temporal and imperative thinking 2 | 3 | ## States, transitions, state machines (automata) 4 | 5 | ## Invariants 6 | 7 | ## Work in progress 8 | 9 | [Back to Elements](README.md#temporal-thinking) 10 | -------------------------------------------------------------------------------- /unified.md: -------------------------------------------------------------------------------- 1 | # Unified theory 2 | 3 | Taken from [Computational Trilogy](https://ncatlab.org/nlab/show/computational+trilogy), it's actually more of a quadrilogy (or tetralogy). 4 | 5 | | **logic** | **set theory** | **category theory** | **type theory** | 6 | |--------------------------------------|--------------------------------------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------| 7 | | proposition | set | object | type | 8 | | predicate | family of sets | display morphism | dependent type | 9 | | proof | element | generalized element | term/program | 10 | | cut rule | | composition of classifying morphisms / pullback of display maps | substitution | 11 | | introduction rule for implication | | counit for hom-tensor adjunction | lambda | 12 | | elimination rule for implication | | unit for hom-tensor adjunction | application | 13 | | cut elimination for implication | | one of the zigzag identities for hom-tensor adjunction | beta reduction | 14 | | identity elimination for implication | | the other zigzag identity for hom-tensor adjunction | eta conversion | 15 | | true | singleton | terminal object/(-2)-truncated object | h-level 0-type/unit type | 16 | | false | empty set | initial object | empty type | 17 | | proposition, truth value | subsingleton | subterminal object/(-1)-truncated object | h-proposition, mere proposition | 18 | | logical conjunction | cartesian product | product | product type | 19 | | disjunction | disjoint union (support of) | coproduct ((-1)-truncation of) | sum type (bracket type of) | 20 | | implication | function set (into subsingleton) | internal hom (into subterminal object) | function type (into h-proposition) | 21 | | negation | function set into empty set | internal hom into initial object | function type into empty type | 22 | | universal quantification | indexed cartesian product (of family of subsingletons) | dependent product (of family of subterminal objects) | dependent product type (of family of h-propositions) | 23 | | existential quantification | indexed disjoint union (support of) | dependent sum ((-1)-truncation of) | dependent sum type (bracket type of) | 24 | | logical equivalence | bijection set | object of isomorphisms | equivalence type | 25 | | | support set | support object/(-1)-truncation | propositional truncation/bracket type | 26 | | | | n-image of morphism into terminal object/n-truncation | n-truncation modality | 27 | | equality | diagonal function/diagonal subset/diagonal relation | path space object | identity type/path type | 28 | | completely presented set | set | discrete object/0-truncated object | h-level 2-type/set/h-set | 29 | | set | set with equivalence relation | internal 0-groupoid | Bishop set/setoid with its pseudo-equivalence relation an actual equivalence relation | 30 | | | equivalence class/quotient set | quotient | quotient type | 31 | | induction | | colimit | inductive type, W-type, M-type | 32 | | higher induction | | higher colimit | higher inductive type | 33 | | - | | 0-truncated higher colimit | quotient inductive type | 34 | | coinduction | | limit | coinductive type | 35 | | | preset | | type without identity types | 36 | | | set of truth values | subobject classifier | type of propositions | 37 | | domain of discourse | universe | object classifier | type universe | 38 | | modality | | closure operator, (idempotent) monad | modal type theory, monad (in computer science) | 39 | | linear logic | | (symmetric, closed) monoidal category | linear type theory/quantum computation | 40 | | proof net | | string diagram | quantum circuit | 41 | | (absence of) contraction rule | | (absence of) diagonal | no-cloning theorem | 42 | | | | synthetic mathematics | domain specific embedded programming language | 43 | 44 | ## Work in progress 45 | 46 | [Back to Elements](README.md#unified-theory-of-everything) 47 | -------------------------------------------------------------------------------- /visual.md: -------------------------------------------------------------------------------- 1 | # Visual thinking 2 | 3 | ## Work in progress 4 | 5 | [Back to Elements](README.md#spatial-visual-thinking) 6 | --------------------------------------------------------------------------------