Mackey functor undergrad research

I recently finished an Undergraduate Research program run by the University of Sheffield mathematics department.

My subject was the highly abstract concept of “Mackey functors”. These are a niche but important part of many advanced mathematical concepts, including stable homotopy theory, and representation theory.

Their invention was motivated by trying to create a formal mathematical object which could find morphisms between different properties between a group and it’s subgroups. For instance, we may want to find a map between the order of a group’s subgroups. We may write a sketch to demonstrate what these mappings between subgroups should look like:

How do we formalise this into a concrete mathematical idea?

Category theory

In order to have any hope in defining such an object, we must explore a bit of category theory. But don’t worry, the initial definition is not actually too hard to understand!

A category \mathcal{C} is comprised of two types of things, a collection of objects (\text{Obj}(\mathcal{C})), and a collection of “morphisms” between these objects (\text{Hom}_{\mathcal{C}}(A, B)).

These are subject to two criteria, or axioms:

  1. For each object in A in \mathcal{C}, there must exist an \textbf{identity} mophism \operatorname{id}_A such that f \circ \operatorname{id}_A = f = \operatorname{id}_A \circ f for all compatible morphisms f.
  2. \textbf{Composition} must be well-defined. That is, where we have morphisms f in \operatorname{Hom}_{\mathcal{C}}(A, B) and g in \operatorname{Hom}_{\mathcal{C}}(B, C), we can find g \circ f in \operatorname{Hom}_{\mathcal{C}}(A, C).

Some examples of categories include:

  • \mathbf{Set} – the category of sets. Contains all sets and all possible set mappings between these sets.
  • \mathbf{Ab} – the category of abelian groups. All abelian groups and all homomorphisms between these abelian groups.
  • \mathbf{Grp} – the category of groups. All groups and all homomorphisms between these groups.
  • \mathbf{Cat} – the category of all small categories. Morphisms are “functors” (maps between categories).
  • \mathbf{Graph} – the category of graphs. All possible graphs and all graph homomorphisms between them.

Definition by a function and axioms

One of the ways to define a Mackey functor is to use a function and then axiomatically enforce the existence of morphisms which go “up” subgroups and morphisms which go “down” subgroups. As the previously presented diagram suggests, we want our object to contain a morphisms to and from each pair of subgroups.

Consider a group G. A G-Mackey functor \underline{M} is a function from the subgroups of G to abelian groups in the \mathbf{category} of abelian groups, \mathbf{Ab}.

    \[\underline{M}: \{\text{subgroups of}~ G\} \to \mathbf{Ab}\]

The category \mathbf{Ab} must contain the following morphisms…

    \[\text{Transfer} \colon ~~~ \text{tr}_{K}^{H} \colon \underline{M}(K) \to \underline{M}(H)\]

    \[\text{Restriction}\colon ~~~ \text{res}_{K}^{H} \colon \underline{M}(H) \to \underline{M}(K)\]

    \[\text{Conjugation}\colon ~~~ \text{c}_{g} \colon \underline{M}(H) \to \underline{M}(^{g}H)\]

for all subgroups K \leq H of G and all elements g \in G. The morphisms are subject to the following axioms:

    \[\begin{enumerate}\item $\text{tr}_{H}^{H}, \text{res}_{H}^{H}, \text{c}_{h} : \underline{M}(H) \to \underline{M}(H)$ are identity morphisms.\bigskip\item $\text{res}_{J}^{K}\text{res}_{K}^{H} = \text{res}_{J}^{H}$\bigskip\item $\text{tr}_{K}^{H}\text{tr}_{J}^{K} = \text{tr}_{J}^{H}$\bigskip\item $\text{c}_{g}\text{c}_{h} = \text{c}_{gh}$ for all $g, h \in G$.\bigskip\item $\text{res}_{^{g}K}^{^{g}H} \text{c}_g = \text{c}_{g} \text{res}_{K}^{H}$\bigskip\item $\text{tr}_{^{g}K}^{^{g}H} \text{c}_g = \text{c}_{g} \text{tr}_{K}^{H}$\bigskip\item $\text{res}_{J}^{H} \text{tr}_{K}^{H} = \sum_{x \in [J\setminus H / K]} \text{tr}_{J \cap ^{x}K}^{J} \text{c}_{x} \text{res}_{J^{x} \cap K}^{K}$ for all subgroups $J, K \le H$.\end{enumerate}\]

Most of these rules are actually quite simple ideas. Most of them mathematicians are very familiar with, such as the idea that conjugation has to play well. For instance, if we reduce from H to K, then reduce again from K to J, we would expect that to be the same thing as reducing from H to J (this is what the second axiom is saying).

The axiom that doesn’t make sense is the notorious double coset formula – the last one. The story of why this axiom is included is quite interesting. It was originally included because it was a property that many examples of Mackey functor-like objects were exhibiting. It was then observed later on in a clever reformulation of the Mackey functor where it’s inclusion becomes undeniable.

Example: the constant Mackey functor

Let’s consider the constant C_4-Mackey functor.

