The Winding Number via de Rham Cohomology

Why dθ is closed but not exact, and what that has to do with winding.

The winding number of a closed curve γ ⁣:S1R2\gamma\colon\mathbb{S}^1\to\mathbb{R}^2 about the origin is an integer w(γ)w(\gamma) assigned to the curve that, well, measures how many times it winds around the origin. This integer can be computed in various ways, but perhaps the most recognizable arises from complex analysis: when γ(t)\gamma(t) is a smooth map into C\mathbb{C} avoiding the origin, then w(γ)=12πiγdzzw(\gamma)=\frac{1}{2\pi i}\oint_\gamma \frac{dz}{z}

At first glance this looks crazy: why should we ever expect this integral to be integer valued? And how in the world is its value sensitive to the number of times the curve wraps around the origin, but not to any other details of the curve itself? Initially this may be chalked up to the ‘magic of complex analysis’, but upon a deeper dive one realizes the magic is actually on loan to C\mathbb{C} from the world of differential forms, who in turn acquired this magic from algebraic topology: specifically, homology and cohomology.

Topology of Maps S1R2{0}\mathbb{S}^1\to\mathbb{R}^2\smallsetminus \{0\}

Topology is the art of blurring out the details of a problem that do not matter, while being careful not to blur so many details that the information you are interested in vanishes alongside them. In our case, we are interested in a map of the circle into the plane that misses the origin, so the set of objects we care about is the funtion space C(S1,R20)C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0) of continuous maps of the circle into the punctured plane.

The details we do not care about are things like speed at which γ\gamma traverses its image, or even the or small continuous deformations of γ\gamma (of course, with it still avoiding the origin). This type of imprecision is exactly captured by the notion of homotopy: two functions f,g ⁣:XYf,g\colon X\to Y are called homotopic if there is a continuous map H ⁣:I×XYH\colon I\times X\to Y where H(0,)=fH(0,-)=f and H(1,)=gH(1,-)=g.

If two curves γ,ηC(S1,R20)\gamma, \eta\in C(\mathbb{S^1},\mathbb{R}^2\smallsetminus 0) are homotopic, then one can continuously wiggle γ\gamma (via a homotopy γt:=H(t,)\gamma_t:=H(t,-)) until it turns into η\eta, all while avoiding the origin. We use this to define an equivalence relation on C(S1,R20)C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0) where γη\gamma\sim\eta if and only if they are homotopic. Blurring our vision to disregard continuous deformation is then rigorously encoded by taking the quotient space of CC with respect to this equivalence relation. We denote this space by [S1,R20]=C(S1,R20)/[\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0]=C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0)/\sim and denote the homotopy class of a map γ\gamma as [γ][S1,R20][\gamma]\in[\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0].

This space represents a precise distillation of the information of a curve γ\gamma in the punctured plane, up to continuous deformations, and so represents the abstract solution to our problem: all possible topological data of a curve γ\gamma is encoded by its image [γ][\gamma] in this space. But how do we work with abstract data like [γ] [\gamma]? This is what algebraic topology is all about.

Homology

Algebraic topology is a collection of techniques for assigning algebraic data (groups, rings, modules, etc) to topological spaces in a coherent and homotopy invariant way. Precisely, algebraic topology provides a collection of functors from the homotopy category to various algebraic categories: things that assign an algebraic gadget g(X)g(X) to each space XX, and an algebraic map g(f) ⁣:g(X)g(Y)g(f)\colon g(X)\to g(Y) to each continuous map f ⁣:XYf\colon X\to Y. With the right tools, one may hope to extract the topological data stored in a homotopy class like [γ][\gamma] and unpack it as a collection of algebraic data, that is much easier to work with. In our case, the algebraic gadget involved is going to be the abelian group Z\mathbb{Z}, and the topological data of a homotopy class [γ][\gamma] will be encoded by an element of Z\mathbb{Z}, that is, a number!

