Tuesday, March 29, 2016

Hello Haskell

I'm proud of my hello world because it demonstrates my understanding of lazy evaluation. Lazy evaluation appeals to me because it reminds me of cause and effect in its relative and quantum laziness. This, my first Haskell program, is the middle step of a program to produce code that implements conversions implicit in the name of the converter.



Saturday, February 20, 2016

No Mention of Dimension

Recently I have started using Haskell instead of those other languages. As a result I have gotten closer to generating all spaces and polytopes of a given complexity. An observation results from this progress. None of my representations or functions, from sidedness to cospace, depend on dimension. Haskell being strongly typed means the fact that my code compiles is nontrivial. I still need to remove any runtime bugs that crop up, but I'm confident I'll be able to generate all simplex overlaps with merely implicit dimension. The way to imply a dimension is to make a simplex by remove one region from a space with no missing regions. Then the number of dimensions is one less than the number of boundaries in the simplex space. To create more complex spaces, find the cospace which I can do without mention of the implicit dimension. With the cospace, you can extend the simplex with a sections space determined by any region in the cospace. In previous posts, I constructed the cospace by interpreting points as planes, after converting to vectors. That required choosing a partial ordering of the regions. Constructing a cospace without vectors does not require choosing a partial ordering. Because only outside regions have regions opposite all boundaries, inside regions can be specified by boundary sets. Thus, a space can be represented by a set of boundary sets. A similar representation of regions as boundary sets is also a good way to test equivalence between spaces. With that representation, only permutations of boundaries must be tried; permutations of regions are abstracted away. Trying permutations of boundaries does not suffice to find polytope equivalence. This is because a polytope is specified by a set of spaces constructed from the significant boundaries of significant vertices in the polytope, and vertex spaces have only outside regions.

Tuesday, January 26, 2016

Dooy Binary System

The Dewey Decimal System is inadequate for online content. More than one dimension is required. But who chooses the dimensions? Rather, let people partially specify boundaries and points, and let there be as many dimensions as necessary to keep the space linear. By partially specify I mean they would create new boundaries by supplying two disjoint sets of points. Also, they could refine a boundary's position by adding points to the boundary's sets. The given points could be new or extant. Only adding a point to both sets of a boundary would be prohibited. An open question is whether books (pages? words?) should be points, boundaries, or regions. My intuition is that one to one between point and book would be best. Then books (pages? words?) in the same region would be similar.

Tuesday, November 24, 2015

Redefined Again

In previous posts I have attempted to define polytope but succeeded only in defining interesting things such as migration, convex cover, disjoint cover, round space, cospace, significant vertex. In this post I shall try again. With regard to a significant vertex V of a set of regions R, a boundary B is significant iff two regions R0 and R1 in the pencil of V are neighbors wrt B, R0 is in R, and R1 is not in R. Wrt significant vertex V of a set of regions R, a region is significant iff it is in the intersection of R and the pencil of V. Define polytope as a collection of round spaces with region sets, such that the centers of the round spaces are the significant vertices, the boundaries of the round spaces are the significant boundaries wrt center, and the region sets are the significant regions wrt center. The fact that the round spaces share boundaries captures the facet graph and coincidences of the polytope. The sidedness of the region sets in the round spaces captures the convexities around the vertices. I believe this definition is adequate to determine whether two sets of regions from the same or different spaces are embeddings of the same polytope. However, I can think of plenty of round space collections that do not embed in any flat spaces.

Sunday, November 8, 2015

Domes

My understanding is that designing geodesic domes is nontrivial because there are so many choices. Here I present a way to find every dome up to complexity. Consider all sections of all spaces up to complexity. The cospace of the vertices on one of those sections has all planes through a point. Designate that point the center of a dome. The surface of the dome is the round space as defined in the "Coincidence" post. Note that not every region of the round space need be a facet of the dome. Some dome facets can be super-regions in the round space.

Friday, October 30, 2015

Vertex Cospace Polytope

In n dimensions, each set of n boundaries is a vertex. As in the algorithm to construct an affine plane through regions, we can interpret vertices as planes to obtain a space called a cospace. Cospaces are not strictly linear. Some nonempty regions can be degenerate in the sense that more than n planes can pass through the same point in n dimensions. For example, if we construct a cospace from the vertices that lie on a particular boundary, all planes in the cospace pass through the same point. I propose that any polytope, no matter the nature of its facets, convexities, or colinearities, can be identified by the cospace of the polytope's significant vertices. A vertex is significant if some polyant of each proper superpencil is improper wrt the regions in the polytope. A superpencil is a pencil of a subset of the boundaries of a pencil. A pencil of a set of boundaries is the set of regions with neighbors wrt the boundaries. A region is a neighbor wrt boundaries if it's sidednesses are the same, except opposite for the boundaries. A polyant is the regions on the same side of a set of boundaries. A polyant of a pencil is the intersection between pencil and polyant. 

Monday, June 29, 2015

Connectedness

In an undirected graph, how can I efficiently keep track of how many connected parts it has. I'd like to list the nodes such that all nodes of a connected part are together. In other words, if the graph has more than one connected part, I can divide the list between two consecutive nodes, such that no connected part of the graph has nodes in both lists. Consider a list of the nodes, and connect the entries of the list by edges from the graph. Some edges connect consecutive nodes, and some edges hop over nodes in the list. If, as edges from the graph are added to the list, the list is reordered such that the number of hops is minimized, then after all edges have been added, connected parts of the graph will be together in the list. Suppose nodes of a graph are listed in some order, and the graph has two connected parts. Consider a sublist of just the nodes from one connected part in the same order as the entire list. Count the hops in the sublist. Similarly count the hops in the sublist of the nodes in the other connected part. If the sublists are dividable in the entire list, one entirely before the other, then the number of hops in the entire list is just the sum of the hops in the sublists. If the sublists are not dividable, then the number of hops is greater than the sum. Therefore, if the number of hops in the list is minimum, connected parts of the graph are dividable between two consecutive nodes in the list. Suppose I add edges to a list one at a time. I claim I can reorder the list so that the number of hops stays minimal. Suppose a list, L, with some edges has minimal hops, and I have an edge to add. Transpose the ends of the edge with consecutive nodes to shorten the new edge, so long as the number of hops is reduced. I claim the result has the minimum number of hops. Suppose the contrary, that there is a list with fewer hops. Consider that list with the new edge removed. That list has fewer hops than L. This contradiction proves my claim.