Hello all,
I'm writing to talk about my latest submission to
set.mm, which includes a large number of changes and additions that I've been working on over the past few months. This is also a test of sorts, to see how best to give submission notes in a publicly accessible fashion to interested parties.
There are a few main themes, in topology, real analysis, measure theory and graph theory, which are more or less unrelated to each other and are all packaged together in this update. (Reminder: to see any of these theorems, go to
http://us2.metamath.org:88/mpegif/<xxx>.html where <xxx> is the theorem name - many of the comments assume that you have the theorem in front of you and may not make sense otherwise. If you want the gory details I would recommend looking directly at the diff from my personal
set.mm git repo at
https://github.com/digama0/set.mm/commit/0f51761 .)
==Topology==
There are several new topological structures available, and I also made a concerted effort to fill out the table of properties, i.e. "space X has property Y" if the conditions are relatively simple. Let me know if I missed anything obvious; what I needed most during this work was theorem statements, since the proofs are usually either obvious or can be looked up given the statement.
imasval, etc.: The image structure and quotient structure functions "s and /s are now online, although most of the "structure preservation" theorems are not yet done; imasmnd is available as an example of what such a theorem will look like. Unfortunately this construction comes too late to assist in the real number construction - df-nr is essentially this exact construction. But I guess it's not bad to have at least one "elementary" example before abstracting everything.
isclo: A curious test to show that a set is "clopen" (closed and open). Useful for showing that a connected set has a property everywhere given that it preserves the property locally.
Since they are very commonly used, users should take note that stoig2 and stoig3 were renamed to subspuni and subsptop. (I still don't know what "stoig" stands for, maybe FL does.) On this topic, I'd also like to propose a change in the interface for subSp, from ( subSp ` <. A , J >. ) to ( J |`t A ), for notational agreement with |` and |`s, and also to avoid the verbose df-fv + df-op combination in favor of the "newer" (by which I mean 10 years old) df-ov.
tgsubsp, subspsubbas: A subspace is generated by the restricted elements of a basis or subbase for the original topology. Simplifies the proof of txsubsp.
subspdis: A subspace of a discrete space is discrete.
The metric limit predicate ~~>m was replaced a while ago with ~~>t for topological limits of sequences, but it was still in the metric spaces section; in this update I moved it to the same section as Cn and CnP (so now the section is about "Limits and Continuity" instead of just continuity).
ssidcn: The identity function is continuous from J to K iff K C_ J; this is a characterization of fineness of topologies.
cnss1, cnss2: Making the domain finer or the codomain coarser increases the number of continuous functions.
cndis, cnindis: Every function is continuous if the domain is discrete or the codomain is indiscrete. (FYI, I use the term "codomain" in preference to "range" because for me "range" refers to "ran F", i.e. the largest set on which F is surjective, while "codomain" refers to the B in "F : A --> B", which is to say some interesting superset of the range. In the category of sets it is usually easier to work with the range, but in more general categories, for example topological spaces, the codomain is a more natural notion.)
subsphaus: A subspace of a Hausdorff space is Hausdorff
sshaus: A space finer than a Hausdorff space is Hausdorff
dishaus: A discrete space is Hausdorff
rncmp, imacmp: the image of a compact set is compact
discmp: A discrete space is compact iff it is finite. This shows that compactness can be understood as a topological generalization of finiteness.
fiuncmp: The finite union of compact spaces is compact. We don't have a disjoint union constructor yet, so instead this theorem is stated assuming that all spaces are subspaces of some larger space X. I'm still not sure how to approach disjoint unions in this context, so I will wait until I see it used in a theorem before proceeding.
sscmp: A space coarser than a compact space is compact.
I wasn't very happy with the existing set of connectedness theorems, so I added a bunch of "convenience theorems".
conclo: A nonempty clopen subset of a connected space is the whole space.
conndisj: Two open disjoint subsets of a connected space do not cover the space. (I'm not happy with this formulation, borrowed from dfcon2, because usually the fact that they cover the space is an assumption. Short of assuming everything and deriving a contradiction, perhaps it might be better to prove that one of the sets is empty?)
nconnsub: Same as conndisj with a subspace, only this time we assume everything except connectedness and prove that the subspace is not connected.
concn: A continuous function from a connected set which meets a clopen set of the codomain is contained in the set.
clscon: The closure of a connected set is connected (the closure is performed w.r.t some ambient space).
concompid, etc.: Defines an expression to be called the connected component of X containing x. We can show that this set is a connected subset of X containing x and any other connected neighborhood of x, and it is also closed by clscon. At first I thought I could prove that connected components are also open, but this is not true for, e.g. the rational numbers, whose connected components are singletons (which are not open as QQ is not discrete). They are open if there are only finitely many components in the space, though.
df-1stc, etc.: I didn't write this section, credit goes to Jeff Hankins, but I imported it an expanded it a lot.
1stcfb: A point x in a first countable topology J induces a function f : NN --> J of open neighborhoods which is decreasing (forms an inclusion chain) and constitutes a local base.
2ndcredom: A second-countable space has at most |RR| open sets.
1stcsubsp, 2ndcsubsp: first and second-countability is hereditary (passes to subspaces)
2ndcdisj, 2ndcdisj2: A disjoint collection of open sets in a second-countable topology is countable.
2ndcomap: Open maps (and in particular homeomorphisms) map second-countable topologies to second-countable topologies.
2ndcsep: A second-countable space is separable (uses ax-cc)
dis2ndc: A discrete space is second-countable iff it is countable
df-lly, df-nlly: This is a new topological property constructor, which I am quite fond of due to its easy readability and diverse applications. A topology is "Locally A", where A is a class parameter which is intended to be another topological property like "Comp" or "Con", if every point has an open neighborhood that is "A". Similarly, a topology is "N-Locally A" if every point has a neighborhood that is "A". From this you immediately get the notions locally connected (Locally Con), locally compact (N-Locally Comp), locally Hausdorff (Locally Haus), even locally metrizable (Locally ran MetOpen), although I haven't tried that one yet.
subsplly, subspnlly: If "A" is a hereditary property, then an "A" space is also "Locally A", and "N-Locally A" and "Locally A" coincide.
llysubsp, nllysubsp: "Locally A", "N-Locally A" are hereditary properties.
llyidm, nllyidm: There is a stronger property of topological properties than being hereditary, namely being "local". The "Locally A" predicate allows one to write the property of being local as "Locally A = A"; in this case it is also true that "N-Locally A = A". A property is local if it is true globally iff it is true in a neighborhood around each point. These theorems show that "Locally A" and "N-Locally A" are themselves local properties; the only other nontrivial local property we have is first-countability (lly1stc). Unfortunately we don't have any concise way to write hereditarity, but it is implied by locality.
hausllycmp: A compact Hausdorff space is locally compact. (Note that there are several competing definitions for "locally compact" that coincide on Hausdorff spaces; the one abbreviated here is "N-Locally Comp" which means any point has a local base of compact neighborhoods. The alternative, "every point has a compact neighborhood", has no abbreviation but is written out in full in llycmpkgen2.)
cldllycmp: A closed subset of a locally compact space is locally compact.
dislly: A discrete space is "Locally A" iff singleton spaces are "A".
dis1stc: A neat proof that discrete spaces are first-countable using the idea of local properties. By dislly, ~P X is locally first-countable iff singletons are first-countable, which is true since they are finite and hence second-countable. But since first-countability is local, "locally first-countable" is equivalent to "first-countable" and thus ~P X e. 1stc
1stcelcls: A long time ago I mentioned in the comment that metelcls could be generalized to first-countable spaces; this is that generalization. A point is in the closure of a first-countable space iff there is a sequence converging to it.
hausmapdom, hauspwdom: The property 1stcelcls implies a certain "limitation of size" theorem on Hausdorff spaces. Since points in the closure are determined by functions in the set, this implies that the cardinality of a space is upper-bounded by |A ^ NN|, where A is a dense subset. In particular, a separable first-countable Hausdorff space has at most cardinality continuum.
df-kgen, etc.: A new topological generator, the k-ification operation. Takes as input a topology and outputs a finer topology, such that a set is open in the new topology iff it is open in all compact subspaces under the original topology. Since the operator is idompotent, the set of fixed points of the operation is also its range; these are called compactly generated spaces. (There appears to be some differences in whether or not to require that the subspaces be Hausdorff, and I almost rewrote this entire section at one point under that definition. Anyone have any ideas about the "right" approach here?)
llycmpkgen2, cmpkgen, llycmpkgen: A locally compact (in the weak sense) space is compactly generated. This yields proofs for compact spaces and locally compact spaces as well, since a compact space is locally compact in the weak sense (every point has a compact neighborhood) but not the strong sense (every neighborhood has a compact subneighborhood).
df-xko: Define the compact-open topology on the set of continuous functions, which is generated by the subbase U(K,V) = { f : (f " K) C_ V } for each compact K and open V. (I was conflicted here between exponential and "arrow" notation for the set of continuous functions. The current notation for the compact-open topology of functions from J to K is ( K ^ko J ). This agrees with the mapping notation ( Y ^m X ) of the set of all functions from X to Y, but is reversed from the set of continuous functions ( J Cn K ) or C(J,K) in usual math prose.)
txhaus, tx1stc, tx2ndc, txcon, txscon: The topological product of two spaces is Hausdorff / first-countable / second-countable / connected / simply connected if the factors are.
txkgen: The topological product is compactly generated if one factor is locally compact and the other is compactly generated Hausdorff (or any of a number of more complicated conditions)
xkohaus: The compact-open topology is Hausdorff if the codomain space is.
xkoptsub, xkopt: The compact-open topology is not the only available topology on function spaces; we also have the product topology on equal factors (which topologizes the set of all functions, not just continuous ones). It turns out that the compact open topology is finer than the product topology (which can be thought of as the "finite-open topology" here, so that since there are more compact sets than finite sets the topology has more open sets). In general, the product topology acts like the compact-open topology with discrete domain.
xkoccn: the function x |-> (y |-> x) is continuous
xkopjcn: the function f |-> (f`x) is continuous
xkoco1cn, xkoco2cn: the functions g |-> (g o. F), g |-> (F o. g) are continuous if F is
xkococn: the function f , g |-> (f o. g) is continuous if g : J --> K, f : K --> L and K is exponentiable, where "exponentiable" means basically that it satisfies the conclusion of xkococn. Less trivially, one can show that K is exponentiable iff it is core-compact (this has a complicated definition - look it up if you are curious), and it is sufficient to assume that K is locally compact (in the strong sense) to show that it is exponentiable; this is the assumption I used in xkococn and it propagates to all related "exponential rule" theorems.
xkofvcn: the function f , x |-> (f ` x) is continuous if the domain of f is exponentiable
xkoinjcn: the function x |-> y |-> <. y , x >. is continuous
cnmpt1k, etc.: the continuity theorems induce new cnmpt* theorems which say basically the same thing but are easier to use. I use "k" to abbreviate the "curried" format "x |-> y |->", similar to the current "1" for "x |->" and "2" for "x, y |->".
df-qtop: Another new topological structure, the quotient topology. It works given a topology X and a function F which we usually assume is a function from X onto some Y, and defines a topology on Y as the finest topology making F continuous. The statement "F : J --> K is a quotient map" where J and K are topologies can be stated as "K = ( J qTop F )".
qtopcmplem, qtopcmp, qtopcon, qtopkgen: Since a quotient is the continuous image of a topology, any property which is preserved under continuous image is transferred to a quotient topology, in particular connectedness and compactness. Compactly generated spaces are also preserved under quotients for more complicated reasons.
qtopsubsp: The restriction of a quotient map to a saturated open or closed set is a quotient map.
qtopomap, qtopcmap: Surjective open or closed maps are quotient maps.
txswaphmeo: ( J tX K ) and ( K tX J ) are homeomorphic (useful for swapping the arguments in asymmetric theorems like txtube or txkgen)
xkohmeo: ( L ^ko ( J tX K ) ) and ( ( L ^ko K ) ^ko J ) are homeomorphic, if J and K are exponentiable. (It seems strange to me that both K and J are required to be exponentiable, although it is clearly needed by the current proof, for both directions of continuity.)
0nelfil, etc.: A lot of name changes in the filter and filter limits section were done for standardization reasons.
elflim2: I'm unreasonably happy with myself for discovering that you can do reverse closure of both left and right arguments in this case, because topologies and filters are disjoint from each other (one must contain the empty set and one must not). This allows you to eliminate practically all hypotheses from the theorems using fLim. Similar considerations apply to fClus, in JH's mathbox.
hauspwpwdom: A weaker version of hausmapdom above. Without first-countability, you can still bound the size of a closure, because points in the closure of A are determined by filters in A, which are subsets of the double powerset of A.
met1stc: a metric space is first-countable
met2ndc: a metric space is second-countable iff it is separable (forward implication requires ax-cc)
re2ndc: The real numbers are second-countable (Stefan, I think I sniped this from your to-do list)
zcld, recld: the integers and real numbers are closed sets (could perhaps be used for isumrecl and the like)
df-htpy: Define a homotopy, which is like a path homotopy but with the base topology being generalized to any topology. That is, a homotopy from f : J --> K to g : J --> K is a continuous map h : ( J X. II ) --> K such that h(x,0)=f(x) and h(1,x)=g(x). The extra conditions h(0,y)=f(0) and h(1,y)=f(1) no longer make sense, so they are kept in the definition of path homotopy.
df-om1: Currently just a few teaser definitions, I intend to eventually define the fundamental group as the structure quotient of this loop space, and in the same manner define the n-th homotopy group as the quotient of the n-th iterated loop space.
cnllycmp, rellycmp: The reals and complexes are locally compact.
cnpcon, qtoppcon: Continuous images and quotients of path-connected spaces are path-connected.
cnllyscon: Since the complexes are locally balls and balls are simply connected, the complexes are locally simply connected.
rescon: A subset of the reals is simply connected iff it is connected.
iccllyscon: A closed interval is locally simply connected. (At first I thought that any subset of the reals should be locally connected, but QQ isn't and I think that any such set must actually look locally like an interval or interval endpoint everywhere, so it's not a trivial property.)
cvmliftmo: Separate out the proof of uniqueness of lifts in a covering map. The necessary assumption seems to be that the domain space of the lifted function be connected and n-locally connected, so since [0,1] is both we can eliminate some of the lemmas to cvmlift.
==Measure Theory==
The major achievement in this section is a new choice-free proof that an open set is measurable, although currently it doesn't make it very far before being overcome by ax-cc-dependent theorems, and certainly falls far short of my goal of proving ftc1 and ftc2 without choice. But [Fremlin5] claims that there is quite a lot you can do without choice, and we'll have to see how much further this can go.
df-ovol: I changed the definition here and all dependents to use ( <_ i^i ( RR X. RR ) ) instead of ( < i^i ( RR X. RR ) ). In other words, the open intervals in a covering are now allowed to be empty. Since you can expand all of the intervals slightly to make them strictly positive, it doesn't change the value of the overall infimum, but expanding the intervals is an extra annoying and unnecessary step, so this simplifies the proofs.
ovollb2: In another "expand the intervals a little" argument, you can show that it is sufficient to cover the set with *closed* intervals, which again abstracts this common technique. Using this, you can prove for example ovolctb by covering the countable set by the closed intervals [x, x] = {x}, which each have length zero and so give you the result exactly without any need for fudge factors.
ovolsca: I guess I forgot this the first time around, but the scaling of a set by multiplying everything in the set by a fixed positive number increases the measure of the set by that number. This still leaves open the case of reflecting a set about some number, but that will need a separate proof anyway.
nulmbl2: A nullset is measurable, where "nullset" is meant in a weaker sense as a set which is a subset of sets of arbitrarily small measure. Using ax-cc you can show that such a set is actually a nullset and hence measurable, but without that you can still show measurability. (Actually, now that I think about it, I'm not convinced that there is no proof that such a set is not actually vol*(A)=0 - maybe Fremlin was lying to me.)
uniioombl, uniiccmbl: A rather involved argument, adapted from Fremlin, that the disjoint union of countably many open intervals is measurable. The case of closed intervals is a corollary since the difference is a nullset.
dyadmbl: The set of intervals of the form [m/2^n, (m+1)/2^n] has the property that any two intervals are either in a subset relation or are almost disjoint, and any nonempty set has a maximal element, so given any set A of such intervals, the subset G of maximal elements is countable and disjoint, and has the same union as the union of A; thus uniiccmbl shows that the union of A is measurable.
opnmbl: An open set is the union of all dyadic rational intervals contained in it, because dyadic rational numbers are dense in RR; thus open sets are measurable.
==Real Analysis==
I would say the major achievement here is continuity of log, which was hampering progress for a while. Now that it is complete, several other theorems fall out, in particular differentiability of log, the taylor series for log, and finally the taylor series for arctan and Leibniz' series for pi (which is a metamath 100 theorem).
expmulnbnd, geomulcvg: Convergence of the series k x^k, which is needed for the derivative of a power series.
isercoll, iserodd: A series of the form sum_ n e. NN a_n such that a_n is zero outside the range of an increasing function G:NN-->NN can equivalently be written as sum_ k e. NN a_G(k), in essence skipping the zeroes and reindexing the remaining terms. The most useful application of this is when G(n)=2n+1, in which case it says that sum_ n e. NN a_n = sum_ n e. NN a_(2n+1) if a_2n=0 for each n. This is useful for showing that the power series of arctangent, arctan(x) = sum_ n e. NN0 (-1)^n/(2n+1) x^(2n+1), is actually a power series (can be put in the form a_n x^n). Note that absolute convergence is not necessary, as partial sums are not reordered here; we would need absolute convergence if we allowed G to be a general injective function rather than an increasing function.
iseralt: A surprising omission from the library, the alternating series test. (Thought about generalizing to Dirichlet's test, but it's too complicated to state and I doubt we will need the extra generality.)
tanval2, tanval3: alternative expressions for tangent
sinhval, etc.: I didn't define the sinh (hyperbolic sine) function, as I think that would be unnecessary. Rather, I intend to use the idiom sin(iz)/i to mean sinh(z), and similarly for cosh(z)=cos(iz) and tanh(z)=tan(iz)/i. Independent from the obvious theorems that come from their expressions in terms of trig, the important theorems are x e. RR -> sinh(x),cosh(x),tanh(x) e. RR (resinhcl, recoshcl, retanhcl), the expressions in terms of e^x, like sinh(x)=(e^x+e^-x)/2 (sinhval, coshval), and |tanh(x)|<1 (tanhbnd). It may also be useful to show that e^x=sinh(x)+cosh(x) and e^-x=cosh(x)-sinh(x) at some point.
tanadd: Addition formula for tangent.
dvbsss: Since this theorem is unconditionally true, it allows for an elimination of X C_ RR hypotheses whenever we also assume dom ( S _D F ) = X, which simplified all of the dvmpt* theorems.
dvrec: The derivative of the reciprocal function. From this you can get the quotient rule if you combine it with dvmptmul.
dvcnv: The derivative of an inverse function. This is the "cop-out" version of the theorem, because we assume that f^-1 is already fairly nice - we know that f is bijective onto an open set Y, and the inverse is known to be continuous. In these circumstances, it is not hard to show that (f^-1)'(y) = 1/f'(f^-1(y)). The reason for this theorem is that it doesn't need any strong assumptions on the domain S; the usual statement which avoids things like "f^-1 is continuous" has rather different proofs for S = RR and S = CC.
dvferm1, dvferm2, dvferm: By separating the proof of rolle into "left" and "right" neighborhoods, you can get one-sided results like "if f(u)>=f(x) in some right neighborhood x e. (u, y), then f'(u)<=0". The two-sided version just says that a local maximum has derivative zero, which was already the "hard part" of the proof of rolle.
dvlip, dvlipcn, dvlip2: Adapted from Stefan's c1lip1, we show that a function with derivative bounded by M also has |f(x)-f(y)|<=M|x-y|. The same is true for the complexes, although care is needed to ensure the region is connected (we just assume it's a ball).
dv11cn: Two functions on a ball that have the same derivative and are equal somewhere in the ball are equal everywhere (seems more useful than the "differ by a constant" version).
dvgt0, dvlt0: a function with positive derivative is increasing, and a function with negative derivative is decreasing
dvivth: Darboux' theorem, or the intermediate value theorem for derivatives
dvne0, dvne0f1: Combination of dvgt0, dvlt0 - a function with nonzero derivative is strictly monotone (and hence injective)
dvcnvre: The less "cop-out" version of dvcnv. If f is a differentiable real function whose derivative is never zero, then f is injective (by dvne0f1) and the inverse is continuous on an interval, so by dvcnv (f^-1)'(y) = 1/f'(f^-1(y)).
df-ulm: Uniform convergence of a sequence. This definition is most similar to ~~>, and does not attempt any of the various possibilities for generalization to metric spaces or uniformities or the like. I suppose time will tell if we need the generalization, but for now it is just intended for real and complex analysis. We have F ( ~~>u ` S ) G if F is a sequence of functions F(n) : S --> CC and G : S --> CC and F(n) converges uniformly to G on S.
ulmcau: A sequence converges uniformly (to something) iff it is uniformly Cauchy
ulmbdd: A uniform limit of bounded functions is bounded
ulmcn: A uniform limit of continuous functions is continuous
ulmdv: A limit of differentiable functions whose derivatives converge uniformly to some H is differentiable with derivative H
mtest: Weierstrass M-test: A series of functions bounded uniformly by a convergent series of real numbers converges uniformly.
iblulm, itgulm: The integral of a uniform limit of integrable functions converges to the limit of integrals.
radcnvcl, etc.: Define an expression R which takes as input a coefficient function A(n) and outputs the radius of convergence of sum_ n e. NN0 A(n) x^n. This is a nonnegative extended real, with the property that the series converges absolutely when |x|<R (radcnvlt1) and diverges when |x|>R (or more usefully, if the series converges at x then R<=|x| - radcnvle).
dvradcnv: The formal derivative of the power series is convergent within the radius of convergence
pserulm: The power series converges uniformly on {z:|z|<=M} if M<R
psercn2: The power series is continuous on {z:|z|<=M} if M<R
psercn: The power series is continuous on {z:|z|<R}
pserdv: The power series is differentiable with the termwise derivative on {z:|z|<R}
abelth: Abel's theorem: If the power series is convergent at 1, then it is continuous in a teardrop-shaped subset of the unit disk near 1, or less generally on the interval [0,1], so that the limit of sum_ n e. NN0 A(n) x^n as x->1 from below is sum_ n e. NN0 A(n).
cosne0: There are no zeroes of the cosine function in the region |Re[z]| < pi/2
tanregt0: The tangent function has positive real part in the region 0 < Re[z] < pi/2
logcj: log(z*)=log(z)* if Im[z]=/=0
argregt0: If Re[z]>0 then -pi/2<arg[z]<pi/2
argrege0: If Re[z]>=0 then -pi/2<=arg[z]<=pi/2
argimgt0: If Im[z]>0 then 0<arg[z]<pi
argimlt0: If Im[z]<0 then -pi<arg[z log(-z)=l]<0
logimul: If Re[z]>=0 then log(iz)=log(z)+i pi/2, and in particular arg[iz]=arg[z]+pi/2
logneg2: If Im[z]>0 thenog(z)-i pi, and in particular arg[-z]=arg[z]-pi
tanarg: If Re[z]=/=0 then tan(arg[z])=Im[z]/Re[z]. In combination with logimul, logneg2, you can find the argument of any complex number this way.
dvrelog: The derivative of log |` RR+ (easy consequence of dvcnvre)
relogcn: Continuity of log |` RR+
logcn: Continuity of log on its domain of continuity, namely D = ( CC \ ( -oo , 0 ] ). The proof is direct using the above theorems on arg[z].
dvlog: Differentiability of log on D
logtayl: the series sum_ n e. NN z^n/n converges to -log(1-z)
dvcxp1: the derivative of x^a is a x^(a-1) (for positive real x and complex a)
dvcxp2: the derivative of a^x is log(a)a^x (for complex x and positive real a)
df-asin, df-acos, df-atan: Define the inverse trigonometric functions. Since the other three are easily obtained from these as arccot(z)=arctan(1/z) and so on, I didn't bother to define them. For some time I had considered using "`' sin" in place of arcsin, but there is of course the obvious problem that sin is not injective. We could solve this the same way we solved it for log, but the problem is that the regions of injectivity for the desired branch choices have much more complicated shapes than for log. Instead, I opted to follow Mathematica conventions again and use the definition in terms of log. This has the obvious advantage of making closure proofs easy, but makes theorems like asinsin more complicated.
sinasin, asinsin: The basic "inverse" relations for arcsine, sin(arcsin(z))=z (true generally) and arcsin(sin(z))=z (true when |Re[z]|<pi/2).
cosacos, acoscos: arccos has a fairly trivial definition in terms of arcsin, so most of the theorems are just corollaries of the arcsin theorems.
asinbnd: Together with asinsin this implies that the region D such that arcsin = `' ( sin |` D ) is somewhere between {z:|Re[z]|<pi/2} and {z:|Re[z]|<=pi/2}.
cosasin, cosatan: Theorems like this one, cos(arcsin(z))=sqrt(1-z^2), are not always simple to prove due to the possibility of branch cuts not lining up right. In this case it is more or less by definition, but getting from efiatan to efiatan2 and hence to cosatan requires detailed analysis of the parameters and some strange theorems like atanlogadd and atanlogsub.
atantan: Unlike the tangent, the arctangent is not a simple combination of arcsin and arccos, and all the theorems are separate. Since there are two points which are not in the range of tangent, namely i and -i, we give (CC\{i,-i}) the name "dom arctan" and use that in lieu of the ( A e. CC /\ A =/= 0 ) sort of thing in division theorems. The most interesting theorem here is atantan, showing that arctan(tan(z))=z when |Re[z]|<pi/2.
atans: Like log, arctan has a "domain of continuity"; it is the region of the complex plane with the imaginary axis excluded, except for the open interval from -i to i. It is more naturally written in terms of log as the set {z:1+z^2 e. D} where D is the domain of continuity of log. In particular, it is an open region (atansopn) containing the reals (ressatans), so that the arctan function is differentiable in a neighborhood of RR.
dvatan, atancn: The derivative of arctan, arctan(z)=1/(1+z^2), follows naturally from its definition in terms of log, and continuity is a corollary.
atantayl, atantayl2, atantayl3: The taylor series for log yields a taylor series for arctan. If you just combine series in the obvious way you get sum_n ((-i)^n-i^n) i/2 z^n/n, but the i's cancel in alternate terms and this can be rewritten as sum_n if(2|n, 0, (-1)^((n-1)/2) z^n/n), and using iserodd above we can write it in the conventional form as sum_n (-1)^n z^(2n+1)/(2n+1).
leibpi: Using the Taylor series for arctan together with Abel's theorem abelth, the alternating series sum_n (-1)^n/(2n+1) converges to arctan(1)=pi/4. This is one of the metamath 100 theorems.
rlimcnp: A limit at infinity is equivalent to continuity at 0 from above, by composing with the map x |-> 1/x.
efrlim, dfef2: By using rlimcnp, the limit of the function (1+z/k)^k as k -> +oo is the same as the limit of (1+kz)^(1/k)=exp(log(1+kz)/k) as k -> 0, and the argument to exp there is just the difference quotient for z log'(1)=z, so since exp is continuous we get (1+z/k)^k ~~> exp(z), which is a nice alternate definition of exp (although the equivalence is quite nontrivial!)
==Graph Theory==
df-umgra: One thing that worries me about graph theory more than any other field is the fact that they have no uniform foundation to build on, and we don't have the nice "an X is a Y"-type theorems that the structure builders are giving us in abstract algebra. The goal in this section was to prove the Konigsberg Bridge problem, which involves an undirected, non-simple graph. So I defined <. V , E >. e. UMGrph if E is a function from some set to the collection of 1- and 2-element subsets of V.
Note that if this were a directed graph, it would probably be a function into ordered pairs instead, so G e. DMGrph -> G e. UMGrph would be a non-theorem; if I had a simple graph, E might be a subset of V X. V instead of a function, and then G e. SGrph -> G e. UMGrph would be a non-theorem. I'm still not sure how best to address this problem, but for the moment my thoughts are to just ignore the problem and work with each foundation separately, using isomorphism theorems to translate as necessary. That's part of the reason why I made no attempt to work df-umgra into the extensible structure framework, because there is no obvious uniform way to do it.
eupath: The main theorem of Eulerian paths, which says that the number of vertices of odd degree in an Eulerian graph is either 0 or 2, depending on whether the path returns to the starting point.
konigsberg: The Konigsberg Bridge problem, which says that a certain specific graph has no Eulerian paths. In order to concisely state the vertex and edge information I used a similar approach to the decimal arithmetic theorems, with a small collection of "structural induction" theorems on the edge set, stored as an ordered list. For larger graphs a different storage mechanism may be more appropriate. This is also a metamath 100 theorem.
==Miscellaneous interesting stuff==
dffi3: Extracted from the proof of fictb, this shows that you can iterate binary intersection omega-many times to get all finite intersections.