The tool of algebraic topology important to our work here is homology. To fix notation we write Hn(X;R)H_n(X;R) for the nthn^{th} singular homology group of XX with coefficients in the ring RR. When R=ZR=\mathbb{Z} we shorten the notation to Hn(X)H_n(X), and when we wish to speak of the set of homologies for all nn we write H(X)H_\bullet(X). When another homology theory (simplicial, de Rahm, etc) is known to agree with singular homology, we abuse notation and use Hn(X)H_n(X) to represent these as well, making the interpretation of elements clear from the context. Like for the homotopy groups, every continuous function f ⁣:XYf\colon X\to Y induces a map on homology f ⁣:H(X)H(X)f_\star\colon H_\bullet(X)\to H_\bullet(X) Thus, each element fC(X,Y)f\in C(X,Y) is assigned to an element fHom(H(X),H(Y))f_\star\in \mathrm{Hom}(H_\bullet (X), H_\bullet (Y)), defining a map  ⁣:C(X,Y)Hom(H(X),H(Y))\star\colon C(X,Y)\to\mathrm{Hom}(H_\bullet(X),H_\bullet(Y)) Since homology is a homotopy invariant, any two homotopic maps fgf\sim g are assigned to the same group homomorphism f=gf_\star=g_\star. Thus, this assignment \star factors through the quotient by homotopy to a well-defined map

 ⁣:[X,Y]Hom(H(X),H(Y))\overline{\star}\colon [X,Y]\to \mathrm{Hom}(H_\bullet(X),H_\bullet(Y))

Explicitly, this assignment sends a homotopy class [f][f] to a sequence of group homomorphisms

[f]f ⁣:(H0(X)H0(Y) H1(X)H1(Y)  Hn(X)Hn(Y)  )[f]\mapsto f_\star\colon \begin{pmatrix} H_0(X)\to H_0(Y)\\\ H_1(X)\to H_1(Y)\\\ \vdots\\\ H_n(X)\to H_n(Y)\\\ \vdots\\\ \end{pmatrix}

Though, since if X,YX,Y are manifolds of dimension N\leq N then all homologies above NN are trivial, so the induced maps beyond some finite stage are all the zero map from the trivial group to itself. This situation leaves us with the same question to answer: we’ve managed to use homology as a tool to assign a homotopy class [f][f] to a (finite) list of group homomorphisms. How much information have we lost in doing so? Like the homotopy case, this is a difficult question in general, but for the case of winding number the algebraic data gleaned from homology provides a complete homotopy invariant.

The Homology of [S1,R20][\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0]

For convenience, we will work with the reduced homology groups of the spaces in question (as the zeroth homology plays no essential role.) The homological story starts similar to that of homotopy groups: the zeroth homology of S1\mathbb{S}^1 is zero as the circle is connected, the first homology is Z\mathbb{Z} (as its oriented, and 1-dimensional), and its higher homologies are zero as they are larger in dimension than the space itself. And, as R20\mathbb{R}^2\smallsetminus 0 deformation retracts onto the circle, it has the same sequene of homology groups.

Thus given an immersion γ\gamma of the circle into the punctured plane, capturing the homotopy information of [γ][\gamma] amounts to but a single nontrivial homomorphism between first the first homologies:

[γ]γ ⁣:(00 H1(S1)H1(R20) 00  00  )[\gamma]\mapsto \gamma_\star\colon \begin{pmatrix} 0\to 0\\\ H_1(\mathbb{S}^1)\to H_1(\mathbb{R}^2\smallsetminus 0)\\\ 0\to 0\\\ \vdots\\\ 0\to 0\\\ \vdots\\\ \end{pmatrix}

As the only nonzero map, γ\gamma_\star on first homology stores all of the topological data of [γ][\gamma]. Like in the case of homotopy, if we choose identifications of H1(S1)H_1(\mathbb{S}^1) and H1(R20)H_1(\mathbb{R} ^2\smallsetminus 0) with Z\mathbb{Z} (in homology, this is precisely the same as choosing an orientation of each), then ff_\star is an endomorphism of Z\mathbb{Z}, which is naturally identified with an integer. The problem of course is the same - how are we to access this integer associated to the map!
More directly, if we had chosen generators g1,g2g_1,g_2 of H1(S1)H_1(\mathbb{S}^1) and H1(R20)H_1(\mathbb{R}^2\smallsetminus 0), respectively we could compute γ\gamma_\star of the generator of the domain, and decompose this as some integer number of copies of the generator of the target.

