§ The arg function, continuity, orientation


Let us think of the function arg:CRarg: \mathbb C \rightarrow \mathbb R as a multi valued function, which maps each complex number to the set of possible valid angles that generate it:
arg(z){tR:zei(π/2)t=z} arg(z) \equiv \{ t \in \mathbb R : |z|e^{i (\pi/2)t} = z \}

We plot the function here:


§ Recovering single valued-ness


Now, the question is, can we somehow automatically recover single valued-ness? kind of, by stipulating that for any given curve c:[0,1]Cc: [0, 1] \rightarrow \mathbb C, the function argc:[0,1]Rarg \circ c: [0, 1] \rightarrow \mathbb R is continuous .
Let's try to investigate what happens if we move from right towards bot, arbitrarily stipulating ("picking a branch") that arg(right) = 0 as a sort of basepoint.


This prompts the natural question:
what happens if we move in the opposite direction?

§ Counter-clockwise movement






§ Multiple winding


the true power of this multi-valued approach comes from being able to handle multiple windings. Here the real meaning of being a multi-valued function shows through. If we decide to go through the the loop twice , as:
bot -> right -> top -> left -> bot -> right -> top -> left
-1  -> 0     -> 1   -> 2    -> 3   -> 4     -> 5   -> 6

That is, we end up with the value 6, which can only b

§ Orientation from continuity


There's something really elegant about being able to recover a notion of "orientation" by simply:
  1. Allowing multi-valued functions.
  2. Forcing continuity constraints.
  3. Interpreting increase/decrease in the value of the function.

§ Discretizing, gaining more insight


I was personally dis-satisfied with the above explanation, because it seemed weird that we would need to depend on the history to define this function. We can formalize this notion of history. Let's first discretize the situation, giving us:







§ Making the theory path-dependent


We originally had:
path: Time -> Spoke
f: Spoke -> 2^Val -- multi-valued

-- | morally, not mathematically.
out: Time -> Val
out t = choose_best_value (f(path[t]))

But there was a vagueness in this choose_best_value. So we redefine it:
path: Time -> Spoke
f': (Time -> Spoke) -> Time -> Val
f'(path, tcur) =
  argmax (\v -> |v - path[tcur-1]| + |v - path[tcur+1|)
         f(path[tcur])

out: Time -> Val
out = f'(path)