1. notice
  2. 中文
  3. 1. feature
  4. 逻辑
  5. 2. 逻辑
  6. 3. 集合论
  7. 4. 映射
  8. 5. 序
  9. 6. 组合
  10. 微积分
  11. 7. 实数
  12. 8. 数列极限
  13. 9. ℝ^n
  14. 10. Euclidean 空间
  15. 11. Minkowski 空间
  16. 12. 多项式
  17. 13. 解析 (Euclidean)
  18. 14. 解析 (Minkowski)
  19. 15. 解析 struct 的操作
  20. 16. 常微分方程
  21. 17. 体积
  22. 18. 积分
  23. 19. 散度
  24. 20. 网极限
  25. 21. 紧致
  26. 22. 连通
  27. 23. 拓扑 struct 的操作
  28. 24. 指数函数
  29. 25. 角度
  30. 几何
  31. 26. 流形
  32. 27. 度规
  33. 28. 度规的联络
  34. 29. Levi-Civita 导数
  35. 30. 度规的曲率
  36. 31. Einstein 度规
  37. 32. 常截面曲率
  38. 33. simple-symmetric-space
  39. 34. 主丛
  40. 35. 群作用
  41. 36. 球极投影
  42. 37. Hopf 丛
  43. 场论
  44. 38. 非相对论点粒子
  45. 39. 相对论点粒子
  46. 40. 纯量场
  47. 41. 纯量场的守恒流
  48. 42. 非相对论纯量场
  49. 43. 光锥射影
  50. 44. 时空动量的自旋表示
  51. 45. Lorentz 群
  52. 46. 旋量场
  53. 47. 旋量场的守恒流
  54. 48. 电磁场
  55. 49. 张量场的 Laplacian
  56. 50. Einstein 度规
  57. 51. 相互作用
  58. 52. 谐振子量子化
  59. 53. 参考
  60. English
  61. 54. notice
  62. 55. feature
  63. logic-topic
  64. 56. logic
  65. 57. set-theory
  66. 58. map
  67. 59. order
  68. 60. combinatorics
  69. calculus
  70. 61. real-numbers
  71. 62. limit-sequence
  72. 63. ℝ^n
  73. 64. Euclidean-space
  74. 65. Minkowski-space
  75. 66. polynomial
  76. 67. analytic-Euclidean
  77. 68. analytic-Minkowski
  78. 69. analytic-struct-operation
  79. 70. ordinary-differential-equation
  80. 71. volume
  81. 72. integral
  82. 73. divergence
  83. 74. limit-net
  84. 75. compact
  85. 76. connected
  86. 77. topology-struct-operation
  87. 78. exponential
  88. 79. angle
  89. geometry
  90. 80. manifold
  91. 81. metric
  92. 82. metric-connection
  93. 83. geodesic-derivative
  94. 84. curvature-of-metric
  95. 85. Einstein-metric
  96. 86. constant-sectional-curvature
  97. 87. simple-symmetric-space
  98. 88. principal-bundle
  99. 89. group-action
  100. 90. stereographic-projection
  101. 91. Hopf-bundle
  102. field-theory
  103. 92. point-particle-non-relativity
  104. 93. point-particle-relativity
  105. 94. scalar-field
  106. 95. scalar-field-current
  107. 96. scalar-field-non-relativity
  108. 97. projective-lightcone
  109. 98. spacetime-momentum-spinor-representation
  110. 99. Lorentz-group
  111. 100. spinor-field
  112. 101. spinor-field-current
  113. 102. electromagnetic-field
  114. 103. Laplacian-of-tensor-field
  115. 104. Einstein-metric
  116. 105. interaction
  117. 106. harmonic-oscillator-quantization
  118. 107. reference

note-math

For people, one way to understand natural numbers is counting