γ(g1)H1(R20)=Zg2\gamma_\star(g_1)\in H_1(\mathbb{R}^2\smallsetminus 0)=\mathbb{Z}g_2     γ(g1)=g2+g2+g2=ng2\implies \gamma_\star(g_1)=g_2+g_2+\cdots g_2=ng_2

This sounds good in theory, but the objects involved are still too abstract, and are defined as equivalence classes. We need a tool for converting abstract groups like H1H_1 to concrete things: before the solution was covering spaces, now the solution is cohomology.

Cohomology and Computation

The definition of homology is given by some complex of chains CnCn1\cdots\to C_n\to C_{n-1}\to\cdots with boundary maps \partial, and the computes the homology of this complex H=ker/imH_\bullet = \ker\partial/\mathrm{im}\partial. Cohomology is a dualization of this at the level of chains: that is, we build the the dual chain complex Hom(Cn,R)Hom(Cn1,R)\cdots \leftarrow \mathrm{Hom}(C_n,R)\leftarrow \mathrm{Hom}(C_{n-1},R)\leftarrow\cdots with the dual boundary maps δ\delta defined so that if f ⁣:Cn1Rf\colon C_{n-1}\to R then δf ⁣:CnR\delta f\colon C_n\to R is the map δf(c):=f(c)\delta f(c):=f(\partial c). The homology of this co-chain complex is the cohomology of the underlying space H=kerδ/imδH^\bullet = \ker\delta/\mathrm {im}\delta. Phew!

What does this all mean for us in practice? Well, we are interested in computing the invariant stored by γ\gamma_\star as a map between two first homologies. The elements of these homology groups are (equivalence classes of) chains, and an element of cohomology is an equivalence class of functions on chains.
Thus, an element αHn\alpha\in H^n of cohomolgy determines a map α ⁣:HnR\alpha\colon H_n\to R as follows: if η\eta is a homology class, choose a representation η=[c]\eta=[c] for some chain cCnc\in C_n, and also choose a representation α=[ϕ]\alpha = [\phi] of the cohomology class by some function ϕ ⁣:CnR\phi\colon C_n\to R. Then we define α(η)=[ϕ]([c])=ϕ(c)\alpha(\eta)=[\phi]\left([c]\right)=\phi(c) This requires some well-definedness checks (choosing different representatives does not affect the final value, etc) but the important part for our overall story is we are able to take some abstract thing (a homology class) and compute a very concrete thing (an element of the ring RR) using a cohomology class.

While we will need the flexibility of general coefficients shortly, let’s discuss the situation over Z\mathbb{Z}. Since H1(R20)ZH_1(\mathbb{R}^2\smallsetminus 0)\cong \mathbb{Z} is one-dimensional, if we could find a cohomology class αH1(R20)\alpha\in H^1(\mathbb{R}^2\smallsetminus 0) which sets up an isomorphism α ⁣:H1(R20)Z\alpha\colon H_1(\mathbb{R}^2\smallsetminus 0)\to\mathbb{Z} (that is, α\alpha sends a generator of H1(R20)H_1(\mathbb{R}^2\smallsetminus 0) to 11) Then we could directly implement the program sketched above, and remove the difficult-to-deal-with equivalence classes from the story at the same time! More precisely, we would know by our abstract reasoning that if we choose a fundamental class η\eta for H1(S1)H_1(\mathbb{S} ^1), apply γ\gamma_\star, and then apply the isomorphism given by the cohomology class α\alpha, we get the topological invariant

α(γ(η))=α(ng2)=nα(g2)=n\alpha(\gamma_\star(\eta))=\alpha(n g_2)=n\alpha(g_2)=n

But, by the definition of the action of α\alpha on homology, we can pick an explicit representative ϕ\phi with α=[ϕ]\alpha =[\phi] and an explicit chain CC representing the fundamental class [C]=η[C]=\eta, where we can then compute αγ\alpha\gamma_\star as

ϕ(γ(C))=[ϕ](γ([C]))=α(γ(η))=n\phi(\gamma(C))=[\phi]\left(\gamma_\star([C])\right)=\alpha(\gamma_\star(\eta))=n

