Your Course Catalog Generates a Finite-Dimensional Inner Product Space

“Oh no,” said Adam. “We’re taking this too seriously. But surely it’s not non-degenerate?”

We had been discussing courses, and I had mentioned two which in my opinion were “orthogonal” to each other, that is, two courses which didn’t rely on each other’s material at all. Like a true mathematician, he demanded to know which inner product I was using. Defining one proved harder than expected. My goal with this post is to first give our definitions, and then explain how we got there, to demonstrate how much adaptation an idea sometimes has to go through before it’s wrapped up in a neat proof.

A course is a list of topics that you can learn in one semester from \(\approx 1\) professor. Courses can rely on each other: multivariate calculus or real analysis can assume that you’ve taken, and use results and concepts without further explanation from, single-variable calculus. A plan of study is a list of courses to be taken concurrently. We will assume that our universities do not set any limits on the number of courses you can take at once.

The set of plans of study is a vector space over the real numbers. Addition consists of taking two plans concurrently: if \(A\) contains Math 100 and Math 101, and \(B\) contains Math 101 and Math 102, then \(A+B\) contains Math 100, Math 102, and double Math 101. Scalar multiplication is performed by studying less or more than usual for a course: double Math 101 is Math 101, but you spend twice as much time on it as you normally would. Negative courses are courses where you actively put effort into unlearning the material. (This is not as ridiculous as it sounds: in the early years of Bowdoin College, its students had a tradition of cremating and interring their analytic geometry textbooks at the end of the course.) We can read the course catalog as specifying a large number of plans of study, each containing exactly one course, so the catalog generates this vector space. Since your course catalog is (I hope) finite, the vector space is as well.

We can give this vector space an inner product by introducing the idea of regret. Take two plans of study \(A\) and \(B\). For a given stretch of time, be it a week or a moment, I regret taking \(A\) over \(B\) if, in that stretch of time, \(A\) requires me to draw on knowledge from the courses in \(B\) that I wouldn’t otherwise have had. As an example, consider two Harvard math courses. Math 122 is abstract algebra, which stands on its own and includes basic group theory. Math 131 is point-set and algebraic topology, which stands on its own for the first half and then introduces the concept of the fundamental group. While 131 does technically explain the concept of group theory from the ground up, I found that having taken 122 was very helpful in understanding exactly what was going on. Let \(A\) be the plan of study containing only Math 131, and let \(B\) be that containing only Math 122. Then, in the first half of the semester, where 131 is point-set topology, I do not regret taking \(A\) over \(B\), whereas, in the second half, I do.

Now we can define an inner product. We first divide the semester up into blocks of size \(t\). That is, we might consider months, weeks, lectures, or minutes. Let \(s_t\) be the number of blocks of size \(t\) in the semester. We define \(n_t^{p, q}\) to be the number of such blocks in which I regret taking \(p\) over \(q\) or I regret taking \(q\) over \(p\) or both, for \(p, q\) single-course plans of study, and we define \(n_t\) to be the sum over all pairs \(p \in A\) and \(q \in B\). Then we set \[\langle A, B \rangle = \lim\limits_{t \rightarrow 0} \frac{n_t}{s_t}\] which we can immediately verify is symmetric and positive definite.

Proving other properties of an inner product is nontrivial but not difficult. Nondegeneracy is shown by exhibiting, for any course \(p\), a course with which it is not orthogonal: an advanced topics course on the subject of \(p\). Bilinearity comes from the definition of \(n_t\).

An inner product space always has a norm, and it is worth discussing what that norm means. By definition, it’s \(‖A‖ = \sqrt{\langle A, A \rangle}\). The scenario here is that you take \(A\) but don’t actually learn anything in class, and so you regret those moments in which \(A\) builds on an earlier part of itself that you would not have known otherwise. In short, \(‖A‖\) is a measure of how much new information \(A\) contains, or how easy it is to cut class and skate by. A zero is a course which teaches you nothing new.

This concludes the first part of this post: explaining how course catalogs generate inner product spaces. I won’t go on to explain why we did this, as I don’t really know myself, but I will talk a bit about how. The goal was always an inner product space, so we could justify calling courses “orthogonal”, and that was where we started. The first thing we did was to tweak the definition of regret until we got the one you see now, mainly because in our original definition the regret of \(A\) with respect to \(A\) was always zero. This is what you’d expect should be the case intuitively, but it would mean that our inner product wasn’t positive definite. The clunky wording about regretting \(p\) over \(q\) or the other way around or both came about because regret needed to be in some way symmetric. In the end, though, we had what looked like a fine inner product on courses.

That was our big problem: we were still just thinking in terms of courses. We’d decided to think that if you added two courses you’d just get another one, the equivalent of the summands put together. Looking at course catalogs, this didn’t make a lot of sense, so we invented plans of study. This let us put together a very nice vector space, but it meant that we had to go back and change our inner product again to ensure bilinearity. It was around this point that we invented \(n_t^{p, q}\).

Looking back, all these decisions seem like there was no other way to have made them. Personally, I don’t think there was, but we only wound up learning that after starting down any number of wrong tracks, doubling back, and realizing that we had to redo much of our work. From this, and from other experience, I would argue that developing new mathematical objects is a much more general version of the process by which mathematicians develop proofs. In both cases, you have something you want and you’re trying to work the math around so you can get there, but if you’re developing a proof you never invalidate previous results by adding new ones. You can show that you were wrong, but the things you correctly proved stay true even if you decide to take the main proof in a different direction. Building an object, on the other hand, can very well lead into making decisions that actively keep you from getting where you want to go. Failing to include plans of study, for instance, would mean that we would have had to take an absurdely loose definition of “course” to form a vector space. Everything in a good proof relies on something else; everything in a good object is connected to something else, and that’s a whole different thing.

Written on August 24, 2020