%
%
%
\documentclass[finalversion]{FPSAC2024}
\articlenumber{41}
\usepackage[T1]{fontenc}
%\usepackage{lmodern}
%
\usepackage[dvipsnames]{xcolor}

\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{tikz-cd}
\usepackage{mathbbol} %
\usepackage{paralist}%

\usepackage[capitalize, noabbrev]{cleveref}
%

\usepackage{todo}
\def\todoname{Comments, remarks and to-do's}
\usepackage{csquotes}
\usetikzlibrary{arrows}
\usepackage{xargs}%
\usepackage{comment}
\usepackage{lipsum}
\usepackage{tikz,tikz-cd,tikz-3dplot}
\usetikzlibrary{positioning,calc}

%

\newtheorem{thm}{Theorem}
\newtheorem{lem}{Lemma}

%
\newtheorem{theorem}{Theorem}[section]
\newtheorem*{theorem*}{Theorem}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem*{proposition*}{Proposition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem*{lemma*}{Lemma}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem*{corollary*}{Corollary}

\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\newtheorem*{definition*}{Definition}
\newtheorem{remark}[theorem]{Remark}
\newtheorem*{remark*}{Remark}
\newtheorem{example}[theorem]{Example}
\newtheorem*{example*}{Example}
\newtheorem{construction}[theorem]{Construction}
\newtheorem*{construction*}{Construction}
\newtheorem{convention}[theorem]{Convention}
\newtheorem*{convention*}{Convention}
\newtheorem{terminology}[theorem]{Terminology}
\newtheorem*{terminology*}{Terminology}
\newtheorem{notation}[theorem]{Notation}
\newtheorem*{notation*}{Notation}
\newtheorem{question}[theorem]{Question}
\newtheorem*{question*}{Question}
\newtheorem{observation}[theorem]{Observation}
\newtheorem*{observation*}{Observation}

%
\hyphenation{co-chain}
\hyphenation{co-chains}
\hyphenation{co-al-ge-bra}
\hyphenation{co-al-ge-bras}
\hyphenation{co-bound-ary}
\hyphenation{co-bound-aries}
\hyphenation{Func-to-rial-i-ty}
\hyphenation{colim-it}
\hyphenation{di-men-sional}

%
\DeclareMathOperator{\face}{d}
\DeclareMathOperator{\dege}{s}
\DeclareMathOperator{\bd}{\partial}
\DeclareMathOperator{\sign}{sign}
\newcommand{\ot}{\otimes}
\DeclareMathOperator{\EZ}{EZ}
\DeclareMathOperator{\AW}{AW}

%
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\renewcommand{\k}{\Bbbk}
\newcommand{\sym}{\mathbb{S}}
\newcommand{\cyc}{\mathbb{C}}
\newcommand{\Ftwo}{{\mathbb{F}_2}}
\newcommand{\Fp}{{\mathbb{F}_p}}
\newcommand{\Cp}{{\cyc_p}}
\newcommand{\gsimplex}{\Delta}
\newcommand{\gcube}{\mathbb{I}}

%
\newcommand{\Cat}{\mathsf{Cat}}
\newcommand{\Fun}{\mathsf{Fun}}
\newcommand{\Set}{\mathsf{Set}}
\newcommand{\Top}{\mathsf{Top}}
\newcommand{\CW}{\mathsf{CW}}
\newcommand{\Ch}{\mathsf{Ch}}
\newcommand{\simplex}{\triangle}
\newcommand{\sSet}{\mathsf{sSet}}
\newcommand{\cube}{\square}
\newcommand{\cSet}{\mathsf{cSet}}
\newcommand{\Alg}{\mathsf{Alg}}
\newcommand{\coAlg}{\mathsf{coAlg}}
\newcommand{\biAlg}{\mathsf{biAlg}}
\newcommand{\sGrp}{\mathsf{sGrp}}
\newcommand{\Mon}{\mathsf{Mon}}
\newcommand{\symMod}{\mathsf{Mod}_{\sym}}
\newcommand{\symBimod}{\mathsf{biMod}_{\sym}}
\newcommand{\operads}{\mathsf{Oper}}
\newcommand{\props}{\mathsf{Prop}}

%
\DeclareMathOperator{\free}{F}
\DeclareMathOperator{\forget}{U}
\DeclareMathOperator{\yoneda}{\mathcal{Y}}
\DeclareMathOperator{\Sing}{Sing}
\newcommand{\loops}{\Omega}
\DeclareMathOperator{\cobar}{\mathbf{\Omega}}
\DeclareMathOperator{\proj}{\pi}
\DeclareMathOperator{\incl}{\iota}
\DeclareMathOperator{\Sq}{Sq}
\DeclareMathOperator{\ind}{ind}

%
\DeclareMathOperator{\chains}{N}
\DeclareMathOperator{\cochains}{N^{\vee}}
\DeclareMathOperator{\gchains}{C}

%
\DeclarePairedDelimiter\bars{\lvert}{\rvert}
\DeclarePairedDelimiter\norm{\lVert}{\rVert}
\DeclarePairedDelimiter\angles{\langle}{\rangle}
\DeclarePairedDelimiter\set{\{}{\}}
\DeclarePairedDelimiter\ceil{\lceil}{\rceil}
\DeclarePairedDelimiter\floor{\lfloor}{\rfloor}

%
\newcommand{\id}{\mathsf{id}}
\renewcommand{\th}{\mathrm{th}}
\newcommand{\op}{\mathrm{op}}
\DeclareMathOperator*{\colim}{colim}
\DeclareMathOperator{\coker}{coker}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\End}{\mathrm{End}}
\newcommand{\coEnd}{\mathrm{coEnd}}
\newcommand{\xla}[1]{\xleftarrow{#1}}
\newcommand{\xra}[1]{\xrightarrow{#1}}
\newcommand{\defeq}{\stackrel{\mathrm{def}}{=}}

%
\newcommand{\rA}{\mathrm{A}}
\newcommand{\rB}{\mathrm{B}}
\newcommand{\rC}{\mathrm{C}}
\newcommand{\rD}{\mathrm{D}}
\newcommand{\rE}{\mathrm{E}}
\newcommand{\rF}{\mathrm{F}}
\newcommand{\rG}{\mathrm{G}}
\newcommand{\rH}{\mathrm{H}}
\newcommand{\rI}{\mathrm{I}}
\newcommand{\rJ}{\mathrm{J}}
\newcommand{\rK}{\mathrm{K}}
\newcommand{\rL}{\mathrm{L}}
\newcommand{\rM}{\mathrm{M}}
\newcommand{\rN}{\mathrm{N}}
\newcommand{\rO}{\mathrm{O}}
\newcommand{\rP}{\mathrm{P}}
\newcommand{\rQ}{\mathrm{Q}}
\newcommand{\rR}{\mathrm{R}}
\newcommand{\rS}{\mathrm{S}}
\newcommand{\rT}{\mathrm{T}}
\newcommand{\rU}{\mathrm{U}}
\newcommand{\rV}{\mathrm{V}}
\newcommand{\rW}{\mathrm{W}}
\newcommand{\rX}{\mathrm{X}}
\newcommand{\rY}{\mathrm{Y}}
\newcommand{\rZ}{\mathrm{Z}}
%
\newcommand{\cA}{\mathcal{A}}
\newcommand{\cB}{\mathcal{B}}
\newcommand{\cC}{\mathcal{C}}
\newcommand{\cD}{\mathcal{D}}
\newcommand{\cE}{\mathcal{E}}
\newcommand{\cF}{\mathcal{F}}
\newcommand{\cG}{\mathcal{G}}
\newcommand{\cH}{\mathcal{H}}
\newcommand{\cI}{\mathcal{I}}
\newcommand{\cJ}{\mathcal{J}}
\newcommand{\cK}{\mathcal{K}}
\newcommand{\cL}{\mathcal{L}}
\newcommand{\cM}{\mathcal{M}}
\newcommand{\cN}{\mathcal{N}}
\newcommand{\cO}{\mathcal{O}}
\newcommand{\cP}{\mathcal{P}}
\newcommand{\cQ}{\mathcal{Q}}
\newcommand{\cR}{\mathcal{R}}
\newcommand{\cS}{\mathcal{S}}
\newcommand{\cT}{\mathcal{T}}
\newcommand{\cU}{\mathcal{U}}
\newcommand{\cV}{\mathcal{V}}
\newcommand{\cW}{\mathcal{W}}
\newcommand{\cX}{\mathcal{X}}
\newcommand{\cY}{\mathcal{Y}}
\newcommand{\cZ}{\mathcal{Z}}
%
\newcommand{\sA}{\mathsf{A}}
\newcommand{\sB}{\mathsf{B}}
\newcommand{\sC}{\mathsf{C}}
\newcommand{\sD}{\mathsf{D}}
\newcommand{\sE}{\mathsf{E}}
\newcommand{\sF}{\mathsf{F}}
\newcommand{\sG}{\mathsf{G}}
\newcommand{\sH}{\mathsf{H}}
\newcommand{\sI}{\mathsf{I}}
\newcommand{\sJ}{\mathsf{J}}
\newcommand{\sK}{\mathsf{K}}
\newcommand{\sL}{\mathsf{L}}
\newcommand{\sM}{\mathsf{M}}
\newcommand{\sN}{\mathsf{N}}
\newcommand{\sO}{\mathsf{O}}
\newcommand{\sP}{\mathsf{P}}
\newcommand{\sQ}{\mathsf{Q}}
\newcommand{\sR}{\mathsf{R}}
\newcommand{\sS}{\mathsf{S}}
\newcommand{\sT}{\mathsf{T}}
\newcommand{\sU}{\mathsf{U}}
\newcommand{\sV}{\mathsf{V}}
\newcommand{\sW}{\mathsf{W}}
\newcommand{\sX}{\mathsf{X}}
\newcommand{\sY}{\mathsf{Y}}
\newcommand{\sZ}{\mathsf{Z}}
%
\newcommand{\bA}{\mathbb{A}}
\newcommand{\bB}{\mathbb{B}}
\newcommand{\bC}{\mathbb{C}}
\newcommand{\bD}{\mathbb{D}}
\newcommand{\bE}{\mathbb{E}}
\newcommand{\bF}{\mathbb{F}}
\newcommand{\bG}{\mathbb{G}}
\newcommand{\bH}{\mathbb{H}}
\newcommand{\bI}{\mathbb{I}}
\newcommand{\bJ}{\mathbb{J}}
\newcommand{\bK}{\mathbb{K}}
\newcommand{\bL}{\mathbb{L}}
\newcommand{\bM}{\mathbb{M}}
\newcommand{\bN}{\mathbb{N}}
\newcommand{\bO}{\mathbb{O}}
\newcommand{\bP}{\mathbb{P}}
\newcommand{\bQ}{\mathbb{Q}}
\newcommand{\bR}{\mathbb{R}}
\newcommand{\bS}{\mathbb{S}}
\newcommand{\bT}{\mathbb{T}}
\newcommand{\bU}{\mathbb{U}}
\newcommand{\bV}{\mathbb{V}}
\newcommand{\bW}{\mathbb{W}}
\newcommand{\bX}{\mathbb{X}}
\newcommand{\bY}{\mathbb{Y}}
\newcommand{\bZ}{\mathbb{Z}}
%
\newcommand{\fA}{\mathfrak{A}}
\newcommand{\fB}{\mathfrak{B}}
\newcommand{\fC}{\mathfrak{C}}
\newcommand{\fD}{\mathfrak{D}}
\newcommand{\fE}{\mathfrak{E}}
\newcommand{\fF}{\mathfrak{F}}
\newcommand{\fG}{\mathfrak{G}}
\newcommand{\fH}{\mathfrak{H}}
\newcommand{\fI}{\mathfrak{I}}
\newcommand{\fJ}{\mathfrak{J}}
\newcommand{\fK}{\mathfrak{K}}
\newcommand{\fL}{\mathfrak{L}}
\newcommand{\fM}{\mathfrak{M}}
\newcommand{\fN}{\mathfrak{N}}
\newcommand{\fO}{\mathfrak{O}}
\newcommand{\fP}{\mathfrak{P}}
\newcommand{\fQ}{\mathfrak{Q}}
\newcommand{\fR}{\mathfrak{R}}
\newcommand{\fS}{\mathfrak{S}}
\newcommand{\fT}{\mathfrak{T}}
\newcommand{\fU}{\mathfrak{U}}
\newcommand{\fV}{\mathfrak{V}}
\newcommand{\fW}{\mathfrak{W}}
\newcommand{\fX}{\mathfrak{X}}
\newcommand{\fY}{\mathfrak{Y}}
\newcommand{\fZ}{\mathfrak{Z}}

\DeclareMathOperator{\Span}{Span}
\DeclareMathOperator{\normal}{n}
\newcommand{\CP}{C}
\newcommand{\NC}{\cN}
\DeclareMathOperator{\Mor}{Mor}
\DeclareMathOperator{\cl}{cl}
\renewcommand{\bd}{\partial}
\newcommand{\oriental}{\cO}
\renewcommand{\face}{\operatorname{Face}}
\DeclareMathOperator{\cone}{Cone}
\DeclareMathOperator{\aug}{aug}
\newcommand{\wCat}{\omega\Cat}
\newcommand{\wDiag}{\omega\mathsf{Diag}}
\newcommand{\cells}{\nu}

%
\DeclareMathOperator{\conv}{conv} %

%
\DeclareMathOperator{\so}{s} %
\DeclareMathOperator{\ta}{t} %

%
\newcommand{\anibal}[1]{\todo[An.\!]{#1}}
\newcommand{\arnau}[1]{\todo[Ar.\!]{#1}}
\newcommand{\guillaume}[1]{\todo[G.\!]{#1}}

\renewcommand{\chains}{\gchains}

\newcommand{\sprod}[2]{\left\langle  #1 \, , \, #2  \right\rangle} %

%

\newcommand\restr[2]{{%
		\left.\kern-\nulldelimiterspace %
		#1 %
		\vphantom{\big|} %
		\right|_{#2} %
}}%

\newcommand{\bigslant}[2]{{\raisebox{.3em}{$#1$} \Big/ \raisebox{-.3em}{$#2$}}} %
\DeclareMathOperator{\GL}{GL}
\newcommandx{\GLn}[1][1={\R^d}]{\GL(#1)} %
\DeclareMathOperator{\Aff}{Aff}
\DeclareMathOperator{\Lin}{Lin}
\newcommandx{\Affn}[1][1={\R^d}]{\Aff(#1)} %
\newcommandx{\frames}[1][1=P]{\mathcal{F}_{#1}} %
\newcommandx{\faces}[2][1=P,2={}]{\mathcal{L}_{#2}(#1)} %
\newcommandx{\ms}[1][1=B]{\mathcal{M}({#1})} %
\newcommandx{\rs}[1][1=A]{\mathcal{R}({#1})} %
\newcommandx{\rsinf}[1][1={\chi}]{\mathcal{R}_\infty({#1})} %
\newcommandx{\chiro}[1][1=A]{\chi^{#1}} %
\newcommandx{\cyclift}[1][1=A]{{#1}^{\uparrow}} %

\newcommand{\ball}[2]{B_{#2}(#1)} %

%
\newcommand{\thickmidarrow}{
	\begin{tikzpicture}
		\draw[ultra thick] (-2,1) -- (0,0) ;
		\draw[ultra thick] (-2,-1) -- (0,0) ;
	\end{tikzpicture}}

%
\definecolor{darkblue}{rgb}{0,0,0.7} %
\newcommand{\darkblue}{\color{darkblue}} %
\newcommand{\defn}[1]{{\darkblue \emph{#1}}}

%

%
\title{Framed polytopes and higher categories}

%
%

\author[Laplante-Anfossi, Medina-Mardones, and Padrol]{Guillaume Laplante-Anfossi\thanks{\href{mailto:guillaume.laplanteanfossi@unimelb.edu.au}{guillaume.laplanteanfossi@unimelb.edu.au}. Supported by the Andrew Sisson Fund and the Australian Research Council Future Fellowship FT210100256.}\addressmark{1},
	Anibal M. Medina-Mardones\thanks{\href{mailto:anibal.medina.mardones@uwo.ca}{anibal.medina.mardones@uwo.ca}.
		Supported by grant ANR 20 CE40 0016 01 PROJET HighAGT.
	}\addressmark{2}, \newline
	\and
	Arnau Padrol\thanks{\href{mailto:arnau.padrol@ub.edu}{arnau.padrol@ub.edu}.
		Supported by grants PAGCAP ANR-21-CE48-0020, PID2019-106188GB-I00, PID2022-137283NB-C21, RED2022-134947-T and CLaPPo (21.SI03.64658).
	}\addressmark{3}
}

%
\address{\addressmark{1}School of Mathematics and Statistics, The University of Melbourne, Victoria, Australia \\
	\addressmark{2}Department of Mathematics, Western University, Canada
	\\
	\addressmark{3}Departament de Matem\`atiques i Inform\`atica, Universitat de Barcelona, Barcelona, Spain and
	Centre de Recerca Matemàtica, Bellaterra, Spain
}

%
\received{\today}

%
%

%
%
%

\abstract{Pasting diagrams form an important special class of higher categories. In~1991, Kapranov and Voevodsky announced that any $d$-polytope in $\R^d$, when equipped with a generic frame of $\R^d$, naturally defines a $d$-dimensional pasting diagram. Our main result is a counterexample to this claim.

After translating this category-theoretic statement into a purely convex-geometric one, we were led to the study of globular structures and higher cellular strings on polytopes.
Specifically, the absence of cellular loops is a necessary condition for the claim. We strongly disprove it by constructing polytopes for which every frame leads to a cellular~loop.

An important infinite family of framed polytopes without cellular loops is defined by the canonically framed cyclic simplices.
These happen to be exceptional since we show that, as the dimension of a canonically framed random simplex grows, the probability that it has a cellular loop tends to $1$.

We conclude this work relating globular structures on simplices to oriented flag matroids, and use this connection to prove a universality theorem showing how complicated the moduli space of frames can be.}

%
%
%
%\resume{Les schémas de composition forment une classe spéciale importante de catégories supérieures. En 1991, Kapranov et Voevodsky ont annoncé que tout polytope de dimension~$d$ dans $\R^d$ équipé d'une base générique de $\R^d$ définit de façon naturelle un schéma de composition. Notre principal résultat est un contrexemple à cet énoncé.

%Après avoir traduit cet énoncé catégorique dans le langage de la géométrie convexe, nous avons été mené à l'étude des structures globulaires et des chaînes cellulaires supérieures sur les polytopes. En particulier, l'absence de boucle cellulaire est une condition nécessaire pour que la conjecture tienne. Nous la réfutons en construisant des polytopes pour lesquels toute base générique induit une boucle cellulaire.

%Une famille importante de polytopes sans boucle cellulaire est donnée par les simplexes cycliques munis de la base canonique. Ceux-ci s'avèrent être exceptionnels: nous montrons que lorsque la dimension d'un simplexe aléatoire augmente, la probabilité qu'il ait une boucle cellulaire tend vers $1$.

%Nous concluons en reliant les structures globulaires sur les simplexes aux drapeaux de matroïdes orientés, ce qui nous permet de démontrer un théorème d'universalité montrant le degré de complexité que peuvent atteindre les espaces de modules de schémas de composition polytopaux.
%}

%
\keywords{Framed polytopes, $n$-categories, pasting diagrams, cellular strings, globular structures, random polytopes, oriented flag matroids, Mn\"ev's universality theorem}

%
%

%
%
\usepackage[backend=bibtex]{biblatex}
%
\addbibresource{bibliography.bib}  %
%

\begin{document}
	\maketitle
	%
	\section{Introduction}

Higher categories offer a powerful framework for systematizing complex hierarchies.
%
Polytopes were first introduced into higher category theory to organize coherence relations.
Kapranov and Voevodsky significantly expanded the connection between convex geometry and higher category theory announcing several intriguing results in \cite{kapranov1991polycategory}, including the following insightful idea.
Consider a convex $d$-polytope $P \subseteq \R^d$ and a generic ordered basis $B$ of~$\R^d$, which we refer to as a \textit{frame}.
Using the frame we define, for each face $F$, two distinct subsets of its $k$-faces: its \textit{$k$-source} $\so_k(F)$ and \textit{$k$-target} $\ta_k(F)$.
Kapranov and Voevodsky conjectured \cite[Thm. 2.3]{kapranov1991polycategory} that the data consisting of all sources and targets, referred to as the \textit{globular structure} of $(P,B)$, defines a $d$-dimensional \textit{pasting diagram}, a special and important type of $d$-dimensional categories.
Using ideas of Steiner \cite{steiner2004omega}, we show in the full version of this article that this claim holds if and only if the framed polytope has no cellular loops, a notion we now define.
A \textit{cellular $k$-string} in a framed polytope is a sequence $F_1,\dots,F_\ell$ of faces such that two consecutive faces $F_i$ and $F_{i+1}$ share a $k$-face $G$ with $\ta_k(F_i) \cap \so_k(F_{i+1}) = G$.
We say it is a \textit{cellular loop} if and $F_i = F_j$ for some $i \neq j$.

The first contribution we discuss in this paper are counterexamples to \cite[Thm. 2.3]{kapranov1991polycategory}.
More precisely, in \cref{s:loops} we provide examples showing the following.

\begin{theorem}
	Starting in dimension 4 there exist framed polytopes with cellular loops.
\end{theorem}

We also considered whether the following weaker version of their claim could be true: For any polytope there is a frame making it into a pasting diagram. However, this weaker version also fails since we provide in \cref{s:inevitability} a construction establishing the following.

\begin{theorem}
	Starting in dimension 4 there exist polytopes for which all frames lead to cellular loops.
\end{theorem}

An important infinite family of framed polytopes, which was studied by Kapranov--Voevodsky, is given by the \textit{canonically framed cyclic simplices} $(C(d), \set{e_1,\dots,e_d})$, where $\set{e_1,\dots,e_d}$ is the canonical frame of $\R^d$ and $C(d)$ is the convex closure of $d+1$ distinct points in the \textit{moment curve} $t \mapsto (t,t^2,\dots,t^d)$.
In an insightful observation \cite[Thm. 2.5]{kapranov1991polycategory}, they announced that $(C(d), \set{e_k})$ has no cellular loops and recover Street's free $d$-category on the $d$-simplex, a fundamental object in higher category theory \cite{street1987orientals}.
We were able to verify this claim after replacing the canonical frame by $\set{e_1,-e_2,e_3,-e_4,\dots}$.
These framed polytopes are rare and special in the following probabilistic sense.

A \textit{Gaussian $d$-simplex} is the convex hull of $d+1$ independent random points in~$\R^d$, each chosen according to a $d$-dimensional standard normal distribution.
In \cref{s:random} we prove the following.

\begin{theorem}
	The probability that a canonically framed Gaussian $d$-simplex has a cellular loop tends to $1$ as $d$ tends to $\infty$.
\end{theorem}

We next turn our attention to the moduli of frames of a simplex $\gsimplex_d$ under the equivalence relation induced by globular structures.
Our aim is to quantify the complexity of the \textit{realization space} of a globular structure on $\gsimplex_d$, that is, the set of all frames of $\gsimplex_d$ inducing it.
Using a celebrated result of N. E. Mn\"ev \cite{Mnev1988}, in \cref{s:universality} we show the following.

\begin{theorem}
	For every open primary basic semi-algebraic set $S$ defined over $\Z$ there is a globular structure on some simplex $\gsimplex_{d}$ whose realization space is stably equivalent to~$S$.
\end{theorem}

A key step in the proof of this result is the following theorem--presented in \cref{s:matroids}--which we consider noteworthy in its own right.

\begin{theorem}
	Globular structures of framed simplices are in bijection with uniform acyclic realizable full flag chirotopes.
\end{theorem}

For reasons of scope and extension, we do not discuss our formalization of the Kapranov--Voevodsky idea, nor the applications within higher category theory of this connection with convex geometry, simply mentioning that the resulting $d$-categories are gaunt, an important type of higher categories that fully-faithfully embed into any model of $(\infty,d)$-categories.
Our focus here will remain primarily with polytopes.
For further details, including proofs and discussions of the aforementioned topics, we invite the interested reader to consult the full version of this article, which will become available soon.
We believe that, beyond our initial motivation, the results presented herein hold intrinsic value from a combinatorial-geometric standpoint.
Indeed, some important research topics in combinatorial polytope theory, such as the Baues problem, were originally motivated by questions in algebraic topology and category theory, with our work extending these connections to higher category theory.

	\section{Definitions and preliminaries}

	A \defn{polytope} $P$ is a subset of $\R^d$ for some $d \in \N$ obtained as the {convex hull} of a finite set of points.
	A \defn{face} $F$ of $P$ is a subset of $P$ maximizing some linear functional.
	Its \defn{dimension} is that of its affine span.
	A $d$-dimensional polytope is called a \defn{$d$-polytope} and a $k$-dimensional face is called a \defn{$k$-face}.
	We denote the set of $k$-faces of $P$ by $\faces[P][k]$ and the set of all faces by~$\faces[P]$.
	As usual, if $P$ is a $d$-polytope, its $(d-1)$-faces are called \defn{facets}, and the outer-pointing \defn{normal} vector of a facet $F$ is denoted $\normal_F^P$.

	A \defn{frame} $B$ is an ordered basis $(v_1,\dots,v_d)$ of $\R^d$.
	The \defn{canonical frame} $(e_1,\dots,e_d)$ consists of the standard basis vectors.
	The \defn{system of projections} of a frame is the collection $\set{\pi_k}_{k \in \N}$ with
	\[
	\pi_k \colon \R^d \to V_k \defeq \Span{(v_1,\ldots,v_k)}
	\quad ; \quad
	\pi_k(v_i) =
	\begin{cases}
		v_i & \text{ if } i \leq k,\\
		\hfil 0 & \text{ if } i > k.
	\end{cases}
	\]
	A frame is said to be \defn{$P$-admissible} if for any $k$-face $F$ of $P$ the restriction $\pi_k \colon \Lin F \to V_k$ is a linear isomorphism.
	We remark that the property of being $P$-admissible is stable under small perturbations.

	A \defn{framed polytope} is a pair $(P, B)$ consisting of a polytope $P$ and a $P$-admissible frame $B$.
	We will typically omit the frame from the notation.
	We remark that $B$ is $\pi_k(P)$-admissible, so $\pi_k(P)$ is canonically framed for any $k \in \N$.

	\begin{figure}[htpb]
		\centering
		\begin{tabular}{ccccc}
 \begin{tikzpicture}%
	[x={(-0.587802cm, -0.404450cm)},
	y={(0.809005cm, -0.293947cm)},
	z={(0.000078cm, 0.866034cm)},
	scale=1.000000,
	back/.style={thin, color=black!60},
	edge/.style={color=black, thick},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=blue!95!black,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
\fill[targetfacet] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333) -- (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
\fill[sourcefacet] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667) -- cycle {};
 \fill[sourcefacet] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
\fill[sourcefacet] (0.58824, 0.00000, -1.66667) -- (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};
\fill[targetfacet] (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667) -- cycle {};
 \fill[targetfacet] (-0.58824, 0.00000, 1.66667) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
%
%
%
%
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
%
 \node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
\begin{scope}[shift={(0,3,0)}]
		
		%
		\draw[->] (0, 0,0) -- (1, 0,0) node[anchor=east]{$v_1$};
		\draw[->] (0, 0,0) -- (0, 1,0) node[anchor=west]{$v_2$};
		\draw[->] (0, 0,0) -- (0, 0, 1) node[anchor=west]{$v_3$};
	\end{scope}

\end{tikzpicture}
& &
\begin{tikzpicture}%
	[
%
%
%
	x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},
	scale=.950000,
	back/.style={thin, color=black!60},
	edge/.style={color=black, thick},
	sourceedge/.style={color=red, very thick},
	targetedge/.style={color=blue, very thick},
	facet/.style={fill=blue!95!black,fill opacity=0.800000},
	targetfacet/.style={fill=blue,fill opacity=0.600000},
	sourcefacet/.style={fill=red,fill opacity=0.600000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%
\draw[edge,back] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge,back] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);

\draw[edge,back] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge,back] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge,back] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);

%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
%
%
%
%
%
%
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
\node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};

%
\begin{scope}[shift={(.5,2,0)}]

		%
		\draw[->] (0, 0,0) -- (1, 0,0) node[anchor=west]{$v_1$};
		\draw[->] (0, 0,0) -- (0, 1,0) node[anchor=west]{$v_2$};
%
	\end{scope}
\end{tikzpicture}&
&
\begin{tikzpicture}%
	[scale=.950000,
	back/.style={thin, color=black!60},
	edge/.style={color=black, thick},
	sourceedge/.style={color=red, very thick},
	targetedge/.style={color=blue, very thick},
	facet/.style={fill=blue!95!black,fill opacity=0.800000},
	targetfacet/.style={fill=blue,fill opacity=0.600000},
	sourcefacet/.style={fill=red,fill opacity=0.600000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
\draw[edge] (0,-2) -- (0,1);
\node[targetvertex] at (0,-2)     {};
\node[sourcevertex] at (0,1)     {};

\begin{scope}[shift={(1,-1)}]
		
		%
		\draw[->] (0, 0) -- ( 0,-1) node[anchor=west]{$v_1$};
	
	\end{scope}
\end{tikzpicture}
\\
$P=\pi_3(P)$& & $\pi_2(P)$& & $\pi_1(P)$
\end{tabular}
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

%
%
%

\begin{tikzpicture}%
	[	x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
%
%
%


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
\fill[facet] (0.58824, 0.00000, -1.66667) -- (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};
%
%
%
%
%
%
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[sourceedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
 \node[sourcevertex] at (-0.58824, 1.42857, -0.83333)     {};
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
%
%
%
%
%
%
%
%
%

\end{tikzpicture}
\qquad
\begin{tikzpicture}%
	[x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},,
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
%
\fill[facet] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667) -- cycle {};
%


\draw[back,sourceedge] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
%
%
%
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
%
 \node[targetvertex] at (0.58824, 0.00000, -1.66667)     {};
 \node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
%
%
%
%
%
%
%

\end{tikzpicture}
\qquad
\begin{tikzpicture}%
	[x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},,
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
%
 \fill[facet] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};


\draw[back,targetedge] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
%
%
%
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[targetedge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
\node[sourcevertex] at (-0.58824, -1.42857, -0.83333)     {};

%
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
%
%
%
%
%
%
%
%
%

\end{tikzpicture}
\qquad
\begin{tikzpicture}%
	[x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},,
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
%
%
%


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
%
\fill[facet] (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667) -- cycle {};
%
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[sourceedge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
%
%
 \node[sourcevertex] at (-0.58824, 0.00000, 1.66667)     {};
%
%
%
%
%
%
%
%
%
%
%

\end{tikzpicture}
\qquad
\begin{tikzpicture}%
	[x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},,
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
%
%
%


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
%
%
 \fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
%
%
%
%
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[sourceedge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[sourceedge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
\node[targetvertex] at (0.58824, 1.42857, 0.83333)     {};
%
%
 \node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
%
%
%
%
%
%
%

\end{tikzpicture}
\qquad
\begin{tikzpicture}%
	[x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},,
	scale=.5,
	back/.style={thin, color=black!60},
	edge/.style={color=black!60, thin},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	facet/.style={fill=black!35,fill opacity=0.800000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
\fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333) -- (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
%
%


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
%
%
%
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[targetedge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[targetedge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%

%

%
%
%
%
%
 \node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};
%
 \node[targetvertex] at (0.58824, -1.42857, 0.83333)     {};
%
%
%
%
%
%
%
%
%
%
\begin{scope}[shift={(.5,2,0)}]

		%
		\draw[->] (0, 0,0) -- (1, 0,0) node[anchor=west]{$v_1$};
		\draw[->] (0, 0,0) -- (0, 1,0) node[anchor=west]{$v_2$};
%
	\end{scope}
\end{tikzpicture}

		\caption{A globular structure on a $3$-cube~$P$ given by a frame $(v_1,v_2,v_3)$ of $\R^3$.
			The first row depicts~$P$ and its projections $\pi_2(P)$ and $\pi_1(P)$. The faces in $s_0(P)$, $s_1(P)$ and $s_2(P)$, and their projections, are in red, while the faces in $t_0(P)$, $t_1(P)$ and $t_2(P)$, and their projections, are in blue.
			The second row shows the $0$- and $1$-sources and targets of the $2$-faces, projected onto the $\langle v_1,v_2\rangle$ plane. The $0$-sources and targets of the $1$-faces are computed similarly.}
		\label{fig:globe-poly}
	\end{figure}

	Let $(P,B)$ be a framed polytope.
	Its \defn{$k$-boundary} $\bd^{(k)} P$ is the subset of $k$-faces of $P$ consisting of the faces $F$ such that $\pi_{k+1}(F)$ is in the boundary of the polytope $\pi_{k+1} (P)$.
	The \defn{$k$-source $\so_k(P)$} (resp.\ \defn{$k$-target $\ta_k(P)$}) of a framed polytope $(P, \{v_k\})$ is the subset of $\bd^{(k)} P$ containing one such $F$ if
	\[
	\sprod{\normal_{\pi_{k+1} (F)}^{\pi_{k+1} (P)}}{v_{k+1}} < 0 \text{ (resp. > 0)}.
	\]
	See an example in \cref{fig:globe-poly}.
	Similar definitions apply to all faces of $P$ using the induced frame.

	The data of all sources and targets of faces of $P$ is called the \defn{globular structure} on $P$ induced by $B$.
	Two $P$-admissible frames are said to be \defn{$P$-equivalent} if they induce the same globular structure on~$P$.

	\begin{lemma}
		If a frame $\set{v_1',v_2',\dots}$ is obtained from a $P$-admissible frame $\set{v_1,v_2,\dots}$ via a positive lower triangular transformation, meaning that there exist $\lambda_{pq} \in \R$ for $p > q$ and $\lambda_i \in \R_+$ such that
		\(
		v_q' = \lambda_q v_q + \sum_{p>q} \lambda_{pq} v_p \,,
		\)
		then these frames are $P$-equivalent.
	\end{lemma}

	\begin{corollary}\label{cor:equivalentorthogonal}
		Every $P$-admissible frame is $P$-equivalent to an orthonormal frame.
	\end{corollary}

	\section{Cellular loops}\label{s:loops}

	Let $(P,B)$ be a framed polytope.
	A \defn{cellular $k$-string} in $P$ is a sequence $F_1,\dots,F_m$ of faces of $P$ satisfying
	\(
	\ta_k(F_i) \cap \so_k(F_{i+1}) \neq \emptyset
	\)
	for every $i \in \set{1,\dots,m-1}$.
	We remark that this intersection is precisely a single $k$-face. \cref{fig:string-poly} depicts two examples of cellular strings.
	Note that cellular $0$-strings starting at $\so_0(P)$ and ending at $\ta_0(P)$ are precisely the cellular strings defined in~\cite{billera1994strings}.

		\begin{figure}[htpb]
		\centering
		 \begin{tikzpicture}%
	[
%
%
%
	x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},
	scale=.700000,
 	back/.style={thin, color=black!60},
	edge/.style={color=black, thick},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	selectededge/.style={color=green, ultra thick},
	facet/.style={fill=white,fill opacity=0.00000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	selectedfacet/.style={fill=green!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
\fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333) -- (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
\fill[selectedfacet] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667) -- cycle {};
 \fill[facet] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
\fill[selectedfacet] (0.58824, 0.00000, -1.66667) -- (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};
\fill[facet] (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667) -- cycle {};
 \fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%


\draw[back,sourceedge] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[back,sourceedge] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);

\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);

 \begin{scope}[shift={(-0.05,-0.0,-0.0)}]
\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
 	\end{scope}


\draw[targetedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[targetedge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[sourceedge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\begin{scope}[shift={(0.05,+0,+0)}]
\draw[sourceedge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\end{scope}
%
%
\end{tikzpicture}
\qquad\qquad
 \begin{tikzpicture}%
	[
%
%
%
	x={(0.000000cm, -1.000000cm)},
	y={(1.000000cm, 0.000000cm)},
	z={(0.000000cm, 0.000000cm)},
	scale=.700000,
 	back/.style={thin, color=black!60},
	edge/.style={color=black, thick},
	sourceedge/.style={color=red, ultra thick},
	targetedge/.style={color=blue, ultra thick},
	selectededge/.style={color=green, ultra thick},
	facet/.style={fill=white,fill opacity=0.00000},
	targetfacet/.style={fill=blue!80,fill opacity=0.800000},
	sourcefacet/.style={fill=red!80,fill opacity=0.800000},
	selectedfacet/.style={fill=green!80,fill opacity=0.800000},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick},
	targetvertex/.style={inner sep=1pt,circle,draw=blue,fill=blue,thick},
	sourcevertex/.style={inner sep=1pt,circle,draw=red,fill=red,thick}]
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\coordinate (-0.58824, 1.42857, -0.83333) at (-0.58824, 1.42857, -0.83333);
\coordinate (0.58824, 1.42857, 0.83333) at (0.58824, 1.42857, 0.83333);
\coordinate (1.76471, 0.00000, 0.00000) at (1.76471, 0.00000, 0.00000);
\coordinate (0.58824, 0.00000, -1.66667) at (0.58824, 0.00000, -1.66667);
\coordinate (-0.58824, -1.42857, -0.83333) at (-0.58824, -1.42857, -0.83333);
\coordinate (-1.76471, 0.00000, 0.00000) at (-1.76471, 0.00000, 0.00000);
\coordinate (-0.58824, 0.00000, 1.66667) at (-0.58824, 0.00000, 1.66667);
\coordinate (0.58824, -1.42857, 0.83333) at (0.58824, -1.42857, 0.83333);
%
%
%
%

%
%
%
%
%
%
%
\fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333) -- (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
\fill[selectedfacet] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667) -- cycle {};
 \fill[facet] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};


\draw[edge,back] (0.58824, 0.00000, -1.66667) -- (-0.58824, -1.42857, -0.83333);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge,back] (-0.58824, -1.42857, -0.83333) -- (0.58824, -1.42857, 0.83333);

%
%
\fill[facet] (0.58824, 0.00000, -1.66667) -- (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- cycle {};
\fill[facet] (0.58824, -1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667) -- cycle {};
 \fill[facet] (-0.58824, 0.00000, 1.66667) -- (0.58824, 1.42857, 0.83333) -- (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000) -- cycle {};
%
%
%
%
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 1.42857, 0.83333);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (-0.58824, 1.42857, -0.83333) -- (-1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (1.76471, 0.00000, 0.00000);
\draw[edge] (0.58824, 1.42857, 0.83333) -- (-0.58824, 0.00000, 1.66667);
\draw[selectededge] (1.76471, 0.00000, 0.00000) -- (0.58824, 0.00000, -1.66667);
\draw[edge] (1.76471, 0.00000, 0.00000) -- (0.58824, -1.42857, 0.83333);
\draw[edge] (-1.76471, 0.00000, 0.00000) -- (-0.58824, 0.00000, 1.66667);
\draw[edge] (-0.58824, 0.00000, 1.66667) -- (0.58824, -1.42857, 0.83333);
%
%
%
%
%
%
\node[targetvertex] at (1.76471, 0.00000, 0.00000)     {};
%
%
%
%
%
%
%
%
%
%
%
%
%
%


 \node[sourcevertex] at (-1.76471, 0.00000, 0.00000)     {};

 \begin{scope}[shift={(-0.05,-0.0,-0.0)}]
 \node[targetvertex] at (0.58824, 0.00000, -1.66667)     {};

 	\end{scope}

\begin{scope}[shift={(0.1,+0,+0)}]
\node[sourcevertex] at (0.58824, 0.00000, -1.66667)     {};
%
%
%
\end{scope}
%
%
\begin{scope}[shift={(.5,3,0)}]

		%
		\draw[->] (0, 0,0) -- (1, 0,0) node[anchor=west]{$v_1$};
		\draw[->] (0, 0,0) -- (0, 1,0) node[anchor=west]{$v_2$};
%
	\end{scope}
\end{tikzpicture}


		\caption{A cellular $1$-string and a cellular $0$-string on the example of \cref{fig:globe-poly}}
		\label{fig:string-poly}
	\end{figure}

	A \defn{cellular $k$-loop} is a cellular $k$-string $F_1,\dots,F_m$ with $F_i = F_j$ for some $i \neq j$.

	\subsection{A cellular $1$-loop in the $5$-simplex}\label{ss:1loop}

	We describe a $5$-simplex $P_5$ for which the canonical frame is admissible and induces a $1$-loop.
	Consider the $6$ points $p_1,\dots,p_6$ in $\R^5$ whose coordinates are the columns of matrix
	\[
	\begin{pmatrix}
		-3 & -2 & -1 & 1 & 2 & 3 \\
		-1 & 1 & 0 & 0 & 1 & -1 \\
		-1 & 1 & 0 & 0 & -1 & 1 \\
		0 & 0 & 1 & 1 & 0 & 0 \\
		1 & 1 & 1 & 0 & 0 & 0
	\end{pmatrix}.
	\]
	Since these are affinely independent, their convex hull~$P_5$ is a $5$-simplex, and one can easily see that the canonical frame of $\R^5$ is $P_5$-admissible.
	%
	This framed polytope contains the following cellular 1-loop of 2-faces:
	\begin{equation}\label{eq:1loop}
		[p_1p_2p_3],\  [p_2p_3p_6],\  [p_2p_6p_4],\  [p_4p_5p_6],\  [p_1p_4p_5],\  [p_1p_3p_5],\  [p_1p_2p_3].
	\end{equation}
	Consulting \cref{fig:counterexample}, it is straightforward to check that for each of the triangles~$t_i$, the edge $t_i \cap t_{i+1}$ lies in the $1$-target $\ta_1(t_i)$ of $t_i$ and in the $1$-source $\so_1(t_{i+1})$ of $t_{i+1}$.

	\begin{figure}[htpb]
		\centering
		%
\begin{tikzpicture}[auto, node distance=2cm, >=latex',
scale=1,
	point/.style = {draw, circle, fill = black, inner sep = 1pt}]

	\coordinate (a) at (-3,-1);
	\coordinate (b) at (-2,1);
	\coordinate (c) at (-1,0);
	\coordinate (d) at (1,0);
	\coordinate (e) at (2,1);
	\coordinate (f) at (3,-1);

	\draw[thick] (c) -- (f) -- (b) -- (d);
	\draw[line width = 3pt,white] (d) -- (a) -- (e) -- (c);
	\draw[thick] (d) -- (a) -- (e) -- (c);
	\draw[thick] (a) -- (b) -- (c) -- (a);
	\draw[thick] (d) -- (e) -- (f) -- (d);

	\foreach \i/\l in {a/p_1\ \ ,b/p_2,c/\ p_3,d/p_4,e/p_5,f/\ \ p_6}
	{
		\node[point,label={above:$\l$}] at (\i) {};
	}

	\draw[->] (4,-1)-- (4,0);
	\draw[->] (4,-1)-- (5,-1);
	\node[] at (5.5, -1) {$e_1$};
	\node[] at (4.5, 0) {$e_2$};
\end{tikzpicture}
%


		\caption{A cellular 1-loop in $P_5$ formed by 2-faces.
			It represents the image of the vertices of $P_5$ and some of its edges under the projection $\pi_2 \colon \R^5 \to \R^2$.}\label{fig:counterexample}
	\end{figure}

	\begin{remark}\label{r:P4}
		All $2$-faces involved in \eqref{eq:1loop} are also faces of the $4$-dimensional polytope $P_4 = \pi_4(P_5)$, which is a \textit{cyclic $4$-polytope} with $5$ vertices.
		Therefore, the $4$-polytope $P_4$ together with the canonical frame also has a cellular 1-loop.
		This example is minimal in dimension since we can prove that all framed $n$-polytopes for $n < 4$ have no cellular loops. (We prove that there cannot be $0$-loops nor $(n-2)$-loops.)
	\end{remark}

	\subsection{A cellular $2$-loop in the $6$-simplex}\label{ss:2loop}

	We now present a cellular $2$-loop on a framed $6$-simplex.
	It is a relative of the so-called \emph{mother of all examples} \cite[Sec.~7.1]{deloeraTriangulations2010}.
	In contrast with our previous example, the projections of the simplices involved in the loop do not overlap and all the vertices are preserved under the projection.

	Consider the $7$ points $q_0,q_1,\dots,q_6$ in $\R^6$ whose coordinates are given by the columns of the matrix~$Q$ and the frame~$B$ of~$\R^6$ given by the columns $v_1,\dots,v_6$ of the matrix~$V$ below
	\[
	Q=\begin{pmatrix}
		0 & 10 & 0 & 0 & 7 & 2 & 3 \\
		0 & 0 & 10 & 0 & 3 & 7 & 2 \\
		0 & 0 & 0 & 10 & 2 & 3 & 7 \\
		1 & 1 & 1 & 0 & 1 & 0 & 0 \\
		0 & 0 & 0 & 1 & 1 & 0 & 1 \\
		0 & 0 & 1 & 0 & 0 & 1 & 0
	\end{pmatrix},\qquad
	V=\begin{pmatrix}
		-1 & 2 & 1 & 0 & 0 & 0 \\
		1 & 4 & 1 & 0 & 0 & 0 \\
		-1 & -1 & 1 & 0 & 0 & 0 \\
		0 & 0 & 0 & 1 & 0 & 0 \\
		0 & 0 & 0 & 1 & 1 & 0 \\
		0 & 0 & 0 & 1 & 1 & 1
	\end{pmatrix}.
	\]
	The columns of $Q$ are affinely independent, and therefore form the vertex set of a simplex~$Q_6$.
	The frame~$B$ is $Q_6$-admissible, as it can be easily checked by computer, and the resulting framed $6$-simplex $(Q_6, B)$ has the following $2$-loop of 4-faces:
	\begin{multline}\label{eq:2loop}
		[q_0 q_1 q_4 q_5],\;  [q_0 q_1 q_3 q_4],\;  [q_0 q_3 q_4 q_6],\;  [q_0 q_2 q_3 q_6],\;  [q_0 q_2 q_5 q_6],\;  [q_0 q_1 q_2 q_5],\;  [q_0 q_1 q_4 q_5].
	\end{multline}
	Although checking that this is indeed a cellular loop can be done using a computer, it is instructive to understand the geometry of this example.
	Please refer to \cref{fig:counterexample2} as we proceed to present it.

	\begin{figure}[htpb]
		\centering
		\begin{tikzpicture}%
	[
%
%
%
x={(0.966340cm, -0.190271cm)},
	y={(0.257268cm, 0.714691cm)},
	z={(-0.000001cm, 0.673063cm)},
	xscale=.300000,
	yscale=.400000,
	back/.style={loosely dotted, thin},
	edge/.style={color=black, thick},
%
	facet/.style={draw},
	vertex/.style={inner sep=1pt,circle,draw=black,fill=black,thick}]
%
%
%
%
%
%
%
%
%
%
%
%

%
%
\coordinate (-3.00000, 3.46400, 12.00000) at (-3.00000, 3.46400, 12.00000);
\coordinate (-5.00000, -8.66000, 10.00000) at (-5.00000, -8.66000, 10.00000);
\coordinate (-5.00000, 8.66000, 10.00000) at (-5.00000, 8.66000, 10.00000);
\coordinate (-1.50000, -4.33000, 12.00000) at (-1.50000, -4.33000, 12.00000);
\coordinate (0.00000, 0.00000, 0.00000) at (0.00000, 0.00000, 0.00000);
\coordinate (10.00000, 0.00000, 10.00000) at (10.00000, 0.00000, 10.00000);
\coordinate (4.50000, 0.86600, 12.00000) at (4.50000, 0.86600, 12.00000);
%
%
%
%
\draw[edge,back] (-5.00000, 8.66000, 10.00000) -- (0.00000, 0.00000, 0.00000);
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
\draw[edge] (-3.00000, 3.46400, 12.00000) -- (-5.00000, -8.66000, 10.00000);
\draw[edge] (-3.00000, 3.46400, 12.00000) -- (-5.00000, 8.66000, 10.00000);
\draw[edge] (-3.00000, 3.46400, 12.00000) -- (-1.50000, -4.33000, 12.00000);
\draw[edge] (-3.00000, 3.46400, 12.00000) -- (4.50000, 0.86600, 12.00000);
\draw[edge] (-5.00000, -8.66000, 10.00000) -- (-5.00000, 8.66000, 10.00000);
\draw[edge] (-5.00000, -8.66000, 10.00000) -- (-1.50000, -4.33000, 12.00000);
\draw[edge] (-5.00000, -8.66000, 10.00000) -- (0.00000, 0.00000, 0.00000);
\draw[edge] (-5.00000, -8.66000, 10.00000) -- (10.00000, 0.00000, 10.00000);
\draw[edge] (-5.00000, 8.66000, 10.00000) -- (10.00000, 0.00000, 10.00000);
\draw[edge] (-5.00000, 8.66000, 10.00000) -- (4.50000, 0.86600, 12.00000);
\draw[edge] (-1.50000, -4.33000, 12.00000) -- (10.00000, 0.00000, 10.00000);
\draw[edge] (-1.50000, -4.33000, 12.00000) -- (4.50000, 0.86600, 12.00000);
\draw[edge] (0.00000, 0.00000, 0.00000) -- (10.00000, 0.00000, 10.00000);
\draw[edge] (10.00000, 0.00000, 10.00000) -- (4.50000, 0.86600, 12.00000);

%
%
%
%
\node[vertex, label={right:$q_5$}] at (-3.00000, 3.46400, 12.00000)     {};
\node[vertex, label={left:$q_3$}] at (-5.00000, -8.66000, 10.00000)     {};
\node[vertex, label={above:$q_2$}] at (-5.00000, 8.66000, 10.00000)     {};
\node[vertex, label={below:$q_6$}] at (-1.50000, -4.33000, 12.00000)     {};
\node[vertex, label={below:$q_0$}] at (0.00000, 0.00000, 0.00000)     {};
\node[vertex, label={right:$q_1$}] at (10.00000, 0.00000, 10.00000)     {};
\node[vertex, label={below:$q_4$}] at (4.50000, 0.86600, 12.00000)     {};
%
%

	\draw[->] (8,-6,8)-- (8,-6,10);
	\node[] at (9,-8,9) {$v_3$};
\end{tikzpicture}\qquad
		\begin{tikzpicture}[auto, node distance=2cm, >=latex', scale=.3,
	point/.style = {draw, circle, fill = black, inner sep = 1pt}]

	\coordinate (p0) at (0.0000, 0.0000);
	\coordinate (p1) at (10.00, 0.0000);
	\coordinate (p2) at (-5.000, 8.660);
	\coordinate (p3) at (-5.000, -8.660);
	\coordinate (p4) at (4.500, 0.8660);
	\coordinate (p5) at (-3.000, 3.464);
	\coordinate (p6) at (-1.500, -4.330);
 
	\fill[black!15] (p1) -- (p4) -- (p5) -- (p1);
	\fill[black!15] (p1) -- (p4) -- (p3) -- (p1);
	\fill[black!15] (p6) -- (p4) -- (p3) -- (p6);
	\fill[black!15] (p6) -- (p2) -- (p3) -- (p6);
	\fill[black!15] (p6) -- (p2) -- (p5) -- (p6);
	\fill[black!15] (p1) -- (p2) -- (p5) -- (p1);


	\draw[thick] (p1) -- (p2) -- (p3) -- (p1);
	\draw[thick] (p4) -- (p5) -- (p6) -- (p4);
	\draw[thick] (p1) -- (p5)-- (p2) -- (p6)-- (p3) -- (p4) -- (p1);




%
%
%
%
%
%
%
%
%

	\node[point,label={above:$q_0$}] at (p0) {};
	\node[point,label={right:$q_1$}] at (p1) {};
	\node[point,label={above:$q_2$}] at (p2) {};
	\node[point,label={below:$q_3$}] at (p3) {};
	\node[point,label={below:$q_4$}] at (p4) {};
	\node[point,label={above right:$q_5$}] at (p5) {};
	\node[point,label={left:$q_6$}] at (p6) {};


%
%
%
%
\end{tikzpicture}

		\caption{A cellular $2$-loop on $Q_6$.
			The convex hull of $\pi_3(Q_6)$ is depicted on the left.
			On the right we see $\pi_2(Q_6)$ and the edges more relevant in the loop (note that they are not the same as in the convex hull).}
		\label{fig:counterexample2}
	\end{figure}

	Since $\Span(v_1,v_2,v_3) = \Span(e_1,e_2,e_3)$ and $\Span(v_4,v_5,v_6) = \Span(e_4,e_5,e_6)$, the projection $\pi_3$ is given by forgetting the last three coordinates.
	The $2$-loop \eqref{eq:2loop} is apparent on $\pi_3(Q_6)$, depicted on the left of our figure.
	The vector~$v_3$ that determines the $2$-sources and $2$-targets goes in the direction from $q_0$ to the center of the equilateral triangles there.

	As the points $q_1,\dots,q_6$ are very close to being coplanar, it is somehow easier to understand the loop in the $2$-dimensional picture on the right.
	Here, $q_0$ has to be thought as being behind the plane spanned by the other points, and $v_3$ is perpendicular to this plane.

	The loop consists of the six tetrahedra arising as the cone over $q_0$ of each of the shaded triangles in the picture in the right.
	Topologically, they form a ``pinched'' solid torus where the interior circle has been collapsed to a point.
	For each tetrahedron, the facets pointing ``downwards'' towards $q_0$ are in the source, and those pointing ``upwards'' away from $q_0$ are in the target.
	For example, for the tetrahedron $[q_0, q_1, q_4, q_5]$, the source is the triangle $[q_0, q_1, q_5]$, and the target is formed by the triangles $[ q_1, q_4, q_5]$, $[q_0, q_1, q_4]$, and $[q_0, q_4, q_5]$.
	Similarly, for the tetrahedron $[q_0, q_1, q_3, q_4]$, the source are the triangles $[q_0, q_1, q_4]$ and $[q_0, q_1, q_3]$, and the target are the triangles $[q_0, q_3, q_4]$ and $[q_1, q_3, q_4]$.
	The other tetrahedra behave analogously.

	To check the loop, notice that the triangle $[q_0,q_1, q_4]$ is in the target of $[q_0, q_1, q_4, q_5]$ and in the source of $[q_0, q_1, q_3, q_4]$.
	The triangle $[q_0, q_3, q_4]$ is in the target of $[q_0, q_1, q_3, q_4]$ and in the source of $ [q_0, q_3, q_4, q_6]$.
	And so on.

	\begin{remark}
		It is not hard to prove that if a face or a vertex figure of a polytope~$P$ has a frame inducing a loop, then so does~$P$. Combining our counterexamples with these observations we see that every simple or simplicial polytope of dimension $\geq 6$ admits a frame inducing a loop.
	\end{remark}

	\section{Loop inevitability}\label{s:inevitability}

	The goal of this section is to construct polytopes for which \textbf{every} admissible frame induces a cellular loop.
	The construction is too technical and involved to fit in here, but we will give some indications on the key steps of the proof.

	Our main idea is to transform our polytopes via an operation called \defn{flattening} that enlarges the space of loop-inducing frames. And then combine several reflected copies of a flattened polytope, via an operation called \defn{squashing}, to cover the full space of admissible frames.

	Let $P$ be a polytope and $B$ a frame inducing a loop on~$P$.
	Then there is an open neighborhood of~$B$ in the space of frames that contains $P$-equivalent frames to $B$.
	The flattening operation edits~$P$ so that $B$ still induces a loop, but makes the set of equivalent frames become arbitrarily large.

	\begin{lemma}
		Let $P$ be a framed polytope in $\R^d$ with orthonormal frame $B = \set{v_1,\dots, v_d}$.
		For any $\varepsilon \defeq (\varepsilon_1,\dots,\varepsilon_d) \in \R^d$, let $\Phi_\varepsilon \colon v_i \mapsto \varepsilon_i v_i$ be the map that scales the $v_i$ coordinate by~$\varepsilon_i$.

		For every $0 < \delta < 1$ there is a positive $\varepsilon \in \R_{>0}^d$ such that if
		 $B' = \set{v_1',\dots,v'_d}$ is an orthonormal frame of $\R^d$ with ${\sprod{v_i}{\tilde v_i'}} > \delta$
		for all $1 \leq i \leq d$, where $\tilde v_i'$ is the projection of $v_i'$ to~$V_i = \Span(v_1,\dots,v_i)$ along $\Span(v_{i+1}',\dots,v_d')$ rescaled so that it is a unit vector\footnote{The fact that this projection is well defined follows inductively from the condition ${\sprod{v_i}{\tilde v_i'}} > \delta$.},
		then the frames $B$ and $B'$ are $\Phi_\varepsilon(P)$-equivalent.
	\end{lemma}

	\cref{fig:flattening} represents a regular hexagon $P$, for which the canonical basis $(v_1,v_2)$ and the basis $(v_1,v_2'\coloneqq(1,1))$ induce distinct globular structures.
	However, for $\varepsilon \coloneqq (1,\frac 1 4) \in \R^2$  both bases are $\Phi_\varepsilon(P)$-equivalent.

	\begin{figure}[h!]
		\centering
		\begin{tikzpicture}[auto, scale=1.4, point/.style = {draw, circle, fill = black, inner sep = 1pt}]
	\begin{scope}[shift={(4,-.5)}]
		%
		%
		\fill[RedViolet!20] (0,0) --  (0.9*0.918,0.9*0.397) arc(23.36:156.63:0.9) -- cycle;
		\fill[RoyalBlue!40] (0,0) --  (0.95*0.5,0.95*0.866) arc(60:120:0.95*1) -- cycle;

		\draw[dashed,RedViolet] (-0.918,0.397) -- (0,0) -- (0.918,0.397);
		\draw[dashed,RoyalBlue] (-0.5,0.866) -- (0,0) --  (0.5,0.866);

		%
		\draw[->] (0, 0) -- (1, 0) node[anchor=west]{$v_1$};
		\draw[->] (0, 0) -- (0, 1) node[anchor=west]{$v_2$};
		\draw[->, dashed] (0, 0) -- ( 0.707 , 0.707) node[anchor=west]{$v_2'$};
		%
		%
		%


		%


		%
	\end{scope}

	%
	\coordinate (a) at (1, 0);
	\coordinate (b) at (0.5, 0.866);
	\coordinate (c) at (-0.5, 0.866);
	\coordinate (d) at (-1, 0);
	\coordinate (e) at (-0.5, -0.866);
	\coordinate (f) at (0.5, -0.866);

	%
	\coordinate (a') at (1, 0.25*0);
	\coordinate (b') at (0.5, 0.25*0.866);
	\coordinate (c') at (-0.5, 0.25*0.866);
	\coordinate (d') at (-1, 0.25*0);
	\coordinate (e') at (-0.5, -0.25*0.866);
	\coordinate (f') at (0.5, -0.25*0.866);

	\draw[thick,RoyalBlue] (a)--(b)--(c)--(d)--(e)--(f)--(a);

	\draw[thick,dashed,RedViolet] (a')--(f')--(e')-- (d')--(c')--(b')--(a') ;

	\foreach \i in {a,b,c,d,e,f}
	{
		\node[point] at (\i) {};
		\node[point] at (\i') {};

	}
\end{tikzpicture}
		\caption{A regular hexagon $P$ for which the bases $(v_1,v_2)$ and $(v_1,v_2')$ are not equivalent, and a flattened version $\Phi_\varepsilon(P)$ for which they are.	The set of vectors $w$ for which $(v_1,w)$ is $P$-equivalent to $(v_1,v_2)$ is depicted with a blue cone, and the set of those that are $\Phi_\varepsilon(P)$-equivalent is depicted by a larger red cone.
		}
		\label{fig:flattening}
	\end{figure}

	The observation now is that, if we take $\varepsilon$ conveniently, then every frame $B$ will induce a loop in some reflection of $\Phi_\varepsilon(P)$ by the coordinate hyperplanes.
	The idea is to take a copy of each possible reflection of $\Phi_\varepsilon(P)$ to construct the desired polytope~$\tilde P$.
	This does not work directly, because we need the faces of the reflections of $\Phi_\varepsilon(P)$ involved in the loops to be also faces of the convex hull of all these reflected copies.
	Thus, one has to be careful on where and how to place the reflected copies.
	In our proof we do so by introducing a new operation on polytopes that we call \defn{squashing}, which is closely related to \emph{connected sums} (see, for example,~\cite{RichterGebert1999}).
	And then squashing on top of faces of a barycentric subdivision of a simplex.

	\begin{lemma}
		Let $P \subset \R^d$ be a framed $d$-polytope with a cellular $k$-loop for some $k \leq d-2$.
		If all the faces in this loop are faces of faces in~$\ta_{d-1}(P)$, then there is a $d$-polytope $\tilde P$ such that every $\tilde P$-admissible frame induces a $k$-loop on~$\tilde P$.
	\end{lemma}

	We conclude by noting that the framed polytope $P_4$ defined in \cref{r:P4} together with the loop \eqref{eq:1loop} satisfy the condition of this lemma, from which we conclude the following.

	\begin{theorem}
		There is a $4$-polytope for which every admissible frame induces a cellular loop.
	\end{theorem}

	\section{Canonically framed cyclic simplices}\label{s:cyclic}

	We now turn to an infinite family of framed polytopes with no loops.
	Consider the \defn{moment curve} $\R \to \R^d$ given by $v_t=(t,t^2,\dots,t^d)$.
	A \defn{cyclic simplex} $\CP(d)$ is the convex hull of $d+1$ distinct points in the moment curve.
%

	A polytope $P \subset \R^d$ is said to be \defn{canonically framed} if it is considered with the canonical frame $\set{e_1,\dots,e_d}$ which is assumed $P$-admissible.

	It was announced by Kapranov and Voevodsky \cite[Thm. 2.5]{kapranov1991polycategory} that the canonically framed cyclic simplices recover Street's pasting diagram structure on standard simplices \cite{street1987orientals}.
	We were able to verify this claim after replacing the canonical frame with $\set{e_1,-e_2,e_3,-e_4,\dots}$.

	We can extend the absence of cellular loops to all canonically framed cyclic polytopes.
	A \defn{cyclic polytope} $\CP(n,d)$ is the convex hull of $n$ distinct points in the image of the the moment curve in $\R^d$, and we have the following.

	\begin{theorem}
		All canonically framed cyclic polytopes have no cellular loops.
	\end{theorem}

	\section{Canonically framed Gaussian simplices}\label{s:random}

	We now measure how special the absence of cellular loops is on cyclic simplices compared to random embeddings.
	A \defn{Gaussian $d$-simplex} is the convex hull of $d+1$ independent random points in~$\R^d$, each chosen according to a $d$-dimensional standard normal distribution.

	\begin{theorem}
		 For every $k \geq 1$, the probability that the canonically framed Gaussian $d$-simplex has a $k$-loop tends to~$1$ as~$d$ tends to~$\infty$.
	\end{theorem}

	Our proof uses very few hypothesis on the distribution, which could be further relaxed.
	Mainly that it is supported on $\R^d$ and that the vertices are independently sampled.
	Therefore, for most usual distributions of random simplices the same kind of result should hold.

	We obtain similar results if instead of fixing the frame and choosing the simplex, we fix the simplex and chose the frame.
	In view of \cref{cor:equivalentorthogonal}, a reasonable approach is to consider a random orthonormal frame chosen with respect to the Haar measure.
	Let the \defn{standard $d$-simplex} be the convex hull of the canonical basis of $\R^{d+1}$.
	%

	\begin{theorem}
		For every $k \geq 1$, the probability that a uniform random orthonormal frame induces a $k$-loop on the standard $d$-simplex tends to~$1$ as~$d$ tends to~$\infty$.
	\end{theorem}

	\section{Framed simplices and oriented matroids}\label{s:matroids}

	A \defn{chirotope} is a non-zero alternating map $\chi \colon \set{1,\dots,n}^d \to \{+,-,0\}$ satisfying the \defn{chirotope axioms} \cite[Def.~3.5.3]{BLSWZ}.
	We will consider those that are \defn{realizable}, meaning that they are associated to a vector configuration, and hence omit the general combinatorial definition.
	We refer to \cite{BLSWZ} for a comprehensive reference on the topic.
	The \defn{chirotope} associated to a vector configuration  $V = (v_1,\dots,v_n)\in \R^{d \times n}$ is the map
	\begin{align*}
		\chiro[V]  \colon \set{1,\dots,n}^d & \to \{+,-,0\} \\
		(i_1,\dots,i_d) & \mapsto \sign(\det(v_{i_1},\dots,v_{i_d})).
	\end{align*}
	A realizable chirotope is called \defn{acyclic} if all the vectors of the configuration lie in a common half-space; and \defn{uniform} if $\chi(i_1,\dots,i_d) \neq 0$ whenever $i_1,\dots,i_d$ are pairwise distinct.

	A realizable chirotope depends on a frame for the ground vector space, as an orientation reversing change of basis results in a global sign change for the chirotope.
	An \defn{oriented matroid} can be defined as an equivalence class  $\pm\chi = \{\chi,-\chi\}$  of chirotopes up to global reorientation \cite[Prop.~3.5.2 and Thm.~3.5.5]{BLSWZ},
	where $-\chi$ denotes the chirotope obtained from $\chi$ by reversing all the signs.
	Despite this subtle difference, the two terms \emph{chirotope} and \emph{oriented matroid} are often used interchangeably in the literature.

	When we restrict to framed simplices $(\gsimplex_d,B)$, the relation between globular structures and chirotopes is quite satisfying as the next statement shows.

	\begin{lemma}
		Let $(\gsimplex_d,B)$ be a framed simplex with vertex set $P=\{p_0,\dots,p_d\}$.
		The globular structure on $\gsimplex_d$ induced by $B$ determines and is determined by the chirotopes of the point configurations $\pi_k(P)=(\pi_k(p_0),\dots,\pi_k(p_d))\in\R^{k\times (d+1)}$ for all $0 \leq k \leq d$.
	\end{lemma}

	The core of this correspondence lies in the fact that the orientation of a facet~$F$ of a simplex~$S$ in a codimension~$1$ projection can be deduced from the orientation of $S$ and knowing whether $F$ belongs to the source or the target of~$S$. We can therefore compute the chirotope of $\pi_k(\gsimplex_d)$ from the globular structure and the chirotope of $\pi_{k+1}(\gsimplex_d)$; and conversely, the $k$-sources and $k$-targets can be found by comparing the chirotopes of $\pi_k(\gsimplex_d)$  and $\pi_{k+1}(\gsimplex_d)$.

	\defn{Flag matroids} were introduced in \cite{BorovikGelfandWhite2003}, and also admit an oriented version.
	A \defn{flag chirotope}\footnote{In the literature, they are usually called \defn{oriented flag matroids}.
	However, we think that the name \defn{flag chirotopes} is more precise, in view of the (subtle) difference between the classical definitions.}
	is defined as a sequence $(\chi_1,\dots,\chi_s)$ of chirotopes related by strong maps (also called quotients), see \cite[Example above Thm.~D]{JarraLorscheid2022} and \cite[Def.~4.1]{BoretskyEurWilliams2022}, and also \cite[Def.~3.5.3, Thms~3.5.5 and~3.6.2, and Def.~7.7.2]{BLSWZ} for more details on the definition and the relation with ordinary oriented matroids.

	A \defn{realizable full flag chirotope} is a sequence of chirotopes $(\chi_0,\dots,\chi_d)$, where $\chi_k$ is the chirotope of the vector configuration $\{\pi_k(e_1),\dots, \pi_k(e_d)\}$, $\{e_1,\dots,e_d\}$ is the canonical frame of~$\R^d$, and $\pi_k:\R^d\to V_k$ is the associated system of projections of another frame~$B$ of~$\R^d$ (see \cite[Sec 1.7.5]{BorovikGelfandWhite2003}).
	We will say that a flag chirotope $(\chi_0,\dots,\chi_d)$ is \defn{uniform} (resp. \defn{acyclic}) if $\chi_k$ is uniform (resp. acyclic) for $0\leq k\leq d$.

	\begin{theorem}
		Globular structures of framed simplices are in bijection with uniform acyclic realizable full flag chirotopes.
	\end{theorem}

	\section{Universality}\label{s:universality}

	We now study the moduli space of frames under the equivalence relation defined by globular structures.
	The \defn{realization space} of a globular structure on a polytope~$P$ induced by a frame~$B$ is the set of $P$-admissible frames that are $P$-equivalent to~$B$.
	Our main result in this section is that $\gsimplex_d$-equivalence classes of $\gsimplex_d$-admissible frames are universal in the sense of \cite{Mnev1988}.
	To explain this statement we introduce the following notions.
	A \defn{primary basic semi-algebraic} set is a subset of $\R^d$ defined by integer polynomial equations and strict inequalities.
	Two semi-algebraic sets $S,S'$ are called \defn{stably equivalent} if they lie in the same equivalence class generated by stable projections and rational equivalence. Here, a projection $\pi \colon S\to S'$ is called \defn{stable} if its fibers are relative interiors of
	non-empty polyhedra of the same dimension defined by polynomial functions on $S'$ (see~\cite[Section~2.5]{RichterGebert1999} for details, and \cite{Verkama2023} for the constant dimension constraint).
%

	\begin{theorem}\label{thm:simplex-universality}
		For every open primary basic semi-algebraic set $S$ defined over $\Z$ there is a globular structure on some $\gsimplex_{d}$ whose realization space is stably equivalent to~$S$.
	\end{theorem}

	 \acknowledgements{The authors would like to thank Simon Forest, Amar Hadzihasanovic, Mikhail Kapranov, Viktoriya Ozornova, and Eva Philippe for insightful discussions related to this work.
	 A.M.-M. is also grateful for the hospitality of both the Max Planck Institute for Mathematics and the Universit\'e Sorbonne Paris Nord.
	 G.L.-A. would like to thank the Centre for Geometry and Topology in Copenhagen where part of this work was carried out.

	%
	%
	\sloppy
	\printbibliography
%
\end{document}