This final equation is defined in terms of three concrete things: an actual choice of chain representing a fundamental class, the actual map γ\gamma, and an actual linear map ϕ\phi on chains: no more equivalence classes in sight! So, if we know how to compute with ϕ\phi, we can directly access our hidden integer invariant.

Clearly, we will have little to no hope doing this explicitly in singular homology, as the cochain complex is full of very-difficult-to-describe things. But when things are smooth we can switch to a much easier-to understand theory of cohomology, de Rham cohomology

De Rham Cohomology

The de Rham complex is populated by differential forms of each degree on the base smooth manifold MM, and the co-boundary map is the exterior derivative:

Ωn+1(M)Ωn(M)\cdots\leftarrow \Omega^{n+1}(M)\leftarrow\Omega^{n}(M)\leftarrow\cdots

Differential forms are smooth, real valued multilinear functions on the tangent space, and so to work with them we necessarily have to take coefficients in R\mathbb{R} (which will not be an issue, since ZR\mathbb{Z}\subset \mathbb{R} we will be able to recover our integer invariant by restriction at the end of the day). A differential form ω\omega is called closed if dω=0d\omega=0, and exact if ω=dθ\omega=d\theta for some othe form θ\theta. Thus, the homology of the de Rham complex records the closed forms modulo the addition of exact forms. This is a very different cohomology theory than the one’s we are used to involving simplices, but like many algebraic topological invariants, it turns out to be just another way of accessing the same abstract data:

de Rham’s Theorem The homology of the de Rham complex of a smooth manifold agrees with the homology of the singular cochain complex.

Thus, we can use differential forms to compute the homological invariant following the outline above, with one big if: how do we know there actually are any nonzero cohomology classes to use to set up an isomorphism? This is just a computation: H1(R20;R)H1(S1;R)H^1(\mathbb{R}^2\smallsetminus 0;\mathbb{R})\cong H^1(\mathbb{S}^1;\mathbb{R}) as the two spaces are homotopy equivalent, and H1(S1;R)H0(S1;R)H^1(\mathbb{S}^1;\mathbb{R})\cong H_0(\mathbb{S}^1;\mathbb{R}) by Poincare duality: finally H0(S1;R)RH_0(\mathbb{S}^1;\mathbb{R})\cong\mathbb{R} because it is connected: thus, there is a 1-dimensional space of closed 1-forms on R20\mathbb{R}^2\smallsetminus 0 after modding out by exact ones.

Indeed, to construct such a form, we can take inspiration from the deformation retraction R20S1\mathbb{R}^2\smallsetminus 0\to \mathbb{S}^1 realizing the homotopy equivalence between these two spaces. The circle has a 1-dimensional space of closed-mod-exact 1-forms (these are top- dimensional forms for the circle, so they are possible volume forms). A cannonical choice is dθd\theta, which can be explicitly defined as the form whose pullback under the universal covering RS1\mathbb{R}\to\mathbb{S}^1 is the differential of the identity function id ⁣:RR\mathrm{id}\colon \mathbb{R}\to\mathbb{R} sending θR\theta\in\mathbb{R} to θ\theta.

It’s easy to verify that in the (x,y)(x,y) coordinates of the plane, this form dθd\theta is the restriction of dθ=xdyydxd\theta = xdy - ydx to the unit circle via a quick computation: under the trigonometric parameterization T ⁣:θ(cosθ,sinθ)=(x,y)T\colon\theta\mapsto (\cos\theta,\sin\theta)=(x,y), this pulls back to T(xdyydx)=(cosθ)d(sinθ)(sinθ)d(cosθ)T^\star(xdy-ydx)=(\cos\theta)d(\sin\theta)-(\sin\theta)d(\cos\theta) =cosθcosθdθsinθ(sinθ)dθ=\cos\theta\cos\theta d\theta -\sin\theta (-\sin\theta)d\theta =(cos2θ+sin2θ)dθ=dθ=(\cos^2\theta+\sin^2\theta)d\theta=d\theta

