## Programming types

Programming, the intense hacker side of it, attracts a certain breed of person. In short, I would put it as that it attracts those who are higher in autism than in g, though of course one needs to be reasonably high in both, especially the verbal side of g, as its activity is largely one of reading (of logs and documentation) and writing (of code (and its supporting documentation), the quality of which has good variable names as a major component). I do feel at times that programmers, even elite ones, are lacking in scientific taste. Many of them are mathematically null. They thrive on and even love the detailed minutiae involved in the work, such as encodings (like UTF, ASCII, that type of thing), the ins and outs of Unix, and arcane facts of various languages. I had to encounter in my work today parsing of CSV files, and it turned out that the CSV reader was not reading under the correct encoding. I ended up diffing my output with the output generated via a means more or less guaranteed to work to aid such’s diagnosis. I’m not bad at this type of thing any longer, having trained myself or more like grown to be able to patiently resolve such problems in a systematic, foolproof fashion.

Does that mean I enjoy this type of thing? No, not at all, though I find it tolerable, more or less. Too autistic for me. It does not have the depth that mathematics has. It has not the beauty of poetry or of music. It has not the wittiness of words or the expressiveness of (human) language. Nor does it have the significance on the world that politics has. There are more meaningful to be doing than programming, though needless to say there is much demand for it as the world now runs on computer programs, which are written mostly by politically incompetent and often socially awkward who answer to morons with MBAs.

I’ve come to notice that programmers tend to be very narrow. They only know programming. There are of course exceptions. Mathematicians and to a greater extent physicists are more broad, and more deep. It makes them very boring to talk with. The people who are more well rounded who are in programming are often, from my observation, in it for the easy money, which is of course paltry relative to what the parasites of our society suck in, but nonetheless a very good sum by the standards of ordinary folk.

There is of course another world of programming, that of the incompetents, who often know only Java and barely know any computer science even. They’re far from the functional programmers who I work with. This industry is so in need of grunt labor that those people manage to find their way into six figure salaries. Yes, this includes places like Google and Facebook. There are Google engineers who don’t know what the difference between stack memory and heap memory is and who think C++ pointers are scary, who make 200k a year or almost. I won’t talk more about them. Waste of breath.

## A result of Cantorian pathologies

We are asked to find a function on $[0,1]$ such that $f(0) = f(1) = 1$ that has positive derivative almost everywhere on that domain. It occurred to me to use the Cantor set, which is obtained by partitioning remaining intervals into thirds and removing the interior of the second one. So first $(1/3, 2/3)$ then $(1/3^2, 2/3^2)$ and $(7/3^2, 8/3^2)$, and so on. Each time we remove two-thirds of the remaining and summing the geometric series yields a measure of $1$ for all that is removed. Another Cantorian construct arrived at from the Cantor set is the Cantor function, or Cantor staircase, called such as it resembles a staircase. That is, it turns out exactly what we need. It is a function with derivative zero almost everywhere, with non zero derivative points as jump points at the Cantor set. It is that discontinuity that facilitates the going from $0$ to $1$ along an interval with zero derivative almost everywhere. A transformation of that with a function with positive derivative is a step to deliver us what we want. That would be $x$ minus the Cantor function. This has derivative $1$ almost everywhere. However, we need to keep its range inside $[0,1]$, which its outputs at $[0,1/2]$ seems to not satisfy entirely. We are done though if we prove the other half to be non-negative, because then we can stretch the other half horizontally by a factor of two. It is needless to say that between $1/2$ and $2/3$ such is the case. Past $2/3$, we have a downshift of $2$ in base three to a $1$ in base two at the first place, meaning a decrease of at least $1/6$ when summing the net change at all digits which decrease in value. Digits increase in value on a change from $2$ to $1$ in every place past the first, or on a $1$ digit in the original in its change to base two, which can occur only once, with all the following of that changed to zero, an increase of $1/2^n - 1/3^n$, where $n$ is the index of the place. In the former case, the largest possible increase is $1/2^2 + 1/2^3 + \cdots = 1/2$ minus $2/3^2 + 2/3^3 + \cdots = 1/3$, which is $1/6$. In the latter case, $1/2^n - 1/3^n$ is exceeded by $1/2^{n-1} - 1/(2 \cdot 3^{n-1})$, the total decrease from digit $2$ to digit $1$ from the $n$th place on. Thus, the minimum total increase from the increases exceeds the maximum total decrease from the decreases, which completes our proof of non-negativity for $x \geq 1/2$.

## Galois group of x^10+x^5+1

This was a problem from an old qualifying exam, that I solved today, with a few pointers. First of all, is it reducible? It actually is. Note that $x^{15} - 1 = (x^5-1)(x^{10}+x^5+1) = (x^3-1)(x^{12} + x^9 + x^6 + x^3 + 1)$. $1 + x + x^2$, as a prime element of $\mathbb{Q}[x]$ that divides not $x^5-1$ must divide the polynomial, the Galois group of which we are looking for. The other factor of it corresponds to the multiplicative group of $\mathbb{F}_{15}$, which has $8$ elements. Seeing that it has $3$ elements of order $2$ and $4$ elements of order $4$ and is abelian, it must be $C_2 \times C_4$. Thus, the answer is $C_2 \times C_2 \times C_4$.

