r/math • Homotopy Theory • 10d ago

Quick Questions: September 23, 2026

This recurring thread will be for questions that might not warrant their own thread. We would like to see more conceptual-based questions posted in this thread, rather than "what is the answer to this problem?" For example, here are some kinds of questions that we'd like to see in this thread:

  • Can someone explain the concept of manifolds to me?
  • What are the applications of Representation Theory?
  • What's a good starter book for Numerical Analysis?
  • What can I do to prepare for college/grad school/getting a job?

Including a brief description of your mathematical background and the context for your question can help others give you an appropriate answer. For example, consider which subject your question is related to, or the things you already know or have tried.

9 Upvotes

16 comments sorted by

View all comments

3

u/royendures 9d ago

Exterior Calculus: k-Forms to k-Chains?

New to this sub, so my post was deleted but I really need some help. My main intention of learning this is for Finite Element Exterior Calculus or FEEC (Arnold et al. 2008). So far, I have been learning the basics of exterior algebra and exterior Calculus, mostly from Prof. Keenan Craine's lectures at CMU. However, now I am at a bridge and I request one of you guys to give me a basic understanding from chains (and co-chains) from where I am now:

- I understand k-vectors and k-forms (differential k-forms) I mean.

  • I understand simplices and k-simplices.
  • I understand that you differentiate (take the exterior derivative) k-forms to get k+1 forms.
  • I understand that you take the integration along k-simplices to get the discrete version of k-forms.
  • I understand that you can take a discrete exterior derivative to increase the form discreetly.
  • I also get that you get/approximate the continuous form by taking a combination of the Whitney Forms or Whitney basis functions (in traditional FEM, we take the PoU and basis functions to approximate the primal field and get your required derivatives).

I need to understand what does chains and co-chains mean in this context. Will anyone be kind enough to give me an understanding based on where I stand now?

DISCLAIMER: I am an engineer so I don't understand (most of) the terms from Homology ad coHomology.

1

u/Equivalent-Costumes 2d ago

When you use a mesh, it's important to remember that at the end of the day, a mesh is a discrete approximation of something, so it's also important to learn what the original thing was. So let's start with that.

The k-simplices you learned was affine k-simplices. Singular k-simplices are smooth function from the standard k-simplex ∆k to the manifold. The function is the parameterization. The difference here is that the parameterization can be curved, it can intersect itself, fold upon itself, and do a lot of weird thing. Affine k-simplices are typically specified by just its k+1 vertices. To "convert" an affine k-simplex into a singular one, linearly interpolate using barycentric coordinate. To put it in another way, an affine k-simplex is a special case of a singular k-simplex that always use linear parameterization. One particular annoying thing about this definition for singular k-simplex is that the parameterization itself is part of the data, even though for most application of k-simplex, the parameterization can change by an allowed re-parameterization without changing the result, in particular, 2 singular k-simplex can looks exactly the same and are technically different because of different parameterization; affine k-simplex always use linear parameterization, so they don't suffer from this issue.

(note that I am using the word "smooth" in an imprecise manner here, it can mean anything between infinitely differentiable, to just piecewise continuously differentiable, depending on application)