Now, we need to transport this form, which generates H1(S1)H^1(\mathbb{S}^1) to a form which generates H1(R20)H^1(\mathbb{R}^2\smallsetminus 0). The isomorphism between these spaces is induced by the homotopy equivalence arising from the deformation retract π ⁣:R20S1(x,y)(x,y)x2+y2.\pi\colon\mathbb{R}^2\smallsetminus 0\to \mathbb{S}^1\hspace{1cm} (x,y)\mapsto \frac{(x,y)}{\sqrt{x^2+y^2}}. Thus, a generator of H1(R20)H^1(\mathbb{R}^2\smallsetminus 0) is given by π(xdyydx)\pi^\star(xdy-ydx) (this computation is much easier in polar coordinates, but to avoid any potential confusion involving coordinates being a covering space; I’ll do it with (x,y)(x,y) here). π(dθ)=π(xdyydx)=\pi^\star(d\theta)=\pi^\star(xdy-ydx)= (xx2+y2)d(yx2+y2)(yx2+y2)d(xx2+y2)\left(\frac{x}{\sqrt{x^2+y^2}}\right)d\left(\frac{y}{\sqrt{x^2+y^2}}\right)-\left(\frac{y}{\sqrt{x^2+y^2}}\right)d\left(\frac{x}{\sqrt{x^2+y^2}}\right) Where d(y/x2+y2)d(y/\sqrt{x^2+y^2}) is computed with the quotient rule: d(yx2+y2)=x2+y2dyyd(x2+y2)x2+y2d\left(\frac{y}{\sqrt{x^2+y^2}}\right)=\frac{\sqrt{x^2+y^2}dy-yd(\sqrt{x^2+y^2})}{x^2+y^2} =x2+y2dyyxdx+ydyx2+y2x2+y2=xxdyydx(x2+y2)3/2=\frac{\sqrt{x^2+y^2}dy-y\frac{xdx+ydy}{\sqrt{x^2+y^2}}}{x^2+y^2}=x\frac{xdy-ydx}{(x^2+y^2)^{3/2}} Running the analogous computation of d(x/x2+y2)d(x/\sqrt{x^2+y^2}) and substituting in, we get

π(dθ)=(xx2+y2)(xxdyydx(x2+y2)3/2)(yx2+y2)(yydxxdy(x2+y2)3/2)\pi^\star(d\theta)= \left(\frac{x}{\sqrt{x^2+y^2}}\right)\left(x\frac{xdy-ydx}{(x^2+y^2)^{3/2}}\right)-\left(\frac{y}{\sqrt{x^2+y^2}}\right)\left(y\frac{ydx-xdy}{(x^2+y^2)^{3/2}}\right)

=x2(x2+y2)2(xdyydx)+y2(x2+y2)2(xdyydx)=\frac{x^2}{(x^2+y^2)^2}(xdy-ydx)+\frac{y^2}{(x^2+y^2)^2}(xdy-ydx) =xdyydxx2+y2=\frac{xdy-ydx}{x^2+y^2}

Thus, this form is closed but not exact on R20\mathbb{R}^2\smallsetminus 0 (whcih we can also verify directly: we may compute its exterior derivative to see we get zero, but then compute its integral over the circle and see we get 2π2\pi, which is not zero, even though the circle has no boundary. Thus, it cannot be the derivative of a function by stokes theorem.) Treating this form as a representative of a cohomology class, this realizes an isomorphism from H1(R20;R)H_1(\mathbb{R}^2\smallsetminus 0;\mathbb{R}) to R\mathbb{R}. However, as at the end of the day we would like to recover a fact about homology with integer coefficients, so we need to do some normalization. We would like to make it so that the cannonical generator of H1(R20)H_1(\mathbb{R}^2\smallsetminus 0), that is, the unit circle, is sent to 11. But right now, this is sent to S1xdyydxx2+y2=S1xdyydx=S1dθ=vol(S1)=2π\int_{\mathbb{S}^1}\frac{xdy-ydx}{x^2+y^2}=\int_{\mathbb{S}^1}{xdy-ydx}=\int_{\mathbb{S}^1}d\theta =\mathrm{vol}(\mathbb{S}^1)=2\pi All we need to do is divide by this number, producing a new 1-form (still closed but not exact) which will set up an isomorphism between homology with coefficients over R\mathbb{R}, that restricts to an isomorphism over Z\mathbb{Z}. To get some notation into this coordinate-heavy game, call this thing ϕ=12πxdyydxx2+y2\phi=\frac{1}{2\pi}\frac{xdy-ydx}{x^2+y^2}

