From aa6d8db12013a9a360cf56679354a24fdc97ce02 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Sat, 9 Nov 2024 19:23:36 -0700 Subject: [PATCH] Area and induction. --- .../plugins/obsidian-to-anki-plugin/data.json | 37 +- notes/_journal/2024-11-09.md | 13 + notes/_journal/{ => 2024-11}/2024-11-05.md | 4 +- notes/_journal/2024-11/2024-11-06.md | 9 + notes/_journal/2024-11/2024-11-07.md | 9 + notes/_journal/2024-11/2024-11-08.md | 9 + notes/algebra/sequences/index.md | 2 +- notes/algorithms/order-growth.md | 2 +- notes/c17/alignment.md | 376 +++++++++++++++++- notes/c17/types/derived.md | 54 ++- notes/c17/types/simple.md | 33 +- notes/calculus/bounds.md | 2 +- notes/combinatorics/permutations.md | 2 +- notes/data-structures/graphs.md | 2 +- notes/geometry/cartesian.md | 113 ++++++ notes/geometry/index.md | 3 + notes/lambda-calculus/index.md | 4 +- notes/proofs/index.md | 92 ++++- notes/set/natural-numbers.md | 186 ++++++++- notes/x86-64/directives.md | 38 ++ notes/x86-64/instructions/index.md | 16 - 21 files changed, 906 insertions(+), 100 deletions(-) create mode 100644 notes/_journal/2024-11-09.md rename notes/_journal/{ => 2024-11}/2024-11-05.md (53%) create mode 100644 notes/_journal/2024-11/2024-11-06.md create mode 100644 notes/_journal/2024-11/2024-11-07.md create mode 100644 notes/_journal/2024-11/2024-11-08.md create mode 100644 notes/geometry/cartesian.md create mode 100644 notes/geometry/index.md create mode 100644 notes/x86-64/directives.md diff --git a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json index ff30465..69ce112 100644 --- a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json +++ b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json @@ -263,7 +263,7 @@ "algorithms/loop-invariants.md": "cbefc346842c21a6cce5c5edce451eb2", "algorithms/loop-invariant.md": "3b390e720f3b2a98e611b49a0bb1f5a9", "algorithms/running-time.md": "5efc0791097d2c996f931c9046c95f65", - "algorithms/order-growth.md": "b2868f2523bb85f9e9c3fbfeb3753f0c", + "algorithms/order-growth.md": "1e5cbdfd9dea80ba284db3589f55e65f", "_journal/2024-02-08.md": "19092bdfe378f31e2774f20d6afbfbac", "algorithms/sorting/selection-sort.md": "73415c44d6f4429f43c366078fd4bf98", "algorithms/index 1.md": "6fada1f3d5d3af64687719eb465a5b97", @@ -319,7 +319,7 @@ "combinatorics/additive-principle.md": "d036ac511e382d5c1caca437341a5915", "_journal/2024-02-19.md": "30d16c5373deb9cb128d2e7934ae256a", "_journal/2024-02/2024-02-18.md": "67e36dbbb2cac699d4533b5a2eaeb629", - "combinatorics/permutations.md": "794822b96aeeadcb31e763f52ffb7b6e", + "combinatorics/permutations.md": "8eeafb451a6c2a46269b19790e163ae2", "combinatorics/combinations.md": "396fc32255710eaf33213efaafdc43d4", "_journal/2024-02-20.md": "b85ba0eeeb16e30a602ccefabcc9763e", "_journal/2024-02/2024-02-19.md": "df1a9ab7ab89244021b3003c84640c78", @@ -356,7 +356,7 @@ "_journal/2024-03-01.md": "a532486279190b0c12954966cbf8c3fe", "_journal/2024-02/2024-02-29.md": "0e502a2c8baf90c2f12859b03f10b5a1", "algebra/sequences.md": "97c217823aacf8910a1a37bde694ecfe", - "algebra/sequences/index.md": "208174a5a078b120fa11e296ad1d09c1", + "algebra/sequences/index.md": "7368b87313ea161a2655be0c39e705a3", "_journal/2024-03-02.md": "08c3cae1df0079293b47e1e9556f1ce1", "_journal/2024-03/2024-03-01.md": "70da812300f284df72718dd32fc39322", "algebra/sequences/triangular-numbers.md": "aafaf54e5aff9ca3c7354591fce9f833", @@ -492,7 +492,7 @@ "_journal/2024-04-30.md": "369f98b9d91de89cc1f4f581bc530c0d", "_journal/2024-04/2024-04-29.md": "b4fa2fd62e1b4fe34c1f71dc1e9f5b0b", "proofs/induction.md": "36ab5a92ae3cf9bb2def333dc41d79ff", - "proofs/index.md": "6251417184116a217e6eef39abc12077", + "proofs/index.md": "561455753378c78d783b80edd9a1b4c7", "_journal/2024-05-01.md": "959ff67fe3db585ba6a7b121d853bbac", "_journal/2024-05-02.md": "d7d6ba7e065d807986f0bd77281c0bb1", "data-structures/priority-queues.md": "8c5c6bf62b1a39d8f1f72b800fcb17ff", @@ -591,12 +591,12 @@ "_journal/2024-06-08.md": "b20d39dab30b4e12559a831ab8d2f9b8", "_journal/2024-06/2024-06-07.md": "c6bfc4c1e5913d23ea7828a23340e7d3", "lambda-calculus/alpha-conversion.md": "6df655e60976715e5c6fbbe72b628c6d", - "lambda-calculus/index.md": "aab579d6826d40d2984e5289c3f547e5", + "lambda-calculus/index.md": "0e47dcd2ac0c84ad4c1a5e7609dade5f", "x86-64/instructions/condition-codes.md": "9c05ed99f5c96162e25f0ec4db55c656", "x86-64/instructions/logical.md": "49d40018f1fcb4ed1595d9175bbaab57", "x86-64/instructions/arithmetic.md": "df57fdc8d260d0812464b08565ef4c51", "x86-64/instructions/access.md": "4589d79f9915ffeeab7b75d2208b7917", - "x86-64/instructions/index.md": "df78f6d1d56da054606d374ca3282bf8", + "x86-64/instructions/index.md": "cc5505d01d8409255fa42e87bfe15f07", "_journal/2024-06-09.md": "935b3ddf65c51e680ac5c000c7e380af", "_journal/2024-06/2024-06-08.md": "9e1ebc8882a395b96ca765ad5c982d68", "_journal/2024-06-10.md": "84d27300b97c8544ab4ec68b06edd824", @@ -777,7 +777,7 @@ "_journal/2024-08-19.md": "94836e52ec04a72d3e1dbf3854208f65", "_journal/2024-08/2024-08-18.md": "6f8aec69e00401b611db2a377a3aace5", "_journal/2024-08/2024-08-17.md": "b06a551560c377f61a1b39286cd43cee", - "calculus/bounds.md": "cbae7421eaa096cd17a2f9de079f593d", + "calculus/bounds.md": "f89de98e888b36af3b921fc0bdb1d281", "calculus/index.md": "5ee4d950533ae330ca5ef9e113fe87f3", "x86-64/instructions/conditions.md": "093cf907ccbb665961134624d19e31d3", "_journal/2024-08-20.md": "e8bec308d1b29e411c6799ace7ef6571", @@ -788,7 +788,7 @@ "_journal/2024-08/2024-08-21.md": "1637b8ec8475cf3eb4f41d1d86cbf5df", "_journal/2024-08/2024-08-20.md": "e8bec308d1b29e411c6799ace7ef6571", "_journal/2024-08-23.md": "3b2feab2cc927e267263cb1e9c173d50", - "set/natural-numbers.md": "0fb40d1d2f7a0f9976afbacdff1c734b", + "set/natural-numbers.md": "6219f07da2d79fba29bb16bcd2f48ce2", "_journal/2024-08-24.md": "563fad24740e44734a87d7c3ec46cec4", "_journal/2024-08/2024-08-23.md": "7b5a40e83d8f07ff54cd9708017d029c", "_journal/2024-08/2024-08-22.md": "050235d5dc772b542773743b57ce3afe", @@ -796,15 +796,15 @@ "c17/enums.md": "9414fb67aa256a0a11b7240534c67bf6", "c17/derived-types.md": "6fb8f23a2423f05d5bdccb6672a32e38", "c17/basic-types.md": "7c6653bf6dc24c2f2aa72fc95c4f7875", - "c17/types/simple.md": "b53fd365671848f09e6a0cd46e17c1bf", + "c17/types/simple.md": "44d56a2998f3bba578f14672c8b0ee3c", "c17/types/enumerated.md": "e1f70a30677c776b7b44ac3e0ff4e76d", - "c17/types/derived.md": "89b86ecc2440bcb1aff13e1504efd1ba", + "c17/types/derived.md": "ac1651775cc1a75247da176627fcf421", "c17/types/basic.md": "5064e21e683c0218890058882e06b6f3", "c17/types/index.md": "14b651bcfc8b2d62ffd200a74a9a2a6b", "_journal/2024-08-25.md": "e73a8edbd027d0f1a39289540eb512f2", "_journal/2024-08/2024-08-24.md": "563fad24740e44734a87d7c3ec46cec4", "algebra/abs-val.md": "a47bc08db62304eb526d15ede3e300cf", - "data-structures/graphs.md": "93233f0fa6980b8b311de1660de3f3e2", + "data-structures/graphs.md": "0f47148557943dbca068c166d3e4169a", "_journal/2024-08-26.md": "5bed1b0ee34e546c31760f5a0aa5ca19", "_journal/2024-08/2024-08-25.md": "a3337b4658677810127350ef3e0ad146", "_journal/2024-08-27.md": "d9ffc6ea2128ab5a86ab5f2619206736", @@ -917,8 +917,19 @@ "_journal/2024-10/2024-10-31.md": "8c5e70f566953974f252da9472e527f0", "_journal/2024-10/2024-10-30.md": "054bdbf52843fa2445f6b9f91d5ca46e", "_journal/2024-10/2024-10-29.md": "432b3b073dafd54421ff6f7182ab9a58", - "c17/alignment.md": "49ef4c266dbd9300211288ffa2152c7e", - "_journal/2024-11-05.md": "6a599e6bc9dcd12a0940956285ae4d00" + "c17/alignment.md": "20c03c33df5feaa16c8cf6e7c67603df", + "_journal/2024-11-05.md": "6a599e6bc9dcd12a0940956285ae4d00", + "_journal/2024-11-06.md": "c91de8a099cfee2514e1054400996e76", + "_journal/2024-11/2024-11-05.md": "79a1304037e18fefa135d576db040784", + "_journal/2024-11/2024-11-04.md": "69ac4ebe34ab5609a444bc9c46b55b84", + "_journal/2024-11-07.md": "01f2dec15cf5d52fa06f0a9b068c5af3", + "_journal/2024-11/2024-11-06.md": "3144245332b35aa397bc066b5bdd5dca", + "_journal/2024-11-09.md": "f34f1347cb2326fce6a505bac76d9358", + "_journal/2024-11/2024-11-08.md": "806bbade5f8339579287687f9433334e", + "_journal/2024-11/2024-11-07.md": "434ec3f15d7065ea740127aa8477dd17", + "x86-64/directives.md": "019c1c1d04efb26c3e8758aac4543cc7", + "geometry/cartesian.md": "199e29cf8debdff01d12528a50f08a92", + "geometry/index.md": "679dcd097f4bebe417828c695444c88c" }, "fields_dict": { "Basic": [ diff --git a/notes/_journal/2024-11-09.md b/notes/_journal/2024-11-09.md new file mode 100644 index 0000000..3f97528 --- /dev/null +++ b/notes/_journal/2024-11-09.md @@ -0,0 +1,13 @@ +--- +title: "2024-11-09" +--- + +- [x] Anki Flashcards +- [x] KoL +- [x] OGS +- [ ] Sheet Music (10 min.) +- [ ] Korean (Read 1 Story) + +* Additional notes on alignment. +* Continued reading "Calculus, Vol. 1" by Apostol. +* Additional nodes on induction principles (weak, strong, well-ordering). \ No newline at end of file diff --git a/notes/_journal/2024-11-05.md b/notes/_journal/2024-11/2024-11-05.md similarity index 53% rename from notes/_journal/2024-11-05.md rename to notes/_journal/2024-11/2024-11-05.md index 68af06f..62cd075 100644 --- a/notes/_journal/2024-11-05.md +++ b/notes/_journal/2024-11/2024-11-05.md @@ -2,8 +2,8 @@ title: "2024-11-05" --- -- [ ] Anki Flashcards -- [ ] KoL +- [x] Anki Flashcards +- [x] KoL - [ ] OGS - [ ] Sheet Music (10 min.) - [ ] Korean (Read 1 Story) \ No newline at end of file diff --git a/notes/_journal/2024-11/2024-11-06.md b/notes/_journal/2024-11/2024-11-06.md new file mode 100644 index 0000000..0acd528 --- /dev/null +++ b/notes/_journal/2024-11/2024-11-06.md @@ -0,0 +1,9 @@ +--- +title: "2024-11-06" +--- + +- [x] Anki Flashcards +- [x] KoL +- [ ] OGS +- [ ] Sheet Music (10 min.) +- [ ] Korean (Read 1 Story) \ No newline at end of file diff --git a/notes/_journal/2024-11/2024-11-07.md b/notes/_journal/2024-11/2024-11-07.md new file mode 100644 index 0000000..9337862 --- /dev/null +++ b/notes/_journal/2024-11/2024-11-07.md @@ -0,0 +1,9 @@ +--- +title: "2024-11-07" +--- + +- [x] Anki Flashcards +- [x] KoL +- [ ] OGS +- [ ] Sheet Music (10 min.) +- [ ] Korean (Read 1 Story) \ No newline at end of file diff --git a/notes/_journal/2024-11/2024-11-08.md b/notes/_journal/2024-11/2024-11-08.md new file mode 100644 index 0000000..b596250 --- /dev/null +++ b/notes/_journal/2024-11/2024-11-08.md @@ -0,0 +1,9 @@ +--- +title: "2024-11-08" +--- + +- [x] Anki Flashcards +- [x] KoL +- [x] OGS +- [ ] Sheet Music (10 min.) +- [ ] Korean (Read 1 Story) \ No newline at end of file diff --git a/notes/algebra/sequences/index.md b/notes/algebra/sequences/index.md index c81783e..654d7bc 100644 --- a/notes/algebra/sequences/index.md +++ b/notes/algebra/sequences/index.md @@ -384,7 +384,7 @@ END%% %%ANKI Basic Why isn't $a_n = 2a_{n-1} + 3a_{n-2}$ a linear homogeneous recurrence relation with constant coefficients? -Back: It is. +Back: N/A. It is. Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). Tags: algebra::polynomial diff --git a/notes/algorithms/order-growth.md b/notes/algorithms/order-growth.md index 47010d1..e84d770 100644 --- a/notes/algorithms/order-growth.md +++ b/notes/algorithms/order-growth.md @@ -1211,7 +1211,7 @@ END%% %%ANKI Basic What is the symmetric property of $\omega$-notation? -Back: N/A +Back: N/A. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% diff --git a/notes/c17/alignment.md b/notes/c17/alignment.md index 7282e85..d9f22f4 100644 --- a/notes/c17/alignment.md +++ b/notes/c17/alignment.md @@ -1,15 +1,29 @@ --- title: Alignment TARGET DECK: Obsidian::STEM -FILE TAGS: c17 x86-64 +FILE TAGS: c17::alignment x86-64 tags: - c17 + - x86-64 --- ## Overview For a large class of modern ISAs, storage for basic C datatypes respect **self-alignmnet**. This means `char`s can start on any byte address, `short`s on any even address, 4-byte `int`s and `float`s must start on an address divisible by 4, and `double`s must start on an address divisible by 8. Likewise pointers are also self-aligned. +Wasted space introduced solely for alignment purposes is referred to as **slop**. + +## Structures + +A `struct`'s **stride address** refers to the first address following the `struct` data that has the same alignment as the `struct`. In general the compiler adds various constraints to how a `struct` is layed out: + +1. The `struct`'s alignment follows that of its widest scalar member. + * This guarantees each member satisfies its own self-alignment requirement. +2. The `struct` introduces trailing padding up to its stride address. + 1. This ensures each element in an array satsifies its self-alignment requirement. + +The `sizeof` operator on a `struct` returns the total space used between its leading address and its stride address. + %%ANKI Basic What does self-alignment refer to? @@ -44,12 +58,20 @@ END%% %%ANKI Basic -What addresses can a `double` be stored at? +What addresses can a `double` be stored at (outside of a `struct`)? Back: Any address divisible by 8. Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). END%% +%%ANKI +Basic +What addresses can a `double` be stored at (inside of a `struct`)? +Back: Depending on compiler, addresses divisible by 4 or 8. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + %%ANKI Basic What addresses can a pointer be stored at? @@ -97,6 +119,356 @@ Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed Nove END%% +%%ANKI +Basic +Assume allocated order matches source order. How are the following variables aligned? +```c +char *p; +char c; +short x; +``` +Back: +```c +char *p; // 8 bytes +char c; // 1 byte +char pad[1]; // 1 byte +short x; // 2 bytes +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +Assume allocated order matches source order. How are the following variables aligned? +```c +long x; +short c; +float f; +``` +Back: +```c +long x; // 8 bytes +short c; // 2 bytes +char pad[2]; // 2 bytes +float f; // 4 bytes +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +Assume allocated order matches source order. What is the value of `N`? +```c +char c; +char pad1[M]; +char *p; +char pad2[N]; +int x; +``` +Back: $0$ +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +Assume allocated order matches source order. What is the value of `M`? +```c +char c; +char pad1[M]; +char *p; +char pad2[N]; +int x; +``` +Back: Between $0$ and $7$ inclusive. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +Consider `short A[N]`. What is the internal padding of this array? +Back: $0$, i.e. `A` has no internal padding. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +Consider `char* A[N]`. What is the internal padding of this array? +Back: $0$, i.e. `A` has no internal padding. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What is the alignment of a `struct` instance? +Back: That of its widest scalar member. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +*Why* is the alignment of a `struct` instance that of its widest scalar member? +Back: It is an easy way to ensure all members are self-aligned. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +*Why* does a `struct` sometimes introduce trailing padding? +Back: To ensure each element of an array of these `struct`s is self-aligned. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Cloze +The address of a `struct` is the same as its {first member}. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +How much leading padding does a `struct` instance have? +Back: $0$ +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +How are members of the following `struct` aligned? +```c +struct foo { + char *p; + char c; + long x; +}; +``` +Back: +```c +struct foo { + char *p; // 8 bytes + char c; // 1 byte + char pad[7]; // 7 bytes + long x; // 8 bytes +}; +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +How are members of the following `struct` aligned? +```c +struct foo { + char c; + char *p; + long x; +}; +``` +Back: +```c +struct foo { + char c; // 1 byte + char pad[7]; // 7 bytes + char *p; // 8 bytes + long x; // 8 bytes +}; +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Cloze +A `struct`'s {stride address} is {the first address following the `struct`'s data with the same alignment as the `struct`}. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What is the result of `sizeof(struct foo)`? +```c +struct foo { + char *p; + char c; +}; +``` +Back: $16$ +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What is the result of `sizeof(struct foo)`? +```c +struct foo { + short s; + char c; +}; +``` +Back: $4$ +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What "hidden" space is returned by `sizeof` on `struct` types? +Back: Slop. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +How are members of the following `struct` aligned? +```c +struct foo { + char c; + struct bar { + char *p; + short x; + } bar; +}; +``` +Back: +```c +struct foo { + char c; // 1 byte + char pad[7]; // 7 bytes + struct bar { + char *p; // 8 bytes + short x; // 2 bytes + char pad2[6]; // 6 bytes + } bar; +}; +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +How are members of the following `struct` aligned? +```c +struct foo { + char c; + struct bar { + short x; + } bar; +}; +``` +Back: +```c +struct foo { + char c; // 1 byte + char pad[1]; // 1 byte + struct bar { + short x; // 2 bytes + } bar; +}; +``` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What is the alignment of a nested `struct`? +Back: That of its widest scalar member. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +The `sizeof` operator on `struct`s returns the space used between what two addresses? +Back: The `struct`'s leading address and stride address. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What is the offset of field `u` in the following? +```c +struct foo { + char u; + int v; +}; +``` +Back: `0` +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +What is the offset of field `v` in the following? +```c +struct foo { + char u; + int v; +}; +``` +Back: `4` +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +## Unions + +The `sizeof` operator on a `union` returns that of its widest member. + +%%ANKI +Basic +The `sizeof` operator on `union`s returns what? +Back: The `sizeof` that of its widest member. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +What is the offset of field `u` in the following? +```c +union foo { + char u; + int v; +}; +``` +Back: `0` +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +What is the offset of field `v` in the following? +```c +union foo { + char u; + int v; +}; +``` +Back: `0` +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + ## Bibliography +* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. * Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). \ No newline at end of file diff --git a/notes/c17/types/derived.md b/notes/c17/types/derived.md index 8529f0c..7dc7c04 100644 --- a/notes/c17/types/derived.md +++ b/notes/c17/types/derived.md @@ -825,7 +825,7 @@ END%% %%ANKI Basic -Suppose a pointer logically evaluates to `true`. Why can't we use it? +Suppose a pointer logically evaluates to `true`. Why might it still be unsafe to use? Back: Logical evaluation can't distinguish valid pointers from indeterminate pointers. Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020). @@ -851,7 +851,7 @@ END%% Basic How is `r->field` equivalently written using `*`? Back: `(*r).field` -Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% @@ -859,7 +859,7 @@ END%% Basic How is `(*r).field` more compactly written? Back: `r->field` -Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% @@ -912,56 +912,56 @@ END%% %%ANKI Basic -Given the following, how can we equivalent write `A[1][2]` using pointer arithmetic? +How do we rewrite the return statement using pointer arithmetic? ```c -int main() { +int func() { int A[3][4]; - return 0; + return A[1][2]; } ``` -Back: `A + 6` +Back: `return *(A + 6);` Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% %%ANKI Basic -Given the following, how can we equivalent write `A[2][0]` using pointer arithmetic? +How do we rewrite the return statement using pointer arithmetic? ```c -int main() { +int func() { int A[3][4]; - return 0; + return A[2][0]; } ``` -Back: `A + 8` +Back: `return *(A + 8);` Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% %%ANKI Basic -Given the following, how can we equivalent write `A[1][2]` using pointer arithmetic? +How do we rewrite the return statement using pointer arithmetic? ```c -int main() { +int func() { int A[4][3]; - return 0; + return A[1][2]; } ``` -Back: `A + 5` +Back: `return *(A + 5);` Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% %%ANKI Basic -Given the following, how can we equivalent write `A[1][0]` using pointer arithmetic? +How do we rewrite the return statement using pointer arithmetic? ```c -int main() { +int func() { int A[4][3]; - return 0; + return A[1][0]; } ``` -Back: `A + 3` +Back: `return *(A + 3);` Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. END%% @@ -970,9 +970,7 @@ END%% Basic How is the `return` statement likely translated to x86-64? ```c -int* example(int *E) { - return E; -} +int* func(int *E) { return E; } ``` Back: ```asm @@ -987,9 +985,7 @@ END%% Basic How is the `return` statement likely translated to x86-64? ```c -int example(int *E) { - return E[0]; -} +int func(int *E) { return E[0]; } ``` Back: ```asm @@ -1004,9 +1000,7 @@ END%% Basic How is the `return` statement likely translated to x86-64? ```c -int example(int *E, int i) { - return E[i]; -} +int func(int *E, int i) { return E[i]; } ``` Back: ```asm @@ -1021,9 +1015,7 @@ END%% Basic How is the `return` statement likely translated to x86-64? ```c -int example(int *E) { - return &E[2]; -} +int* func(int *E) { return &E[2]; } ``` Back: ```asm diff --git a/notes/c17/types/simple.md b/notes/c17/types/simple.md index 54610ad..6a5b4b0 100644 --- a/notes/c17/types/simple.md +++ b/notes/c17/types/simple.md @@ -1360,24 +1360,40 @@ END%% %%ANKI Basic -What type is given to enumeration constants? -Back: `signed int` -Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020). - +What name is given to members of an enumeration? +Back: An enumeration constant. +Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf). + END%% %%ANKI Basic -What kind of integer expressions are `enum` constants limited to? -Back: Integer constant expressions. +What type is given to enumerated-type variables? +Back: N/A. This is compiler dependent. +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What type is *usually* given to enumerated-type variables? +Back: `int` +Reference: Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). + +END%% + +%%ANKI +Basic +What kind of integer expressions are enumeration constants limited to? +Back: Integer constant expressions with value representable as an `int`. Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020). END%% %%ANKI Basic -Besides being an ICE, what other condition is expected on `enum` values? -Back: The ICE evaluates to an integer that fits within a `signed int`. +Besides being an ICE, what other condition is expected on enumeration constants? +Back: The ICE evaluates to an integer that fits within an `int`. Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020). END%% @@ -1402,4 +1418,5 @@ END%% * “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf). * Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020). +* Raymond, Eric. “The Lost Art of Structure Packing.” Accessed November 4, 2024. [http://www.catb.org/esr/structure-packing/](http://www.catb.org/esr/structure-packing/). * Van der Linden, Peter. _Expert C Programming: Deep C Secrets_. Programming Languages / C. Mountain View, Cal.: SunSoft Pr, 1994. diff --git a/notes/calculus/bounds.md b/notes/calculus/bounds.md index 10c0f18..c733223 100644 --- a/notes/calculus/bounds.md +++ b/notes/calculus/bounds.md @@ -29,7 +29,7 @@ END%% %%ANKI Basic Suppose $S \subseteq \mathbb{R}$ is bounded below by $B$. What property does set $S$ exhibit? -Back: $S$ is nonempty.. +Back: $S$ is nonempty. Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). END%% diff --git a/notes/combinatorics/permutations.md b/notes/combinatorics/permutations.md index 952b144..d142a67 100644 --- a/notes/combinatorics/permutations.md +++ b/notes/combinatorics/permutations.md @@ -347,7 +347,7 @@ Basic ``` [ a₁ a₂ ... aⱼ | aₙ ... aᵢ ... aᵢ₊₂ aᵢ₊₁ ] ``` -Back: N/A +Back: N/A. Reference: [https://leetcode.com/problems/next-permutation/description/](https://leetcode.com/problems/next-permutation/description/) END%% diff --git a/notes/data-structures/graphs.md b/notes/data-structures/graphs.md index 2f6d0fe..7846887 100644 --- a/notes/data-structures/graphs.md +++ b/notes/data-structures/graphs.md @@ -30,7 +30,7 @@ END%% %%ANKI Basic What are the two standard ways of representing graphs in memory? -Back: The adjacency-list and adjacency-matrix representation. +Back: The adjacency-list and adjacency-matrix representations. Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% diff --git a/notes/geometry/cartesian.md b/notes/geometry/cartesian.md new file mode 100644 index 0000000..17c832e --- /dev/null +++ b/notes/geometry/cartesian.md @@ -0,0 +1,113 @@ +--- +title: Cartesian Coordinate System +TARGET DECK: Obsidian::STEM +FILE TAGS: geometry::coordinates +tags: + - geometry +--- + +## Overview + +In plane analytic geometry, the **Cartesian coordinate system** uniquely specifies a point by a pair of real numbers called its **coordinates**. These coordinates represent signed distances to the point from two fixed perpendicular oriented lines called the **axes**. The point where the axes meet is called the **origin** and have coordinates $\langle 0, 0 \rangle$. + +%%ANKI +Cloze +The {$x$-coordinate} of a point is sometimes called its {abscissa). +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Cloze +The {$y$-coordinate} of a point is sometimes called its {ordinate). +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Cloze +The {origin} of a Cartesian coordinate system has coordinates $\langle 0, 0 \rangle$. +Reference: “Cartesian Coordinate System,” in _Wikipedia_, October 21, 2024, [https://en.wikipedia.org/w/index.php?title=Cartesian_coordinate_system](https://en.wikipedia.org/w/index.php?title=Cartesian_coordinate_system&oldid=1252434514). + +END%% + +%%ANKI +Basic +Consider point $\langle x, y \rangle$. When does this point lie in the first quadrant? +Back: When $x > 0$ and $y > 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Consider point $\langle x, y \rangle$. When does this point lie in the second quadrant? +Back: When $x < 0$ and $y > 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Consider point $\langle x, y \rangle$. When does this point lie in the fourth quadrant? +Back: When $x > 0$ and $y < 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Consider point $\langle x, y \rangle$. When does this point lie in the third quadrant? +Back: When $x < 0$ and $y < 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +The "vertical line test" of a Cartesian coordinate system is used to determine what? +Back: Whether the tested graph depicts a function or not. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +In Cartesian coordinate systems, why does the vertical line test work? +Back: A function is single-valued. A vertical line that intersects a graph multiple times immediately contradicts this. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +## Cartesian Equations + +An equation that completely characters a figure within the Cartesian coordinate system is called a **Cartesian equation**. + +%%ANKI +Basic +What is a Cartesian equation? +Back: An equation that completely characterizes a figure within the Cartesian coordinate system. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +What is the Cartesian equation of a circle centered around the origin with radius $r$? +Back: $x^2 + y^2 = r^2$ +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +What figure does the following Cartesian equation characterize? $x^2 + y^2 = r^2$ +Back: A circle with radius $r$ centered around the origin. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +## Bibliography + +* “Cartesian Coordinate System,” in _Wikipedia_, October 21, 2024, [https://en.wikipedia.org/w/index.php?title=Cartesian_coordinate_system](https://en.wikipedia.org/w/index.php?title=Cartesian_coordinate_system&oldid=1252434514). +* Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). \ No newline at end of file diff --git a/notes/geometry/index.md b/notes/geometry/index.md new file mode 100644 index 0000000..83e7e7d --- /dev/null +++ b/notes/geometry/index.md @@ -0,0 +1,3 @@ +--- +title: Geometry +--- diff --git a/notes/lambda-calculus/index.md b/notes/lambda-calculus/index.md index 95af745..4e5ee95 100644 --- a/notes/lambda-calculus/index.md +++ b/notes/lambda-calculus/index.md @@ -488,8 +488,8 @@ END%% %%ANKI Basic -What is wrong with asking "what is the scope of $x$ in $\lambda$-term $P$"? -Back: We should be asking about a $\lambda x$. +What is wrong with asking "what is the scope of $x$ in $\lambda x. P$"? +Back: We should be asking what the scope of $\lambda x$ is. Reference: Hindley, J Roger, and Jonathan P Seldin. “Lambda-Calculus and Combinators, an Introduction,” n.d. [https://www.cin.ufpe.br/~djo/files/Lambda-Calculus%20and%20Combinators.pdf](https://www.cin.ufpe.br/~djo/files/Lambda-Calculus%20and%20Combinators.pdf). END%% diff --git a/notes/proofs/index.md b/notes/proofs/index.md index 9f211c8..7ab5711 100644 --- a/notes/proofs/index.md +++ b/notes/proofs/index.md @@ -295,12 +295,16 @@ END%% ## Induction -Let $P(n)$ be a predicate. To prove $P(n)$ is true for all $n \geq n_0$, we prove: +### Weak Induction -* **Base case**: Prove $P(n_0)$ is true. This is usually done directly. -* **Inductive case**: Prove $P(k) \Rightarrow P(k + 1)$ for all $k \geq n_0$. +Let $P(n)$ be a predicate depending on a number $n \in \mathbb{N}$. Assume that -Within the inductive case, $P(k)$ is known as the **inductive hypothesis**. +* **Base case**: $P(n_0)$ is true for some $n_0 \geq 0$, and +* **Inductive case**: for all $k \geq n_0$, $P(k) \Rightarrow P(k + 1)$. + +Then $P(n)$ is true for all $n \geq n_0$. + +Within the inductive case, $P(k)$ is known as the **inductive hypothesis**. The formal justification of proof by induction is intimately tied to the idea of [[natural-numbers#Inductive Sets|inductive sets]]. %%ANKI Cloze @@ -342,7 +346,7 @@ END%% %%ANKI Basic -What proposition is typically proven in the base case of an inductive proof? +What proposition is typically proven in the base case of a weak induction proof? Back: $P(n_0)$ for some $n_0 \geq 0$. Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). @@ -350,7 +354,7 @@ END%% %%ANKI Basic -What proposition is typically proven in the inductive case of an inductive proof? +What proposition is typically proven in the inductive case of a weak induction proof? Back: $P(k) \Rightarrow P(k + 1)$ for all $k \geq n_0$. Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). @@ -396,35 +400,31 @@ END%% ### Strong Induction -Strong induction expands the induction hypothesis. Let $P(n)$ be a predicate. To prove $P(n)$ is true for all $n \geq n_0$, we prove: +Let $P(n)$ be a predicate depending on a number $n \in \mathbb{N}$. Assume that -* **Base case**: Prove $P(n_0)$ is true. This is usually done directly. -* **Inductive case**: Assume $P(k)$ is true for all $n_0 \leq k < n$. Then prove $P(n)$ is true. +* **Base case**: $P(n_0)$ is true for some $n_0 \geq 0$, and +* **Inductive case**: for all $k \geq n_0$, $P(n_0) \land P(n_0 + 1) \land \cdots \land P(k) \Rightarrow P(k + 1)$. + +Then $P(n)$ is true for all $n \geq n_0$. + +The formal justification of proof by induction is intimately tied to the idea of [[natural-numbers#Inductive Sets|inductive sets]] and the [[natural-numbers#Well-Ordering Principle|well-ordering principle]]. %%ANKI Basic Using typical identifiers, what is the inductive hypothesis of $P(n)$ using strong induction? -Back: Assume $P(k)$ for all $k < n$. +Back: Assume $P(k)$ for all $n_0 \leq k < n$. Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). END%% %%ANKI Basic -Why is strong induction considered stronger than weak induction? -Back: It can be used to solve at least the same set of problems weak induction can. +Why makes strong induction "stronger" than weak induction? +Back: It gives more propositions in the antecedent of the inductive case. Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). END%% -%%ANKI -Basic -What negation is introduced to explain why the strong induction assumption is valid? -Back: If $P(n)$ is not true for all $n$, there exists a *first* $n_0$ for which $\neg P(n_0)$. -Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). - -END%% - %%ANKI Basic What distinguishes the base case of weak and strong induction proofs? @@ -433,6 +433,58 @@ Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n END%% +%%ANKI +Basic +How is the following strong induction clause rewritten to use weak induction? $$P(0) \land P(1) \land \cdots \land P(k) \Rightarrow P(k + 1)$$ +Back: As $Q(k) \Rightarrow Q(k + 1)$ where $Q(n) = P(0) \land P(1) \land \cdots \land P(n)$ for all $n \in \omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +How is the following weak induction clause rewritten to use strong induction? $$P(k) \Rightarrow P(k + 1)$$ +Back: As $P(n_0) \land P(n_0 + 1) \land \cdots \land P(k) \Rightarrow P(k + 1)$ for some $0 \leq n_0$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +### Well-Ordering Principle + +This is covered [[natural-numbers#Well-Ordering Principle|here]]. It is equivalent to weak and strong induction. + +%%ANKI +Basic +What are the three most commonly used principles of induction? +Back: Weak induction, strong induction, and well-ordering. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Why are names "weak" and "strong" induction a misnomer? +Back: Weak and strong induction are logically equivalent. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What is PMI an acronym for? +Back: The **p**rinciple of **m**athematical **i**nduction. +Reference: N/A. + +END%% + +%%ANKI +Basic +What is WOP an acronym for? +Back: The **w**ell-**o**rdering **p**rinciple. +Reference: N/A. + +END%% + ## Bibliography * “Constructive Proof,” in _Wikipedia_, April 4, 2024, [https://en.wikipedia.org/w/index.php?title=Constructive_proof](https://en.wikipedia.org/w/index.php?title=Constructive_proof&oldid=1217198357). diff --git a/notes/set/natural-numbers.md b/notes/set/natural-numbers.md index a5656ea..8ec7c6a 100644 --- a/notes/set/natural-numbers.md +++ b/notes/set/natural-numbers.md @@ -1149,6 +1149,14 @@ Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Pre END%% +%%ANKI +Basic +What is the order-preserving property of addition on $\omega$ in FOL? +Back: $\forall m, n, p \in \omega, m \in n \Leftrightarrow m + p \in n + p$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + ### Multiplication For each $m \in \omega$, there exists (by the recursion theorem) a unique function $M_m \colon \omega \rightarrow \omega$ such that for all $n \in \omega$, $$\begin{align*} M_m(0) & = 0, \\ M_m(n^+) & = M_m(n) + m \end{align*}$$ @@ -1227,6 +1235,14 @@ Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Pre END%% +%%ANKI +Basic +What is the order-preserving property of multiplication on $\omega$ in FOL? +Back: $\forall m, n, p \in \omega, m \in n \Leftrightarrow m \cdot p^+ \in n \cdot p^+$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + ### Exponentiation For each $m \in \omega$, there exists (by the recursion theorem) a unique function $E_m \colon \omega \rightarrow \omega$ such that for all $n \in \omega$, $$\begin{align*} E_m(0) & = 1, \\ E_m(n^+) & = E_m(n) \cdot m \end{align*}$$ @@ -1307,7 +1323,11 @@ END%% ## Ordering -For natural numbers $m$ and $n$, define $m$ to be **less than $n$** if and only if $m \in n$. It follows $m \in n \Leftrightarrow m^+ \in n^+$. +For natural numbers $m$ and $n$, define $m$ to be **less than $n$** if and only if $m \in n$. The following biconditionals hold true: + +* $m \in n \Leftrightarrow m^+ \in n^+$ +* $m \in n \Leftrightarrow m \subset n$ +* $m \underline{\in} n \Leftrightarrow m \subseteq n$ %%ANKI Basic @@ -1363,6 +1383,38 @@ Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Pre END%% +%%ANKI +Basic +Let $m, n \in \omega$. What is the strict analog of $m \underline{\in} n \Leftrightarrow m \subseteq n$? +Back: $m \in n \Leftrightarrow m \subset n$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Let $m, n \in \omega$. What is the non-strict analog of $m \in n \Leftrightarrow m \subset n$? +Back: $m \underline{\in} n \Leftrightarrow m \subseteq n$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +In what three ways does Enderton denote strict ordering of the natural numbers? +Back: $\in$, $\subset$, and $<$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +In what three ways does Enderton denote non-strict ordering of the natural numbers? +Back: $\underline{\in}$, $\subseteq$, and $\leq$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + %%ANKI Basic What does the trichotomy law for $\omega$ state? @@ -1371,6 +1423,138 @@ Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Pre END%% +%%ANKI +Basic +Let $m, n \in \omega$. If $m \in n$, why is it that $m \subseteq n$? +Back: Because $n$ is a transitive set. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Let $m, n \in \omega$. If $m \in n$, why is it that $m \subset n$? +Back: Because $n$ is a transitive set and no natural number is a member of itself. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What does Enterton describe is the typical way of using trichotomy in proofs? +Back: Showing that two of the three possibilities is false. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +### Well-Ordering Principle + +Let $A$ be a nonempty subset of $\omega$. Then there is some $m \in A$ such that $m \underline{\in} n$ for all $n \in A$. + +%%ANKI +Basic +What does the well-ordering principle state? +Back: Every nonempty subset of $\omega$ has a least element. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +How is the well-ordering principle stated in FOL? +Back: $\forall A \subseteq \omega, A \neq \varnothing \Rightarrow \exists m \in A, \forall n \in A, m \underline{\in} n$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Let $A$ be a set of $\omega$. What condition is necessary for $A$ to have a least element? +Back: $A \neq \varnothing$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What principle states every nonempty subset of $\omega$ has a least element? +Back: The well-ordering principle. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What principle states every nonempty subset of $\omega$ has a greatest element? +Back: N/A. This is not true. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Suppose $A$ is a subset of $\omega$ without a least element. What can be said about $A$? +Back: $A = \varnothing$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +*Why* is there no function $f \colon \omega \rightarrow \omega$ such that $f(n^+) \in f(n)$ for all $n \in \omega$? +Back: $\mathop{\text{ran}} f$ would violate the well-ordering principle. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +The following is a FOL representation of what principle? +$$\forall A \subseteq \omega, A \neq \varnothing \Rightarrow \exists m \in A, \forall n \in A, m \underline{\in} n$$ +Back: The well-ordering principle for $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +How can we show set $S$ coincides with $\omega$ using the well-ordering principle? +Back: By showing $\omega - S$ has no least element. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +### Strong Induction Principle + +Let $A$ be a subset of $\omega$ and assume that for every $n \in \omega$, $$\text{if every number less than } n \text{ is in } A, \text{then } n \in A.$$ +Then $A = \omega$. + +%%ANKI +Basic +Let $A \subseteq \omega$. The strong induction principle for $\omega$ assumes what about every $n \in \omega$? +Back: If every number less than $n$ is in $A$, then $n \in A$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +The following is a FOL representation of what principle? +$$[\forall A \subseteq \omega, 0 \in A \land (\forall n \in \omega, n^+ \in \omega)] \Rightarrow A = \omega$$ +Back: The weak induction principle for $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +The following is a FOL representation of what principle? +$$[\forall A \subseteq \omega, \forall n \in \omega, (\forall m \in n, m \in A) \Rightarrow n \in A] \Rightarrow A = \omega$$ +Back: The strong induction principle for $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + ## Bibliography * Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). diff --git a/notes/x86-64/directives.md b/notes/x86-64/directives.md new file mode 100644 index 0000000..5901000 --- /dev/null +++ b/notes/x86-64/directives.md @@ -0,0 +1,38 @@ +--- +title: Directives +TARGET DECK: Obsidian::STEM +FILE TAGS: x86-64 +tags: + - x86-64 +--- + +## Directives + +Assembly lines with a leading `.` are called **directives**. They are used to indicate some additional information about the program. + +%%ANKI +Basic +What term describes assembly lines with a leading `.`? +Back: Directives. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +Assembly directives are important for what two programs? +Back: The assembler and the linker. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Cloze +The {`.align N`} directive ensures {data following it starts with an address that is a multiple of `N`}. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +## Bibliography + +* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. \ No newline at end of file diff --git a/notes/x86-64/instructions/index.md b/notes/x86-64/instructions/index.md index d4a8d1a..a68c973 100644 --- a/notes/x86-64/instructions/index.md +++ b/notes/x86-64/instructions/index.md @@ -44,22 +44,6 @@ Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Program END%% -%%ANKI -Basic -What term describes assembly lines with a leading `.`? -Back: Directives. -Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. - -END%% - -%%ANKI -Basic -Assembly directives are important for what two programs? -Back: The assembler and the linker. -Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. - -END%% - ## Instruction Classes There are three types of operands: