Saturday, February 20, 2016
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.