For computers (cf. #link(<logic.typ>)[]), the ways to represent natural numbers are

  • Periodic circuit
  • Arithmetic component +1
  • Binary

However, the number of elements in the set of natural numbers is infinite, while bits and computer memory are finite. Human memory is also finite

The problem of infinite space: Reality cannot build circuits and memory with infinite space. Even if it could, it would be limited by the finite speed of electricity.

But potentially infinite time can be used to achieve "potential infinity"

However, there are even sets with an #link(<uncountable>)[uncountable] number of elements. Example

  • the set of all subset of ℕ, Subset(ℕ)
  • all function from ℕ to itself, ℕ→ℕ

Verifying the correctness of set theory language requires a parser, memory data structures, and functions. The implementation of the generated computer instruction stream is not the focus of this goal.

Motivation for sets/types

  • Modularization and multiplicative decomposition to simplify cognition

    Example Natural language's Subject-Verb-Object SVO (subject, predicate, object). Suppose there are 10 nouns and 10 verbs. Suppose we "forget the SVO rule", then verifying the grammatical correctness of a three-word sentence requires at most 103=1000 times. If we understand and use the SVO rule, it requires at most 23=8 times.

  • If the number of elements in a set is infinite, then the set/type limits the concept, making it possible to say it in a finite amount of time

Complex set theory objects, propositions are stored in variable names, so humans still need to check all the complex definitions stored in variable names, so readability is very important

Parser or proof assistants can allow humans to reduce from reviewing all steps to reviewing definitions, skipping a large number of detailed proof steps, and then determine the correctness of the proof result. This is like the case of APIs

The human brain compiler can omit and supplement omissions, trading temporary efficiency for error-proneness and forgetfulness

Assistance also has other functions, like the case of, Programming before the era of IDE/LSP/friendly-and -interactive-compiler-error-messages/documentation was painful. The organization, structuring and reuse of data and information were not done well, and the powerful capacity and time of memory were not used well.

proposition_(tag) proposition is a special (string, bool) product struct computer data structure. For mathematical language, the string field uses special construction rules to restrict it, and this restricted version of the string is called a formula

Because we cannot directly judge the truth or falsehood of a guess, we need a language with undefined truth values.

from proposition to unknown proposition, its truth value part is modified to (bool, unknow) sum struct

Abbreviation true proposition and proposition are often used interchangeably

Many propositions cannot be automatically derived by computers, and humans need to find possible paths, input them into the computer for verification, or develop more new automated proof methods.

We will assume some initial propositions that do not need to be proven. And assume rules for constructing new propositions using existing propositions.

Abbreviation Use the same symbol ϕ for formula and proposition, "ϕ is true/false/unknow", ϕ=0/1/?

formula_(tag)

  • in

let symbol 𝑎,𝐴 be type of math object, then 𝑎∈𝐴 is a formula

𝑎∈𝐴 is similar to value : type or variable_name : type in programming language

symbol ∈ is not math object

  • equal
let 𝑎,𝑏 be object, then 𝑎=𝑏 is a formula
  • and, or, not

let 𝑝,𝑞 be formula, then

𝑝∧𝑞𝑝∨𝑞¬𝑞

is formula

  • forall, exists

let 𝑝(𝑎) be formula built with 𝑎 i.e. read 𝑎∈𝐴 in memory, used by some specific function call, then

⋀𝑎∈𝐴𝑝(𝑎)  or  ∀𝑎∈𝐴,𝑝(𝑎)⋁𝑎∈𝐴𝑝(𝑎)  or  ∃𝑎∈𝐴,𝑝(𝑎)

is formula

  • inference 𝑝⇒𝑞, equivalent 𝑝⇔𝑞 is formula

The following discusses math-object-construct-rule alias set-theory

natural-number_(tag) ℕ

natrual number 0,1,2,… and natrual number set ℕ is object. 0,1,2,…∈ℕ is true proposition

But computers cannot handle infinity. In order to allow computers to use limited characters and memory to represent natural numbers, let 𝑛,ℕ and +1 functions be finite symbols in the memory address, and define the following as true proposition

  • 0∈ℕ
  • 𝑛∈ℕ⟹𝑛+1∈ℕ

Equivalent to telling the computer how to continuously +1 with instruction streams? Also related to induction

The cost of finite characters is potentially infinite time, always relying on counting or periodic circuits.

empty_(tag) ∅

empty ∅ is object. let 𝑎 be a object, 𝑎∈∅ is false proposition

The definition of ∅ is convenient for intersections ∩ e.g. the intersection is empty, and the number of elements of Subset(𝐴) of a finite set 𝐴, 2𝑛 is more convenient than 2𝑛−1

Define language expansion

  • 𝑎≠𝑏≔¬(𝑎=𝑏)
  • 𝑎∉𝐴≔¬(𝑎∈𝐴)

Because “define language expansion” is very long, it is usually abbreviated to "definition" "def"

In fact, the symbol = is also commonly used to represent defining language expansion or specifying language transformation. Specifically, the = of natural numbers can be directly defined as comparing the value of memory with computer circuits.

declare-element-of-set_(tag)

If 𝐴 is non empty 𝐴≠∅ (this information comes from the definition of 𝐴), we can define symbol 𝑎 and construct true proposition (let) 𝑎∈𝐴

A finite number of declare statements can be constructed

enum_(tag) enumerate

𝑎0,…,𝑎𝑛 is object then {𝑎0,…,𝑎𝑛} is a set

Represented as a sequence of numbers in memory

The entire set can be called in this way: record the address of the first element + the length of the array as the number of circuit cycles, and read one element per circuit cycle

formulas 𝑎0,…,𝑎𝑛∈{𝑎0,…,𝑎𝑛} are true propositions

Specifically, a single-element set 𝑎∈{𝑎}

define 𝐴⊂𝐵≔∀𝑎∈𝐴,𝑎∈𝐵

equivalent_(tag) ⟺

Some equivalent uses. For computer data, it can be proved by exhaustion that the following calculation results are equal

¬(¬𝑝)⟺𝑝¬(𝑝∧𝑞)⟺(¬𝑝)∨(¬𝑞)

Similarly, in order to represent the case of "infinite elements", define language expansion or specify language transformation. For example, De Morgan law of infinite elements

¬(⋀𝑎∈𝐴𝑝(𝑎))⟺⋁𝑎∈𝐴¬𝑝(𝑎) or ¬(∀𝑎∈𝐴,𝑝(𝑎))⟺∃𝑎∈𝐴,¬𝑝(𝑎)

The concept of "infinity" is limited by using the symbol string 𝑎∈𝐴 of #link(<declare-element-of-set>)[]

formula, proposition is a special data structure in memory. It can be considered that math_object, formula, proposition are the type of programming language

Many propositions are equivalent, so we can consider the "quotient" type of propositions, but the possibility of equivalence is infinite, whether it is possible to have an exhaustive algorithm, first depends on whether it is #link(<countable>)[] …

Similar to the redundancy of ∧,∨,¬, set theory construction rules may also have redundancy, or there are many equivalent definitions

Specify (finite)

= transitive := (𝑎=𝑏)∧(𝑏=𝑐)⟹(𝑎=𝑐)

⇔ transitive := (𝑝⇔𝑞)∧(𝑞⇔𝑟)⟹(𝑝⇔𝑟)

follow #link(<bool-algebra>)[various rules of bool in the finite case], define language transformation rules: let 𝑝(𝑎,𝑏) is formula built with independent/parallel 𝑎,𝑏 i.e. independent/parallel in memory read and used by specific cuntion, then

commutative-forall-exists_(tag)

⋀𝑎∈𝐴⋀𝑏∈𝐵𝑝(𝑎,𝑏)⟺⋀𝑏∈𝐵⋀𝑎∈𝐴𝑝(𝑎,𝑏)

same for ⋁

distributive-forall-exists_(tag)

⋀𝑎∈𝐴⋁𝑏∈𝐵𝑝(𝑎,𝑏)⟺⋁𝑏∈𝐵⋀𝑎∈𝐴𝑝(𝑎,𝑏)

Note that I myself also feel that I cannot completely clearly handle the concepts of derivation and proof below

Natural language example of derivation

If it rains, I won't go out
It's raining
So I won't go out

This example is similar to a conditional branch

rain : bool;
out : bool;
switch (rain) {
true => out = false,
false => out = undefined
};

inference_(tag) For mathematical language, that is

  • The compiler reads the formula 𝑝,𝑞
  • The compiler reads the formula 𝑝⇒𝑞 is true proposition (may be custom)
  • The compiler reads the formula 𝑝 is true proposition
  • Then the language rule setting is that the compiler, according to this condition (from memory), assigns the bool value of the formula 𝑞 to true i.e. sets 𝑞 is true proposition

proof_(tag) The proof is that compiling passes 𝑝⇒𝑞 is true proposition

Another kind of equivalence 𝑝⇔𝑞≔(𝑝⇒𝑞)∧(𝑞⇒𝑝)

reverse-inference_(tag) Reverse inference. If the result is that I went out, then it is definitely not the result of rain. If the result of the conditional branch is out = true, this is not the result of rain = true. Since the bool value of an ideal binary computer must be one of two, it can only be the result of rain = false. This can be written as a conditional branch

switch (out) {
true => rain = false,
false => rain = undefined
};

Mathematically, reverse inference is written as formula ¬𝑞⇒¬𝑝, and defined equivalent to 𝑝⇒𝑞

reverse-proof_(tag) Proof by contradiction is that compiling passes ¬𝑝⇒¬𝑞 is true proposition

Deductive proof also requires syllogism

  1. All living things die
  2. Humans are living things
  3. Therefore, all humans will die

Where "all living things die" is a specially constructed proposition

syllogism_(tag) Syllogistic reasoning is a language rule

  • The compiler reads the formula (∀𝑎∈𝐴,𝑝(𝑎)) is true proposition (possibly from a definition e.g. #link(<union>)[]))
  • The compiler reads the declaration let 𝑎′∈𝐴 is true proposition
  • The compiler reads the formula 𝑝(𝑎′)
  • Then the compiler sets 𝑝(𝑎′) is true proposition according to this condition (from memory)

That is, the compiler implements the specific construction of data (finite) according to the declaration (∀𝑎∈𝐴,𝑝(𝑎)) (possibly "infinite")

Or understand it as, this rule and behavior are defining the concept of (∀𝑎∈𝐴,𝑝(𝑎)) itself

It is also usually written as the equivalent rule let 𝑎′∈𝐴, then the special inference formula (∀𝑎∈𝐴,𝑝(𝑎))⟹𝑝(𝑎′) is always true proposition. This form is often used in what #link(<proof>)[previously] said, "proving is compiling passes 𝑝⇒𝑞 is true proposition"

Reverse syllogism: let 𝑎′∈𝐴, then the equivalent formula ¬𝑝(𝑎′)⟹¬(∀𝑎∈𝐴,𝑝(𝑎)) or ∃𝑎∈𝐴,¬𝑝(𝑎) is true proposition

We may never know whether a proposition of bool unknow can be constructively proved, i.e. compiled successfully in a limited number of steps

Where does the target proposition come from? It may be related to a model of the real world

The proof requires expanding a large number of sentences, although computers are very fast at processing strings. In any case, performance optimization? Use only when needed (lazy load)? Parallel (parallel) when two propositions are not interdependent? Assume already proven results (incremental compilation)?

A proposition has many proofs with different runtime data flow, which can be considered to belong to the same quotient proof of this proposition

The following object construction rules, except for the intersection, generally give non-empty sets

union_(tag)

define object ⋃𝐴 and language expansion

𝑥∈𝑎∪𝑎′≔(𝑥∈𝑎)∨(𝑥∈𝑎′)𝑥∈⋃𝐴≔⋁𝑎∈𝐴𝑥∈𝑎≔∃𝑎∈𝐴,𝑥∈𝑎

is non-emtpy unless ∀𝑎∈𝐴,𝑎=∅

𝐴∪𝐴=𝐴

We do not define the union for 𝐴=∅. Same below. The reason is that let 𝑎∈𝐴=∅ is always a false proposition, which makes many things unusable

sum_(tag)

𝑥∈𝑎⊔𝑎′≔(𝑥∈𝑎)⊕(𝑥∈𝑎′)𝑥∈⨆𝐴≔⨁𝑎∈𝐴𝑥∈𝑎≔∃!𝑎∈𝐴,𝑥∈𝑎

is non-emtpy unless ∀𝑎∈𝐴,𝑎=∅

in finite case, number of element |⨁1𝑛𝐴𝑖|=∑1𝑛|𝐴𝑖|

enum is special case of sum/union?

intersection_(tag)

𝑥∈𝑎∩𝑎′≔(𝑥∈𝑎)∧(𝑥∈𝑎′)𝑥∈⋂𝐴≔⋀𝑎∈𝐴𝑥∈𝑎≔∀𝑎∈𝐴,𝑥∈𝑎

𝐴∩𝐴=𝐴

product_(tag)

𝑥∈𝑎×𝑎′≔(𝑥(𝑎)∈𝑎)∧(𝑥(𝑎′)∈𝑎′)𝑥∈∏𝐴≔⋀𝑎∈𝐴𝑥(𝑎)∈𝑎≔∀𝑎∈𝐴,𝑥(𝑎)∈𝑎

is non-emtpy unless ∃𝑎∈𝐴,𝑎=∅ (related to axiom-of-choice_(tag) )

Abbreviation 𝐴×𝐴=𝐴2. in finite case, number of elements |∏1𝑛𝐴𝑖|=∏1𝑛|𝐴𝑖|

𝑥(𝑎) means reading two symbols as a combined symbol

map_(tag)

let 𝐴,𝐵 is math object. The rule for defining map space 𝐴→𝐵, map 𝑓 as math object is

𝑓∈(𝐴→𝐵)≔⋀𝑎∈𝐴𝑓(𝑎)∈𝐵≔∀𝑎∈𝐴,𝑓(𝑎)∈𝐵

denoted by 𝑓:𝐴→𝐵

denoted by 𝑓∈𝐵𝐴. in finite case, number of elements |𝐵𝐴|=|𝐵||𝐴|

Although the usage of 𝑓,𝑓(𝑎),𝑓(𝑎)∈𝐵 seems problematic, they can still be defined in terms of symbol & symbol strings

If we talk about what the map 𝑓 specifically represents, due to non-concrete constructiveness, there is no specific return like in general programming languages, or what return is a newly defined symbol, math object, language expansion

subset_(tag)

𝑆∈Subset(𝐴)≔𝑆⊂𝐴

denoted by 2𝐴. According to #link(<proposition-function>)[] equivalent to map space 𝐴→{0,1}. in finite case, number of elements |2𝐴|=2|𝐴|

define ∅⊂𝐴 be true proposition

map space and subset introduce high-level infinity

One seemingly counterintuitive thing at first glance is that we seemingly know all 𝑆⊂ℕ or all 𝑓:ℕ→ℕ, but cannot count them #link(<cardinal-increase>)[] #link(<uncountable>)[]. However, what exactly does "know all 𝑆⊂ℕ" mean? In fact, trying to consider the question of "finding an infinite subset of ℕ in a general way" reveals that this is not simple.

Similarly, although countable can already define some real numbers e.g. ∑1𝑛!=𝑒, if not with the help of subset or map, countable construction cannot obtain all ℝ

proposition-function_(tag)

let 𝑎∈𝐴, 𝑝(𝑎):𝐴→{0,1} is already constructed

{𝑎∈𝐴:𝑝(𝑎)} is object

𝑥∈{𝑎∈𝐴:𝑝(𝑎)}≔(𝑥∈𝐴)∧𝑝(𝑥)

define

𝐴=𝐵≔(𝑥∈𝐴)⟺(𝑥∈𝐵)

Other usages of =

  1. Alias of identifier in memory
  2. Return value of function in memory. so 1+1=2 should be understood as the return value of the add function is 2

hierarchy-order-of-set_(tag)

The set constructed above is called a zero (hierarchy) order set

𝐴∈ Set or 𝐴∈ Set 0

then let Set 0 be math object, in first order set

Set 0∈ Set 1

Using object construction rules again, what we get is also defined as belonging to Set 1

Anyway, we can always construct such a language with types and bool and various rules in the compiler. Although there are compilers for compilers, the number of compiler layers can also be infinite …

let Set 1 be math object, Set 1∈ Set 2. And so on …

Example

  • Set × Set ∈ Set 1
  • (Set → Set)∈ Set 1
  • Group ∈ Set 1

    (𝐺,𝑚)∈ Group ≔𝐺∈ Set 𝑚∈ Set property-group-multiplication(𝐺,𝑚)(e.g.  𝑚∈(𝐺2→𝐺))

    Can be divided into multiple sentences, so that it is convenient to add/remove properties to get different structs

Set 0, Set 1,… looks like the set of natural numbers ℕ, so should we assume a new hierarchy Set ℕ again? Then for Set ℕ, continue to use the object construct rule …

Will the above construction rules lead to contradictions or computer deadlocks?

If we keep constructing infinitely, does this language have an end?

universal-set_(tag)

Does there exist a "set of every set", a "universal set", a "universal-type"?

Defined using set theory rules

𝐴≔{𝑥∈ universal-set :¬(𝑥∈𝑥)}∈ universal-set

Then let the compiler calculate the bool of the proposition 𝐴∈𝐴. Since 𝐴∈ universal-set = true, the compiler only calculates the bool of ¬(𝐴∈𝐴), and then discovers the not function, so it calculates the bool inside not, but this returns to calculating the bool of 𝐴∈𝐴. The compiler may choose to enter a circuit dead loop.

For finite sets, 𝑥∉𝑥 or cannot be judged, e.g. {1}∉{1}, because 1≠{1}, or there is no definition that 𝑥∈1 is a true proposition.

Related to self-referential paradox. Example "This sentence is wrong" gives a computer dead loop

this_sentence_is_false : bool = false;
loop:
switch (this_sentence_is_false) {
false => this_sentence_is_false = true,
true => this_sentence_is_false = false
}
goto loop
};

Or use layering to bypass the self-referential paradox (this_sentence = false) = true. We consider them to be different sentences and judgments, believing that it cannot be self-referential.

If we can count a number, we consider it a natural number.

If language rules can be written and language objects constructed in a finite number of steps, we consider it constructible and expressible. For set theory, what can be constructed in such a finite number of steps is called a math object.

Regarding the problem of infinite natural numbers, if natural numbers are defined by counting or induction or periodic circuits, then the problem of infinity is pushed to infinite time.

For set theory language, assume that universal-set or universal-type leads to the construction of something that causes the circuit to enter an infinite loop.

dependent-distributive_(tag)

union & interset

⋂𝑎∈𝐴⋃𝑥∈∏𝐴𝑥(𝑎)=⋃𝑥∈∏𝐴⋂𝑎∈𝐴𝑥(𝑎)⋃𝑎∈𝐴⋂𝑥∈∏𝐴𝑥(𝑎)=⋂𝑥∈∏𝐴⋃𝑎∈𝐴𝑥(𝑎)

sum and product

∏𝑎∈𝐴⨆𝑥∈∏𝐴𝑥(𝑎)=⨆𝑥∈∏𝐴∏𝑎∈𝐴𝑥(𝑎)⨆𝑎∈𝐴∏𝑥∈∏𝐴𝑥(𝑎)=∏𝑥∈∏𝐴⨆𝑎∈𝐴𝑥(𝑎)

draft of proof: expand, use parallel distributive cf. #link(<distributive-forall-exists>)[]

set-minus_(tag)

𝐴∖𝐵≔{𝑥∈𝐴:𝑥∉𝐵}. if 𝐵⊂𝐴 then define 𝐵∁≔𝐴∖𝐵

symmetric-set-minus_(tag)

𝐴Δ𝐵≔(𝐴∖𝐵)⊔(𝐵∖𝐴)=(𝐴∪𝐵)∖(𝐴∩𝐵)

coordinate-component_(tag)

  • product component

    (∏𝐴⟶𝑎𝑥⟿𝑥(𝑎))
  • sum component

    𝑎⟶⨆𝐴𝑥⟿𝑥(𝑎)