Thus, finally our means of computing the integer stored by γ\gamma_\star explicity is made available to us! Given a map γ ⁣:S1R20\gamma\colon\mathbb{S}^1\to \mathbb{R}^2\smallsetminus 0 We take S1\mathbb{S}^1 itself (with our choice of orientation) as a boundaryless chain representing the fundamental class in H1(S1)H_1(\mathbb{S}^1) and compute the winding number of γ\gamma via ϕ(γ(S1))=γ(S1)ϕ=n=w(γ)\phi(\gamma(\mathbb{S}^1))=\int_{\gamma(\mathbb{S}^1)}\phi=n=w(\gamma)

The last step to make contact with the formula given in the introduction is to relate ϕ\phi to the form 12πidzz\frac{1}{2\pi i}\frac{dz}{z}. A confusing thing when first dealing with homology and cohomology: these two things are not equal or even scalar multiples of one another, but simply cohomologous: they are two representatives of the same cohomology class, and so give the same value when integrated against any chain representing a homology class.

To see this, we begin by writing out dzz\frac{dz}{z}: dzz=d(x+iy)x+iy=(xiy)d(x+iy)x2+y2\frac{dz}{z}=\frac{d(x+iy)}{x+iy}=\frac{(x-iy)d(x+iy)}{x^2+y^2} =(xiy)(dx+idy)x2+y2=xdx+ydyx2+y2+ixdyydxx2+y2=\frac{(x-iy)(dx+idy)}{x^2+y^2}=\frac{xdx+ydy}{x^2+y^2}+i\frac{xdy-ydx}{x^2+y^2} Thus, dividng by 2πi2\pi i, 12πidzz=12πixdx+ydyx2+y2+12πxdyydxx2+y2\frac{1}{2\pi i}\frac{dz}{z}=\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2}+\frac{1}{2\pi}\frac{xdy-ydx}{x^2+y^2} =12πixdx+ydyx2+y2+ϕ=\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2}+\phi

This form is in the same cohomology class as ϕ\phi since the additional term, 12πixdx+ydyx2+y2\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2} is exact! To show this explicitly we just need to construct a real valued function on the punctured plane for which this is the derivative: but this is straightforward using the chain rule. xdx+ydyx2+y2=12d(x2+y2)x2+y2=12dln(x2+y2)\frac{xdx+ydy}{x^2+y^2}=\frac{1}{2}\frac{d(x^2+y^2)}{x^2+y^2}=\frac{1}{2}d\ln(x^2+y^2)

Thus we see that

12πidzz=14πidln(x2+y2)+ϕ\frac{1}{2\pi i}\frac{dz}{z}=\frac{1}{4\pi i}d\ln(x^2+y^2)+\phi

and so, integrating over the boundaryless immersed manifold γ(S1)\gamma(\mathbb{S}^1) yields

γ(S1)12πidzz=γ(S1)14πidln(x2+y2)+ϕ\int_{\gamma(\mathbb{S}^1)}\frac{1}{2\pi i}\frac{dz}{z}=\int_{\gamma(\mathbb{S}^1)}\frac{1}{4\pi i}d\ln(x^2+y^2)+\phi =14πiγ(S1)dln(x2+y2)+γ(S1)ϕ=\frac{1}{4\pi i}\int_{\gamma(\mathbb{S}^1)}d\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi =14πiγ(S1)ln(x2+y2)+γ(S1)ϕ=\frac{1}{4\pi i}\int_{\partial \gamma(\mathbb{S}^1)}\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi =14πiln(x2+y2)+γ(S1)ϕ=\frac{1}{4\pi i}\int_{\varnothing}\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi =0+γ(S1)ϕ=0+\int_{\gamma(\mathbb{S}^1)}\phi =γ(S1)ϕ=\int_{\gamma(\mathbb{S}^1)}\phi =w(γ)=w(\gamma)

← All posts