├── .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 | 
4 |
5 | Welcome to the world of ***abstract nonsense!***
6 |
7 | ## Motivation
8 |
9 | 
10 |
11 | 
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 | 
22 |
23 | I don\'t accept the general / genetic explanation that "they're just not smart enough."
24 |
25 | 
26 |
27 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------