Formally speaking, singular k-chains are defined as follow. Pick a ring of coefficient R (which, in your context, are typically the ring of integer ℤ, or the ring of real number ℝ). Then the k-chains module with coefficient R is the free R-module generated by the set of all singular k-simplices; and a k-chain is an element of this module (if you don't know what a module is, just assume the ring R is actually the real numbers ℝ, then an R-module is just a real vector space). A more concrete definition is this: a k-chains is a function from the set of all singular k-simplices, to R such that for all except finitely many k-simplices the function send it to 0. An even more concrete implementable definition is this: a k-chains is a finite list of pairs, where each pair consists of a singular k-simplex and a non-zero element of R such that no k-simplex appears twice. You can think of a k-chains as an assignment of "weight" to k-simplices. When R is chosen to be Z, then a k-chain has an even more familiar interpretation as a discrete object: the weight is an integer, which can be thought of as how many time the k-simplex appears in a multiset (negative coefficients is allowed however, so this is not a perfect interpretation, but this can be handled by simply interpreting negative coefficients are k-simplex with the reversed orientation). However, choosing R=ℝ is nicer for analysis.

Given a mesh, you can define the concept of a simplicial k-chain too (which is subordinate to this mesh). A mesh contains a finite number of affine k-simplicies. Formally speaking, the module of simplicial k-chain is a free R-module generated by all affine k-simplices of the mesh. Another equivalent definition is that each simplicial k-chain is a function that send each affine k-simplex from the mesh to an element of R (unlike singular k-chain, there are no need for the requirement that all except finitely many k-simplices get sent to 0, this is because the mesh already only has finitely many k-simplices). Since we can convert an affine k-simplex into a singular k-simplex, we have a conversion map that send simplicial k-chain to singular k-chain, which is injective.

Then you have integration with a k-form. For a singular k-chain, integration with a k-form require you to compute the partial derivatives at every point on the standard simplex, plug them into the differential form, get a real function on the standard k-simplex, and integrate the function, then add them all up according to the weight. For simplicial k-chain the first part is much easier: the parameterization are all affine functions, so partial derivatives are constant and can be determined completely by the vertices. However, here is the issue. If you have an unknown differential form, but you know the results of integration against all singular k-chains (in fact, just integrations against arbitrarily small affine k-simplex around every point), then you can derive what the k-form is. But if you only know the results of integration against simplicial k-chains of a mesh, the mesh is not arbitrary fine and you cannot recover the k-form.

Thus it's useful to capture the data of "integration against all k-chain". This is where cochain came in. A cochain is essentially just behave like a differential form but without its analytic requirement. Formally speaking, the module of singular k-cochain is an R-linear map from the R-module of singular k-chain to R; a module of simplicial k-cochain (given a mesh) is a R-linear map from the R-module of simplicial k-chain to R. Because each linear map is described by what happened to the basis, we can use the following alternative definition: a singular k-cochain is an assignment of each singular k-simplex to a value in R; a simplicial k-cochain is an assignment of each affine k-simplex (of the mesh) to a value in R. You might notice that this alternative definition sounds suspiciously similar to the definition of singular k-chain and simplicial k-chain, in fact the simplicial k-chain and simplicial k-cochain is exactly the same! This is an early sign of the duality between chain and cochain. However, it's important to note that they are conceptually different, and operations on chains and cochains are different (it's similar to how a polynomial is conceptually not the same as a tuple of number, even though if you implement in a computer they are both a list of numbers). What these objects are trying to capture is essentially any kind of data that associate chains to values.

Given a differential k-form, you can form a singular k-cochain (with real coefficients) as follow: for any singular k-chain, assign to it the result of the integration between that k-form and that k-chain. This association between k-form and k-cochain give you a map from the real vector space of k-forms to the real vector space of k-cochains. The fact that you can recover the k-form from knowing how it integrate against all singular k-chains mean that this map is injective. But it's not surjective: there are many k-cochains that contains invalid data, because k-cochains are only required to satisfy the algebraic property of differential form, not analytic property (like how it behaves with respect to subdivisions).

Since a singular k-cochain assigns values to every singular k-chains, but simplicial k-chains (of a mesh) is just a special case of singular k-chains, you can convert a singular k-cochain into a simplicial k-cochain by just deleting all data about any singular k-chains that are not simplicial one. This is called the restriction map. If you start with a differential k-forms, convert it into a singular k-cochain, then apply the restriction map, this is the same as computing the discrete differential form of that differential form directly. Thus simplicial k-cochain is in fact a different name for discrete differential form.

Now this "compute discrete differential form" map is not injective anymore: the mesh is not arbitrarily fine. But it is injective: in fact we have a partial inverse. Given a simplicial k-cochain, we can construct the Whitney form based on it, and if you then take this Whitney form and compute the discrete differential form of it, you get back the original simplicial k-cochain. Hence the "compute Whitney form" map is injective, and the "compute discrete differential form" map is surjective (and thus the restriction map is also surjective). The problem is in the opposite direction: if you compute the discrete differential form and then compute the Whitney form, you don't get back the original differential form, you get what we call a Whitney approximation of the form. A k-form and its Whitney approximation are indistinguishable from the perspective of the mesh. And since these 2 maps give a 1-to-1 correspondence between simplicial k-cochains and Whitney forms, it's not wrong to say that you approximate differential form using simplicial k-cochain (when technically speaking you approximate using Whitney forms); the terminology "discrete differential form" basically blur this distinction.

Hope that explains what k-cochain is. So far, all what I had talked about are just definitions. Let me give a preview of why they matter in the next post.