We must define a mapping from each of the subgroups of C_4 to an abelian group. By definition, the constant Mackey functor assigns the same abelian group (we can call it A), to each of the subgroups.

We can then determine the restriction and transfer morphisms.

Restriction

The restriction morphism is \text{res}_{K}^{H} \colon A \to A, so in this case, we simply define it as the inclusion map. As the domain of this function is a subset of the codomain, we can define a map which takes every element in the domain to the same element in the codomain. We can denote this as:

    \[\text{res}_{K}^{H} \colon \underline{M}(H) \xhookrightarrow{} \underline{M}(K)\]

Transfer / Conjugation

The transfer map is a bit more interesting. In the case of the constant Mackey functor, it happens that it is defined as so:

For a transfer \text{tr}_{K}^{H} we define it as multiplying an element a \in A by the index of K in H ([H : K). This is quite similar to what we were doing in the original example I gave of what a Mackey functor does – it’s revealed the change in size as we move up subgroups.

In this case conjugation is also just the identity morphism. All these groups are normal so conjugation does nothing to them.

You maybe wondering how we decided these functions are the transfer and restriction morphism. It all comes down to the axioms. We define this Mackey functor to take all subgroups to the same abelian group (hence “constant”), and then we look at the axioms. The restriction, transfer and conjugation we choose must satisfy the axioms, and the axiom that imposes the most limitation on what these can be is the double coset formula. By taking the double coset formula, we can cleverly choose subgroups so that the formula simplifies down and reveals some information about the morphism we are looking at. It is via this method that the correct function actually pops out.

Taking it further

This definition of a Mackey functor using a functor is nice enough, but you may have noticed that it’s a Mackey functor, not function. Let’s look at what a functor is

Functors

A functor is a mapping between categories. Given two categories \mathcal{C} and \mathcal{D}, a functor creates an association from every object A in \text{Obj}(\mathcal{C}), to a corresponding object F(A) in \text{Obj}(\mathcal{D}), and similarly, for the morphisms f in \text{Hom}(\mathcal{C}), it provides a morphism F(f) in \text{Hom}(\mathcal{D}).

These maps are subject to maintaining proper composition. The functor must map composed morphisms in \mathcal{C} to the composition of the mapping of the individual morphisms, i.e.: F(g \circ f) = F(g) \circ F(f). This can be represented by the following commutative diagram:

A commutative diagram illustrating the concept of functors in category theory, showing the relationships between objects A, B, and C as well as their corresponding mappings through a functor F.

Okay so with functors, we can map from a category to a category. So instead of mapping from the subgroups of G to the category of abelian groups, and then axiomatically enforcing the existence of the morphisms we want, it would be nice to find a special category in which we can make a sensible assignment from each morphism in said category to restriction, transfer and conjugation.

That category turns out to be \text{Span}(\mathbf{SpanGSet}). Using this object, we can create a full definition of a Mackey functor in just a few lines:

A Mackey functor is a functor

    \[\underline{F} \colon \text{Span}(\mathbf{FinGSet}) \to \mathbf{Ab}\]


which preserves products.

Thanks for reading!

IoT Temperature Meter

Parts
Description

In this project, I made an internet connected device which displays the temperature of the room it is situated in, and relays the temperature to the Blynk cloud service to be accessed from another device.

Gallery
Code
/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************

  This example shows how to use ESP8266 Shield (with AT commands)
  to connect your project to Blynk.

  WARNING!
    It's very tricky to get it working. Please read this article:
    http://help.blynk.cc/hardware-and-libraries/arduino/esp8266-with-at-firmware

  Change WiFi ssid, pass, and Blynk auth token to run :)
  Feel free to apply it to any other example. It's simple!
 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


/* Fill-in your Template ID (only if using Blynk.Cloud) */
#define BLYNK_TEMPLATE_ID "******************"
#define BLYNK_DEVICE_NAME "Temperature 1"
char auth[] = "**************************************";


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>


#include <Wire.h> // Enable this line if using Arduino Uno, Mega, etc.
#include <DS18B20.h>

#include "LCD.h" // For LCD
#include "LiquidCrystal_I2C.h" // Added library*

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "*************";  // Put WiFi SSID and Password here
char pass[] = "************";

// Hardware Serial on Mega, Leonardo, Micro...
#define EspSerial Serial1

// or Software Serial on Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);
DS18B20 ds(6);
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the default I2C bus address of the backpack-see article


void setup()
{
  // Debug console
  Serial.begin(9600);

  delay(10);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  lcd.begin (20,4); // 20 x 4 LCD module
  lcd.setCursor(6, 1);
  lcd.setBacklightPin(3,POSITIVE); // BL, BL_POL
  lcd.setBacklight(HIGH);

  Blynk.begin(auth, wifi, ssid, pass);
}

void loop()
{
  Blynk.run();

  float t = ds.getTempC();
  Serial.println(t);

  lcd.clear();
  lcd.setCursor(6, 1);`
  lcd.print(t);
  lcd.print("C");

  
  delay(2000);
  Blynk.virtualWrite(V10, t);
  
}
// Comment me plz