I learned that the adjugate is the transpose of the matrix with the minors with the appropriate sign, that as we all know, alternates along rows and columns, corresponding to each element of the matrix on which the adjugate is taken. The matrix, multiplied with its adjugate, in fact, yields the determinant of that matrix, times the identity of course, to matrix it. Note that the diagonal elements of its result is exactly what one gets from applying the minors algorithm for calculating the determinant along each row. The other terms vanish. There are $n(n-1)$ of them, where $n$ is the number of rows (and columns) of the (square) matrix. They are, for each column of the adjugate and each column of it not equal to the current column, the sum of each entry in the column times the minor (with sign applied) determined by the removal of the other selected column (constant throughout the sum) and the row of the current entry. In the permutation expansion of this summation, each element has a (unique) sister element, with the sisterhood relation symmetric, determined by taking the entry of the adjugate matrix in the same column as the non minor element to which the permutation belongs and retrieving in the permutation expansion of the element times minor for that element the permutation, the product representing which contains the exact same terms of the matrix. Note that shift in position of the swapped element in the minor matrix is one less than that in the adjugate matrix. Thus, the signs of the permutations cancel. From this, we arrive at that the entire sum of entry times corresponding minor across the column is zero.

A corollary of this is that $\mathrm{adj}(\mathbf{AB}) = \mathrm{adj}(\mathbf{B})\mathrm{adj}(\mathbf{A})$.

## More math

Last night, I learned, once more, the definition of absolute continuity. Formally, a function $f : X \to Y$‘s being absolutely continuous is its for any $\epsilon > 0$, having a $\delta > 0$ such that for any finite number of pairs of points $(x_k, y_k)$ with $\sum |x_k - y_k| < \delta$ implies $\sum |f(x_k) - f(y_k)| < \epsilon$. It is stronger than uniform continuity, a special case of it. I saw that it implied almost everywhere differentiability and is intimately related to the Radon-Nikodym derivative. A canonical example of a function not absolute continuous but uniformly continuous, to my learning last night afterwards, is the Cantor function, this wacky function still to be understood by myself.

I have no textbook on this or on anything measure theoretic, and though I could learn it from reading online, I thought I might as well buy a hard copy of Rudin that I can scribble over to assist my learning of this core material, as I do with the math textbooks I own. Then, it occurred to me to consult my math PhD student friend Oleg Olegovich on this, which I did through Skype this morning.

He explained very articulately absolute continuity as a statement on bounded variation. It’s like you take any set of measure less than $\delta$ and the total variation of that function on that set is no more than $\epsilon$. It is a guarantee of a stronger degree of tightness of the function than uniform continuity, which is violated by functions such as $x^2$ on reals, the continuity requirements of which increases indefinitely as one goes to infinity and is thereby not uniformly continuous.

Our conversation then drifted to some lighter topics, lasting in aggregate almost 2 hours. We talked jokingly about IQ and cultures and politics and national and ethnic stereotypes. In the end, he told me that введите общение meant “input message”, in the imperative, and gave me a helping hand with the plural genitive conjugation, specifically for “советские коммунистические песни”. Earlier this week, he asked me how to go about learning Chinese, for which I gave no good answer. I did, on this occasion, tell him that with all the assistance he’s provided me with my Russian learning, I could do reciprocally for Chinese, and then the two of us would become like Москва-Пекин, the lullaby of which I sang to him for laughs.

Back to math, he gave me the problem of proving that for any group $G$, a subgroup $H$ of index $p$, the smallest prime divisor of $|G|$, is normal. The proof is quite tricky. Note that the action of $G$ on $G / H$ induces a map $\rho : G \to S_p$, the kernel of which we call $N$. The image’s order, as a subgroup of $S_p$ must divide $p!$, and as an isomorphism of a quotient group of $G$ must divide $n$. Here is where the smallest prime divisor hypothesis is used. The greatest common divisor of $n$ and $p!$ cannot not $p$ or not $1$. It can’t be $1$ because not everything in $G$ is a self map on $H$. $N \leq H$ as everything in $N$ must take $H$ to itself, which only holds for elements of $H$. By that, $[G:N] \geq [G:H] = p$ which means $N = H$. The desired result thus follows from $NgH = gH$ for all $g \in G$.

Later on, I looked at some random linear algebra problems, such as proving that an invertible matrix $A$ is normal iff $A^*A^{-1}$ is unitary, and that the spectrum of $A^*$ is the complex conjugate of the spectrum of $A$, which can be shown via examination of $A^* - \lambda I$. Following that, I stumbled across some text involving minors of matrices, which reminded me of the definition of determinant, the most formal one of which is $\sum_{\sigma \in S_n}\mathrm{sgn}(\sigma)\prod_{i=1}^{n}a_{i,\sigma_{i}}$. In school though we learn its computation via minors with alternating signs as one goes along. Well, why not relate the two formulas.

In this computation, we are partitioning based on the element that $1$ or any specific element of $[n] = \{1, 2, \ldots, n\}$, with a corresponding row in the matrix, maps to. How is the sign determined for each? Why does it alternate. Well, with the mapping for $1$ already determined in each case, it remains to determine the mapping for the remainder, $2$ through $n$. There are $(n-1)!$ of them, from $\{2, 3, \ldots, n\}$ to $[n] \setminus \sigma_1$. If we were to treat $1$ through $i-1$ as shifted up by one so as to make it a self map on $\{2, 3, \ldots, n\}$ then each entry in the sum of the determinant of the minor would have its sign as the sign of the number of two cycles between consecutive elements (which generate the symmetric group). Following that, we’d need to shift back down $\{2, 3, \ldots, i\}$, the presentation of which, in generator decomposition, would be $(i\ i+1)(i-1\ i) \ldots (1\ 2)$, which has sign equal to the sign of $i$, which is one minus the column we’re at, thereby explaining why we alternate, starting with positive.