Zulip Chat Archive

Stream: maths

Topic: Definition of `affine.simplex`


Yury G. Kudryashov (Aug 22 2020 at 15:26):

@Joseph Myers I need degenerate triangles in a project I'm working on. What do you think about making def simplex P n := fin (n + 1) → P, def simplex.independent (K : Type*) [...] (s : simplex P n) := affine_independent K s?

Yury G. Kudryashov (Aug 22 2020 at 15:34):

This way we can have △ A B C and simplex.map (s : simplex P1 n) (f : affine_map k P1 P2) or even simplex.map (s : simplex P1 n) (f : P1 → P2).

Joseph Myers (Aug 22 2020 at 15:53):

I don't see the advantage over the unbundled map when degenerate triangles are allowed. The point of simplex is for definitions such as circumcenter that need affine independence (so e.g. centroid is defined for an unbundled function, not for a simplex, because it doesn't need affine independence). Normally when a geometry problem refers to a triangle ABC, it definitely means a nondegenerate one (so with current definitions, you can either declare a hypothesis using triangle and then refer to A, B and C using points, or declare A, B and C as points and then assert affine_independent ℝ ![A, B, C]).

map is simply function composition when there is no requirement of affine independence. (With the present definition of simplex it would be meaningful to define map for an injective affine map, though we don't yet have a lemma to say that injective affine maps preserve affine independence.)

Yury G. Kudryashov (Aug 22 2020 at 16:09):

There are quite a few theorems and definitions that don't need vertices to be independent: face, barycentric subdivision, subdivision of a triangle into 4 triangles with vertices A, B, C, and midpoints.

Yury G. Kudryashov (Aug 22 2020 at 16:12):

And in geometry sometimes it makes sense to consider degenerate triangles

Yury G. Kudryashov (Aug 22 2020 at 16:12):

For subdivisions we can prove theorems about unions and intersections of new simplexes

Yury G. Kudryashov (Aug 22 2020 at 16:16):

E.g., sometimes the following argument works: the main goal is to prove that some affine function is zero. We prove that it vanishes at many points, some of them correspond to degenerate configurations

Joseph Myers (Aug 22 2020 at 18:37):

Those all seem like reasonable things to do with an indexed family of points, but we have several different ways to express such an indexed family already when affine independence is not of the essence for what you want to do with the points; simplex is for when it is of the essence and when having affine independence bundled is useful. (Bundled face allows convenient statements of the form "the orthogonal projection of the circumcenter onto a face is the circumcenter of that face". The unbundled version is function composition with mono_of_fin. Or a definition of simplex.medial, that bundles affine independence, would immediately give you t.medial.circumcenter as the nine-point center of a triangle t, without needing to pass affine independence hypotheses around separately.) An indexed family could be a plain function (possibly indexed by a fintype, possibly using a finset of the index type, if finiteness is needed, possibly using fin if it seems useful to bundle the number of points). Or it could be an equiv or embedding if those properties of the function seem important to bundle for particular uses.

I don't know if there might be a use for additional bundled ways of talking about indexed families of points in an affine space (even if it's just another name for the unbundled function to allow some uses of dot notation), but I don't think having more such ways would take away the use of having a type for bundled affinely independent families with a given number of points (i.e. what simplex is at present).


Last updated: Dec 20 2023 at 11:08 UTC