{'fraction_non_alphanumeric': 0.04366516240657831, 'fraction_numerical': 0.010523874926422061, 'mean_word_length': 4.477674645823156, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 48, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 24, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The Orbifolder: A Tool to study the Low Energy Effective Theory of Heterotic Orbifolds

The orbifolder is a program developed in C++ that computes and analyzes the low-energy effective theory of heterotic orbifold compactifications. The program includes routines to compute the massless spectrum, to identify the allowed couplings in the superpotential, to automatically generate large sets of orbifold models, to identify phenomenologically interesting models (e.g. MSSM-like models) and to analyze their vacuum-configurations.


Introduction
String theory is a candidate for a consistent unified quantum theory of gravity and gauge interactions and could thus provide us with an ultraviolet completion for models of particle physics. The search for 4dimensional string vacua resembling the standard model (SM) (or its supersymmetric extension (MSSM)) is therefore one of the central questions in string theory research. Over the years, a wide landscape of 4dimensional string models has emerged and it remains to be seen how particle physics phenomena can be incorporated within the scheme of string theory. Some hints point to a unification of gauge couplings within the framework of exceptional groups (as e.g. E 8 ) but a direct road from strings to particle physics has not yet been identified. It is perhaps the time to step back, collect and classify existing model constructions and try to identify properties relevant for a description of nature.
Here we present and analyze a specific approach that was studied already in the 1980s and has led to interesting results since then: orbifold compactification [1,2,3] of the heterotic strings [4,5]. The reason for the success of this approach is "computability" paired with geometric intuition. Exact tools of conformal field theory are here at our disposal [6,7] that are usually not available in approaches based on compactification on smooth manifolds. Besides, in particular E 8 × E 8 as a gauge group allows a perturbative inclusion of the standard model gauge group (as well as possibly grand unification).
A toroidal orbifold is flat with the exception of a number of fixed points or fixed tori. It gives rise to a picture called the heterotic brane world scenario [8,9,10]: fields can either live in the 10-dimensional bulk (untwisted sector) or can be localized at these fixed points or fixed tori (twisted sectors). The relative location of these fields as well as the local gauge structure determines many properties of the 4-dimensional string vacua and is the source of geometric intuition for model building. The orbifold point is a point of enhanced symmetries (in the moduli space of compactification) and those symmetries might be relevant for a description of nature. Models of particle physics seem to require many (discrete) symmetries, e.g. flavour symmetries or symmetries to prevent too fast proton decay. Some of these symmetries could be slightly broken to provide us with small parameters relevant for the description of hierarchies as e.g. observed in the spectrum of quark and lepton masses. This supports our hope that orbifold compactification is not just an approximation with increased "computability", but that it provides a realistic compactification: nature might have chosen to live close to the orbifold point with enhanced symmetries.
Explicit orbifold model constructions in the last 5 to 10 years have been extremely successful [11,12,13,14] (see [15,16] for earlier reviews). Many of the properties of particle physics can be incorporated in the scheme. This includes grand unification, gauge-Yukawa unification, satisfactory Yukawa textures, solutions to the µ-problem, the creation of hierarchies and a successful incorporation of neutrino Majorana masses. Discrete symmetries are identified to solve the flavour problem and to avoid too fast proton decay. These properties have been identified in the so called Minilandscape (based on the Z 6 -II orbifold) [17,18,19] and subsequent work [20,21,22,23,24,25,26,27,28,29,30,31,32,33].
The search for such models requires a computer assisted scan that incorporates the rules for a consistent string theory construction (as e.g. modular invariance). The purpose of this work is to make the tools and techniques available to the public. We hope that this will give more people the opportunity to contribute to this exciting field of model constructions.
We present the orbifolder, a program developed in C++ that allows the calculation of the low-energy spectrum of heterotic orbifold constructions. The program includes routines to compute the massless spectrum and to identify the allowed couplings of the superpotential. It allows the construction of arbitrary orbifold models, the identification of phenomenologically interesting models and a classification of their vacuum configurations.
The orbifolder can be considered in some aspects as the stringy analog of programs such as SoftSusy, SuSpect and SPheno: The latter are devoted to the detailed computation of particle spectra, interactions and phenomenological quantities, using as input a high scale supersymmetric model and imposing low-energy constraints. Analogously, the orbifolder takes as a starting point the 10D heterotic strings and, provided some geometric input describing the features of the six compactified dimensions, computes the (massless) spectrum, interactions and symmetries of the resulting lower-energy effective 4D field theory. After a short introduction to heterotic orbifold compactification in Section 2, we explain how to download and install the C++ program in Section 3. Section 4 discusses the explicit recipe to run the program, while in Section 5 we conclude and give an outlook for future research. Technical details are relegated to the appendices and to the webpage [39, §Complementary notes].

Heterotic Orbifold Compactifications
In this section we give a brief introduction to heterotic orbifolds, in order to introduce our notation and conventions used in the orbifolder. For more details on orbifold compactifications, we refer to the reviews [15,16,11,13,14].
In the context of heterotic string compactifications, we define an orbifold as the quotient of six-dimensional real space Ê 6 divided by the so-called space group S , where the quotient is taken using the equivalence relation X ∼ gX for all g ∈ S and X ∈ Ê 6 . More specifically, the space group is chosen to consist of two parts: • discrete rotations that form the so-called point group P. For simplicity, we choose P to be Abelian. To obtain N = 1 supersymmetry in 4D, P is either M or M × N generated by rotation matrices θ and ω, where we use ω = 1 for M . These matrices can be represented by so-called twist vectors v 1 and v 2 that give the three rotational phases in the three complex planes and the sum over all entries integer to ensure N = 1. For example, v 1 = 0, 1 3 , 1 3 , − 2 3 and v 2 = 0 for the 3 orbifold.
• translations generated by the vectors e α ∈ Ê 6 , for α = 1, . . . , 6. They form a 6D lattice denoted by Γ and hence define a six-torus. Elements of P must map the lattice Γ to itself.
In detail, an element of the space group is of the form g = θ k ω l , n α e α ∈ S , where k, l ∈ , n α ∈ (or in some cases n α ∈ É) and summation over α = 1, . . . , 6. It acts on X ∈ Ê 6 as gX = θ k ω l X + n α e α . Using these definitions, we can deal with all 6D Abelian and toroidal orbifolds including the cases of roto-translations and freely acting involutions (see e.g. Ref. [34]). Due to modular invariance, the geometric action of the space group S has to be embedded into the gauge degrees of freedom of the heterotic string, denoted by X I , I = 1, . . . , 16 in the bosonic formulation. We restrict ourselves to the case of shift embedding, where θ ֒→ V 1 , ω ֒→ V 2 and e α ֒→ W α for α = 1, . . . , 6.
Then, the action of S on X ∈ Ê 6 induces an action on X I as where I = 1, . . . , 16. The vectors V 1 , V 2 and W α are called shifts and Wilson lines, respectively. They are constrained by modular invariance [2,35,36], e.g.
where M is the order of M and N α the order of W α . The combined group formed by the space group and its action on the gauge degrees of freedom is called the orbifold group.
From a model-building standpoint, we have now introduced all the input data to define a heterotic orbifold model: the space group S (consisting of the point group P and the lattice Γ) and its embedding as shifts V 1 , V 2 and Wilson lines W α .
We close this section with a very brief summary of the construction of massless spectra of heterotic orbifolds. Given the input data, one distinguishes between two kinds of closed (and massless) strings on the orbifold: first of all ordinary closed strings, also called untwisted strings, being the remnants of the 10d E 8 ×E 8 or SO(32) vector multiplet and the gravity multiplet. Secondly, there are closed strings from the twisted sectors which close only up to the action of the orbifold group. To construct them, one needs to identify the inequivalent non-trivial space group elements as the constructing elements of twisted strings: i.e. for g ∈ S one can define a twisted boundary condition X(τ, σ + π) = gX(τ, σ) on the string world-sheet. Then, using standard CFT techniques, the equations for massless right-and left-movers with boundary condition g read q + v g where p is from the E 8 × E 8 or Spin(32)/ 2 weight lattice, q from the vector or spinor weight lattice of SO (8), δc denotes the shift in the zero-point energy andÑ the number operator of left-moving oscillators. Furthermore, we define the local twist v g = kv 1 + lv 2 and the local shift V g = kV 1 + lV 2 + n α W α . In the final step, one builds massless states as tensor products of massless right-and left-movers such that they are invariant under the full orbifold action, i.e.
whereα denotes possible oscillator excitations. We define the shifted momenta q sh = q + v g and p sh = p + V g , where p sh describes the transformation properties under gauge transformations. The states Eq. (4) correspond to massless fields of the 4D effective field theory. They carry gauge charges (from p sh ), discrete R charges, modular weights (from q sh and possible oscillator excitations) and discrete non-R charges (from the constructing element g ∈ S ).

Download and Installation
The minimal requirements for compiling the orbifolder are the Boost C++ Libraries version ≥ 1.0 [37] and the GNU Scientific Library (GSL) version ≥ 1.9 [38]. All components should come preinstalled on a standard Linux distribution. If this should not be the case, they can easily be installed.
On a yum-based distribution like e.g. Fedora, the command "yum -y install gsl gsl-devel boost boost-devel" will install the corresponding libraries (recommended). Alternatively, one can also directly install from source or use the other download options available [37,38].
The orbifolder is free software under the copyleft of the GNU General Public License and can be downloaded from [39]: http://projects.hepforge.org/orbifolder/ To install the program, download the file orbifolder-1.0.tgz to a directory of your choice, open a shell and enter the following commands at the prompt: Note that the version number "1.0" may change over time and should be substituted accordingly. The first line unpacks the tar-ball and creates a subdirectory structure with the source code. The second line changes to the installation directory. The third line starts the configuration script that checks system requirements and generates the Makefile. The fourth line compiles the code, and finally the fifth line installs it on your system. After successful compilation and installation, the main program (named orbifolder) will be available in the current directory. We have disabled custom installation using the --prefix switch in the configuration script. The main program orbifolder can simply be copied to the directory of the user's choice by the standard shell commands. Detailed installation instructions can also be found in the README file in the installation directory and on the website [39].
We have tested the installation process on • a 32-bit system running Linux Ubuntu 11.04 with Boost 1.42 and GSL 1.14, • a 64-bit system running Linux SuSE 11 with Boost 1.36 and GSL 1.11, • a 64-bit system running Linux Fedora 15 with Boost 1.46 and GSL 1.14, and ascertained that our code compiles correctly. Should there arise any problems during the installation, we request that the user send us the file config.log and the output of the make command by email (orbifolder@projects.hepforge.org).

How to run the program
There are three main ways to gain access to the orbifolder: through the prompt, through a web interface and directly through the C++ source code. In the following we will present them in detail.

The prompt
The orbifolder can be controlled using a Linux-style command line called the prompt. The prompt offers an interactive access to almost all variables and functions of the orbifolder. It has the structure of a file system where orbifold models appear as directories. In the following we explain how to start and use the prompt.

How to get started
We begin with a small tutorial, see Tab. 4 in the additional material [39, §Complementary notes] for a sample input and output. In general, the prompt can be started using the command ./orbifolder or ./orbifolder [model file]. In the former case, no model is loaded automatically. In the latter case, the details of a model contained in the plain-text-based model file are loaded (Further properties of model files are explained in Section 4.4.2). As an example, run the program using the command ./orbifolder modelZ3.txt (5) with parameter modelZ3.txt in order to load the standard embedding model of the 3 orbifold from this file. Having started the program, one enters the prompt in its main directory />. The command dir (6) lists all commands and subdirectories of the current directory. In our example, there is one subdirectory in the main directory /> called Z3StandardEmbedding which corresponds to the 3 model loaded. In general, a (sub-) directory A can be accessed using the command cd A. In our example, cd Z3StandardEmbedding (7) results in the output /Z3StandardEmbedding> from where one can access, analyze or change the details of the 3 standard embedding model. Again, type in the command dir to see all commands and subdirectories of the current directory. For all orbifold model directories there are five subdirectories, /model>, /gauge group>, /spectrum>, /couplings> and /vev-config>, containing commands of the respective category: Again, one can access these directories using the cd command. For example, try cd gauge group to enter the subdirectory /gauge group> and use the commands print gauge group and print simple roots to see the gauge group (E 6 × SU(3) × E 8 ) and (a choice of) the corresponding simple roots. In order to go back one directory one uses the command cd .. at the prompt. Next, try the subdirectory /spectrum> and use the command print summary to get a summary table of all massless matter fields. The command cd ∼ is used to go back to the main directory />. Further standard commands of the prompt are described in Tab. 1; see also Appendix B for a glossary of commands.
command description dir display commands and subdirectories of the current directory cd A change the current directory to A (if A exists) cd .. go back one directory cd ∼ go back to the main directory /> exit exit the program if no process is running; use the parameter orbifolder to enforce exit (also inside a script) Table 1: Some standard commands in the prompt.

How to create new orbifold models
Being in the main directory /> of the prompt new orbifold models can be accessed basically in three ways: • load orbifolds(Filename): Load orbifold models from a model file. For example, load the 6 -II orbifold MSSM of [40] using the command load orbifolds(modelBHLR.txt). • create random orbifold from(A). See below.
Orbifold models can be created randomly by using the command create random orbifold from(A) (9) in the main directory />. The parameter A must be either the name of an existing (loaded or previously created) orbifold model or * for any existing orbifold model in the orbifolder. The command starts a new process that runs in the background so that one can continue to work with the prompt (see Appendix B.1.5 for more details on processes). One can specify several optional parameters: • if(...): Specify the desired properties of the model: inequivalent in order to choose only models with inequivalent spectra and SM, PS or SU5 for models with a (net) number of X generations of Standard Model (SM), Pati-Salam (PS) or SU(5) gauge group plus vector-like exotics, where X is 3 by default and can be changed using the parameter Xgenerations; c.f. the command analyze config in Appendix B.2.6.
• save to(Filename): Save the models with the desired properties to a model file. • #models(X): Define how many models (with the desired properties, if specified) shall be created randomly. Use #models(all) to create as many models as possible. If #models(X) is not used, only one model shall be created.
• print info: Print a short summary of the spectrum immediately when a new model with the desired properties has been found.
• load when done: Load the created models into the orbifolder after the process has finished.
• do not check anomalies: Use this parameter to speed up the process.
• compare #couplings of order(X): If only inequivalent models are saved, this parameter refines the comparison between two models: compare in addition the number of all superpotential couplings up to the specified order X. Slows down the process considerably.

Examples.
A typical example of how to use this command looks like create random orbifold from(Z3StandardEmbedding) if(inequivalent) (10) save to(Z3NewModels.txt) use(1,1,0,0,0,0,0,0) #models(10) print info executed from the main directory />. In this case a new process is started that constructs new 3 orbifold models using both shifts (i.e. V 2 = 0) but no Wilson lines from model Z3StandardEmbedding, saves only inequivalent models to a model file named Z3NewModels.txt, prints a brief summary of each new model and stops after creating ten inequivalent models. In a second example, ten random models of SM (Standard Model) type are created starting from the 6 -II orbifold MSSM of [40] by using the command save to(Z6IINewMSSMModels.txt) use(1,1,1,1,1,1,0,0) #models (10) print info load when done in the main directory />. The parameter use(1,1,1,1,1,1,0,0) specifies that only the Wilson lines W 5 and W 6 are created randomly, i.e. the shifts and other Wilson lines are taken from the original model. Furthermore, only inequivalent standard models (SM) are printed, saved to file Z6IINewMSSMModels.txt and finally loaded into the orbifolder after the process has finished. Note that these MSSM models should be part of the Mini-Landscape [17,19].

The web interface
The orbifolder can also be accessed through a user-friendly web interface. The orbifolder on-line makes extensive use of the prompt explained in Section 4.1 rendering it available to any user with access to an internet browser, such as Mozilla Firefox version ≥ 3.6, Google Chrome version ≥ 2.1, and Internet Explorer ≥ 8.0. Consequently, the program is also available to users of all kinds of smartphones.
One of the advantages of the web interface is that one does not need to install any program on the local computer to be able to use most of the functions of the orbifolder. Another advantage is that it can be executed from platforms that work with the most popular operating systems (without further auxiliary applications): Windows, Linux and Mac.
On the less bright side, one shortcoming of this version is that it is not recommended to execute timeconsuming instructions since short interruptions in the internet service may affect the results. Furthermore, a command running during more than 60 minutes is disabled automatically to avoid overload of the server. Finally, for security reasons, commands involving file manipulation are extremely limited. Specifically, the parameters and commands @begin/@end print to file(Filename), save to(Filename), load/save couplings(Filename), load/save labels(Filename) are disabled.
The orbifolder on-line can be used on our main page [39] http://projects.hepforge.org/orbifolder/ which redirects to any of our mirror servers. To gain access, you must click on the link orbifolder on-line. This starts an orbifolder session on the selected server. The new page consists of three parts: • History: The result of the latest instructions is shown. The button download history provides an RTF file containing the full history, i.e. not only the result of the latest instructions, but the result of all the commands used during the current session. The user can resize this window.
• List of Commands: This is the input area, where the commands of the prompt are typed. To execute them, it is necessary to click on the button execute commands. An additional help in this section is the button upload commands. This button can be used when files (not larger than 100Kb) in plain-text format containing (lists of) admissible commands have been prepared. The button download commands provides an RTF file containing the list of all the commands typed during the active orbifolder session.
Lists of useful commands and their use is provided in Section 4.1 and Appendix B.
• Help: The bottom part contains a list of all available commands for the current directory. Each command in the displayed list is a link to a more precise description of its use.
To terminate an orbifolder on-line session, it suffices to click on the upper button EXIT. The buttons provided on the resulting page allow the user to download the full history of the current session and the complete list of successfully executed commands.
Occasionally, errors in the input data may cause the orbifolder to crash. In those cases, the web interface shall close your session, giving you the opportunity to download the list of instructions (button download commands) to be used if you restart the orbifolder. Please, make sure that the downloaded list of commands does not contain the instructions that led to the failure of the program. We encourage users to contact the authors reporting any failure in the program, preferably by using the link contact us on the main page of the web interface.

The C++ source code
The orbifolder is written in C++, distributed over several files. Many physical quantities, as briefly introduced in Section 2, have been encapsulated into classes, for example • CSpaceGroup for the space group S and CSpaceGroupElement for its elements g ∈ S , • CTwistVector for the twists v i and CShiftVector for the corresponding shifts V i , • CWilsonLines for the set of six Wilson lines W α , • COrbifoldGroup for the orbifold group, • CMasslessHalfState for finding massless left-and right-movers, i.e. solutions to Eq. (3), • CHalfState for the weights of CMasslessHalfState sorted with respect to their transformation properties under the elements of the centralizer, • CState for orbifold-invariant tensor products of massless left-and right-movers, see Eq. (4), • COrbifold for the full orbifold compactification, • CField for a field of the effective 4-dimensional theory, • CMonomial for (gauge invariant) monomials of fields corresponding to D = 0 solutions, and many more. In addition there are technical classes. For example, there are several classes devoted to group theory (like dynkin, freudenthal, gaugeGroupFactor and gaugeGroup), the class CAnalyseModel contains functions to analyze models for their phenomenological properties, the class CPrint contains all printing commands and the class CPrompt contains the source code of the prompt. As there are in total more than 40 classes we cannot explain them in detail here. We give further details of some of the more important classes in Appendix A and a short example program in Appendix A.1.

Files defining an orbifold model
There are two files that define an orbifold model: i) The geometry file contains, as the name suggests, the geometrical information about the orbifold, such as the space group, and ii) the model file contains shifts and Wilson lines, i.e. the action of the orbifold on the gauge sector of the heterotic string. In the following we give some more details. Examples are given in the additional material [39, §Complementary notes].

The geometry file
The geometry file basically contains information about • the space group, i.e. the order of the twist(s), the six lattice vectors of Γ and the generators of the space group, • the discrete (R and non-R) symmetries of the orbifold (important for the computation of allowed superpotential couplings), • the inequivalent fixed points specified by their constructing elements θ k ω l , n α e α and

The model file
The model file contains a list of orbifold models, where each model is specified by • the name of the model (will be used as the name of the corresponding directory in the prompt), • the name of the geometry file, • the type of heterotic string (i.e. Spin(32)/ 2 or E 8 × E 8 ), • two shifts V 1 , V 2 (where the V 2 = 0 for M orbifolds), • six Wilson lines W α , • optionally, the parameters of (generalized) discrete torsion a, b α , c α and d αβ as defined in Ref. [36], • optionally, some of the U(1) generators, • optionally, one can specify a script that is executed automatically after the model has been loaded.
An example for the case of a 3 orbifold with standard embedding is given in the additional material [39, §Complementary notes].

Conclusions and outlook
With the tools provided here it should be possible to thoroughly investigate the landscape (in particular the MSSM-like landscape) of orbifold compactification of the heterotic string. This "heterotic braneworld" provides a coherent geometric picture of MSSM-like models. Crucial properties of the scheme depend on the geography of fields in extra dimensions. This leads to the concept of "Local Grand Unification" and a geometric understanding of e.g. Yukawa couplings, the µ-term, neutrino masses and proton decay. Detailed properties of models can be computed reliably within the context of conformal field theory.
One of the important observations in the framework of the heterotic braneworld concerns the crucial role played by discrete (gauge) symmetries. They arise as remnants of the gauge symmetry as well as symmetries due to the special location of fields in extra dimensions. They control properties of the scheme, as e.g. flavor universality and the question of proton stability. At the orbifold point we encounter an enhancement of discrete symmetries and particle spectra. These symmetries are a basic ingredient of model building. Slightly broken, they might give us an explanation for the appearance of hierarchies in particle physics (as e.g. the ratio of Yukawa couplings). At the orbifold point we can rely on exact conformal field theory techniques that could be useful to understand the blow-up procedure [6,7,63,64,65,30,66] of orbifold singularities in a controlled way and thus connect to smooth compactifications.
With a better knowledge of the MSSM-landscape we might hope to relate the various constructions and improve the calculational power in those models where we still have to rely on an effective low-energy supergravity and/or large volume approximation. The future of the field requires reliable calculational tools (as e.g. conformed field theory techniques) which are up to now only applicable in some corners of the landscape. But we might be lucky and nature might have chosen to live close to such a corner.

Appendix A. Glossary of relevant classes
The orbifolder makes extensive use of the class structure offered by C++. The information of an orbifold model is distributed according to the following classes.
Class CAnalyseModel. The class CAnalyseModel contains several functions that analyze the phenomenology of orbifold models, mainly for the cases of the Standard Model, Pati Salam or SU(5) gauge group.
Class CField. A CField object contains all physical information about a massless field, such as the representation, the U(1) charges, the q sh charges, the localization and its vev. In addition, it contains a list of indices which specify its weights p sh (stored in the member variable vector<CVector> Weights of the associated CMasslessHalfState object).
Class CFixedBrane. A CFixedBrane object contains all information about all (untwisted or twisted) strings with constructing element g = θ k ω l , n α e α ∈ S . The left-moving part of the string is computed using the local shift V g = kV 1 + lV 2 + n α W α . Hence, the solutions of the equation for massless left-movers, Eq. (3), are stored here in a vector of CMasslessHalfState objects, one entry for each different choice of oscillator excitation. After the massless solutions have been identified, they are sorted with respect to their centralizer eigenvalues and stored in a corresponding vector of CHalfState objects (one entry for each different choice ofÑ with different eigenvalues). In the last step, the massless right-moving CHalfState objects from CSector are tensored together with the massless left-moving CHalfState objects stored here to form orbifold-invariant string states. These states are stored in vector<CState> InvariantStates.
Class CHalfState. A CHalfState object descends from a CMasslessHalfState object by sorting the massless solutions (i.e. the weights q sh or p sh for right-or left-movers) with respect to their centralizereigenvalues. The indices of the weights (as listed in vector<CVector> Weights of the corresponding CMasslessHalfState object) having the same eigenvalues vector<double> Eigenvalues are stored in Class CPrint. The CPrint class contains all printing commands. For the constructor CPrint(OutputType output type, ostream *out) one needs to specify the OutputType, being either Tstandard, Tmathematica, or Tlatex, and a ostream object to set the destination of the output, either to the screen using &cout or to a file using an ofstream object.
Class CSector. A CSector object contains all information about an untwisted or twisted sector. It is mainly specified by the local twist v g (or in other words by k and l since v g = kv 1 + lv 2 ). As the oscillator excitations and the right-moving part of the string only depend on the local twist, see Eq. (3), they are identical for all strings from a given sector. Hence, this data is stored in CSector.
Class CSpaceGroup. A CSpaceGroup object contains the details about the space group of an orbifold model, as explained in Section 2. All constructing and centralizer elements are stored in CSpaceGroupElement objects. Additionally, it includes the geometrical information of the compact space, such as the 6D lattice, its symmetries and the order of the associated Wilson lines.
Class CState. A CState object is basically an orbifold-invariant combination of a massless right-moving CHalfState object and a massless left-moving CHalfState object.

Appendix A.1. Example source code
We present a sample program that computes and analyzes the spectrum of the 6 -II orbifold model of [9]. In the source code distribution, the corresponding file is src/examples/samplemain01.cpp.   First, we define an ifstream object called in that contains the model file modelKRZ A1.txt. Then, we define the orbifold group as a COrbifoldGroup object and load the content of in. If no error occurs, the orbifold is defined as a COrbifold object. After calling the constructor of COrbifold with a COrbifoldGroup parameter, the spectrum of the orbifold model is computed and checked for consistency. Next, we print the shift, the Wilson lines and the massless spectrum of the model using the CPrint class. In the last part, a CAnalyseModel object is constructed in order to analyze the phenomenological properties of the vevconfiguration KRZ A1.StandardConfig.

Appendix B. Glossary of commands
In this appendix, we give short explanations for all commands of the prompt and of the web interface. In Appendix B.1 we start with some concepts and general commands. Then, in Appendix B.2 we list all commands available in the various directories of the prompt.

Appendix B.1. Concepts and general commands
The basic quantities of the prompt are fields of the 4D effective field theory (Appendix B.1.1). In order to access them easily one can define sets of fields (Appendix B.1.2). Furthermore, gauge invariant monomials of fields are used to describe solutions of the D = 0 condition (Appendix B.1.3). For many commands dealing with fields one can use the parameter if(condition) to choose only those fields that fulfill the condition (Appendix B.1.4). Finally, this section describes the concept of processes (Appendix B.1.5), the use of vectors (Appendix B.1.6), how to change the typesetting to mathematica or to latex style (Appendix B.1.7), the use of system commands and variables (Appendix B.1.8).

Appendix B.1.1. Field labels
For a given orbifold model and vev-configuration, fields of the 4D effective field theory are tagged with labels, for example q 1, q 2 and q 3 for the three left-handed quark doublets. A label consists of a name (q) and a generation index (1, 2 and 3 in our example). One can access several fields simultaneously using their common name, for example q for the three quarks. Furthermore, one can access all fields of a given model using *. In addition, one can obtain the intersection of all fields named A but not named B using A-B. Examples for intersections are: n-n 1 to get all fields named n except for n 1 and *-n for all fields except for the ones named n.
Field labels are stored in the currently used vev-configuration of the orbifold model. They can be viewed and changed in the directory /vev-config/labels>, see Appendix B.2.7. Note that in a given vev-configuration one can define several labels for each field.
Finally, in mathematica typesetting, for example, the label q 1 is displayed as fldq1.

Appendix B.1.2. Sets of fields
One can access several fields simultaneously not only by their field labels but also using sets of fields. These sets are stored in the currently used vev-configuration of the orbifold model. (Consequently, one cannot access a set in a different vev-configuration than in the one where it was created.) For more details on vacua, see Appendix B.2.6. Note that sets are on the same footing as field labels 1 . I.e. one can build intersections like: • A-B for the intersection of two sets A and B, • *-A for the intersection of all fields * and a set A, • A-q for the intersection of a set A and all fields of name q or • q-A for the intersection of all fields of name q and a set A.
The commands to create and manipulate sets are displayed in any orbifold model directory of the prompt using the command help sets . (B.1) The commands are: Command create set(SetLabel). Create an empty set with name SetLabel and save it in the currently used vev-configuration. Optionally, this command allows for the parameters from monomials or from monomial(MonomialLabel) in which case all fields from either all monomials or only from monomial MonomialLabel will be inserted into the new set. See Appendix B.1.3 for more details on monomials.
Command delete set(SetLabel). Delete the set SetLabel of the currently used vev-configuration.
Command delete sets. Delete all sets of the currently used vev-configuration. Command print set(SetLabel). Print the content of the set SetLabel.
Command print sets. Print all sets defined in the currently used vev-configuration. One can use the optional parameter if not empty to print only the non-empty sets.
Command remove(fields) from set(SetLabel). Remove fields from the set SetLabel. Optionally, the parameter if(condition) can be used to remove only those fields that satisfy the condition.

. If conditions
Many commands that deal with fields allow for the parameter if(condition) (or several copies thereof) so that only those fields are chosen that fulfill all the conditions. An explicit example was already given in Tab. B.2. In general, a condition consists of three parts: • the left hand side gives the variable (e.g. Q i for the fields i-th U(1) charge, vev for the fields vacuum expectation value or #osci. for the number of oscillators), • the middle gives the comparison operator (e.g. == for equal or != for unequal) and • the right hand side gives a value (e.g. a rational number or 0). in any orbifold model directory.

Appendix B.1.5. Processes
The following commands start new processes that run in the background so that one can continue to work with the prompt: • /> create random orbifold from(OrbifoldLabel) • /A/couplings> create coupling(fields) • /A/vev-config> find D-flat(fields)

• /A/gauge group> find accidental U1s
Each process has an ID, the so called PID. Similar to the Linux command line one can see all running processes using the command ps and terminate a process with PID A using kill(A). One can also kill all active processes using the command kill(all). In a script the command wait(X) might be useful in order to check every X seconds if all processes have finished and to continue with the next commands afterwards. More details can be seen using the command In addition, for the first four forms of the example-vector, one can leave the brackets away.

Appendix B.1.7. Output for mathematica or in latex style
Often it is useful to transfer data from the orbifolder to mathematica, for example, in order to use STRINGVACUA [71], SINGULAR [72], NonAbelianHilbert [69,70] or DiscreteBreaking [73,74]. Therefore, many commands allow for the parameter @mathematica (B.6) so that the output of the command will be printed in a mathematica compatible style (if available). For example, print list of charges @mathematica in the directory /spectrum>. Similarly, the parameter @latex can be used in order to get the output in latex code (again, if available). In addition, one can set the default typesetting to mathematica, latex or back to standard using the commands @typesetting(mathematica), @typesetting(latex) or @typesetting(standard) , (B.8) respectively. Finally, the parameter no output can be used to suppress the output of the current command.

Appendix B.1.8. System commands and variables
System commands start with the symbol @ and are used to change the output's style and destination. Moreover, the prompt allows for some pre-defined variables which are particularly usefull in scripts. They start and end with the symbol $.
Command @begin print to file(A). Start printing output to file A and not to the screen. In contrast, one can use the parameter to file(A) so that the output of only the current command is printed to file, e.g. print summary to file(Summary.txt).
Command @end print to file. Stop printing output to file.
Command @status. Display the destination of the output (e.g. screen) and the style of the typesetting (i.e. standard, latex or mathematica).
Variables. There are three pre-defined variables: $OrbifoldLabel$, $VEVConfigLabel$ and $Directory$. When executed, a variable is replaced by a corresponding string, being the label of the current orbifold model, the label of the current vev-configuration or the path of the current directory, respectively. They are particularly usefull in scripts, e.g. used as to file($OrbifoldLabel$.txt).

Appendix B.2. The directories
The structure of the prompt consists of a main directory /> and subdirectories that correspond to orbifold models. Each orbifold model directory has further subdirectories /model>, /gauge group>, /spectrum>, /couplings> and /vev-config>. They offer commands of the respective category. In this section we give an alphabetically ordered glossary of directory-commands and explain their use in detail.

Appendix B.2.1. The main directory />
In the main directory one can basically create, load and save orbifold models.
Command create orbifold(OrbifoldLabel) with point group(M,N). Create an empty orbifold model directory for an orbifold of specified point group orders (use N= 1 for M orbifolds).
Command create random orbifold from(OrbifoldLabel Command delete orbifolds. Delete all orbifold model directories. Command load orbifolds(Filename). Load all orbifold models from the model file named Filename.
Command load program(Filename). Load a script from file Filename and execute the commands contained in that file.
Command save orbifolds(Filename). Save all orbifold models of the main directory to a model file named Filename.

Appendix B.2.2. The directory /model>
In the directory /model> the input data (e.g. point group, twists, shifts, Wilson lines, etc.) of the current orbifold model can be displayed and changed.
Command create suborbifold with factor(i). Starting from an orbifold with space group S , one can create a so-called suborbifold based on a subgroup S ′ ⊂ S .
For M orbifolds the subgroup S ′ ⊂ S is specified by one number, i being a divisor of M. Denote the M twist generator of the space group by g ∈ S . Then, the subgroup S ′ ⊂ S is based on the twist generator g i ∈ S ′ ⊂ S which generates M/i . One can use the optional parameter and(j) to choose g i ∈ S ′ ⊂ S and g j ∈ S ′ ⊂ S (with i, j coprime and i, j divide M) to generator M/i × M/ j .
In the case of M × N orbifolds (with twist generators g 1 , g 2 ∈ S ) one has to specify two numbers create suborbifold with factor(i,j) (where i divides M and j divides N) for the new generator g i 1 g j 2 of the subgroup S ′ ⊂ S . Again, one can use the optional parameter and(k,l) to specify a second generator g k 1 g l 2 .
Note that this command is particularly useful to analyze the 6D orbifold GUT limit of an orbifold model. For example, start with the 6 -II orbifold MSSM of [40]. Then the command create suborbifold with factor(2) will produce the 6D 3 orbifold GUT limit as analyzed in [75].
Command print available space groups. Print a list of all geometry files compatible with the specified point group. The geometry files are searched by the orbifolder in the directory /localdirectory/ Geometry> (of the local PC). For more details on the content of geometry files, see Section 4.4.1.
Command print discrete symmetries. Print the discrete (R and non-R) symmetries as defined in the geometry file. Note that R symmetries need to be defined in the geometry file in order to be used in the computation of allowed superpotential couplings.
Command print discrete torsion. Print the (generalized) discrete torsion parameters a, b α , c α and d αβ as defined in Ref. [36].
Command print massless A-movers. where A can be left or right. Print the massless left-or right movers before some of them are projected out by the action of the centralizer.
Command print orbifold label. Print the orbifold label (i.e. the name of the current orbifold directory).
Command print point group. Print the point group. The output reads, for example, Point group is Z 3.
Command print twist. Print the twist(s) as four-dimensional vector(s). The output reads e.g. (B.14) Command set heterotic string type(type). Define the 16D gauge lattice of the heterotic orbifold model. Here, type can be E8xE8 or Spin32.
Command set shift standard embedding. Set the (generalized) discrete torsion parameters as defined in [36], i.e. a, b α , c α and d αβ (for α, β = 1, . . . , 6; d αβ = −d βα has 15 components). Note that the parameters are not checked for modular invariance and hence might cause inconsistent spectra. For more details on vectors see Appendix B.1.6.

Appendix B.2.3. The directory /gauge group>
In this directory one can print and change some details of the gauge group for the currently used vevconfiguration. In more detail, one can display the U(1) generators and the simple roots, change the basis of U(1) generators, define a B-L generator and identify accidental U(1) symmetries of the superpotential. Note that all gauge-group-editing commands are not available in the vev-configuration StandardConfig1.
Command delete accidental U1s. Delete the accidental U(1) charges of all fields.
Command find accidental U1s. Take the superpotential (as far as it has been created in the directory /couplings>, see Appendix B.2.5) and identify its accidental U(1) symmetries. The command starts a new process that runs in the back of the prompt. The results are saved in the currently used vev-configuration. Presumably, the accidental U(1) symmetries will be broken explicitly by higher order terms, but nevertheless might be of phenomenological relevance, e.g. for the strong CP problem [27] and proton decay [31].
Optionally, one can use the parameter fields with zero charge(fields) in order to find only those accidental U(1) symmetries under which the fields of fields are uncharged. On a technical level, this is achieved by inserting, during this analysis, each field of fields as a linear term into the superpotential.
Command load accidental U1s(Filename). Load accidental U(1) charges from a file named Filename.
Command print anomalous space group element. Print details on discrete anomalies using the discrete symmetries defined in the geometry file and identify the so-called anomalous space group element [76].  for the field F 10 of the 3 orbifold with standard embedding. Each line consists of three parts: • first the 16D shifted left-moving momentum p sh (printed as two eight-dimensional vectors in the case of E 8 × E 8 ), • the R charges: in the example, • the charges with respect to the discrete non-R symmetries: (k, n 1 + n 2 , n 3 + n 4 , n 5 + n 6 , ) = (2, 0, 0, 1) in the example, • the label of the corresponding field, where, in general, the R and non-R symmetries must be specified in the geometry file, see Section 4.4.1.
Note that it can be very helpful to use the optional parameter @mathematica for this command in order to transfer the information about the fields to mathematica, see Appendix B.1.7.
Command print summary. Print the gauge group and a summary table of the massless matter fields. Important optional parameters are: • of sectors • of fixed points where the fixed point X can be specified in three ways: i) using k,l,n1,n2,n3,n4,n5,n6, ii) using loc of F i where F i is the label of a twisted field and iii) by a fixed point label as specified in the directory /vev-config/labels>.
• of sector T(k,l) where k and l label the θ k ω l twisted sector. Use of sector T(0,0) for the untwisted sector.
In all these cases one can use in addition the following, optional parameters: • with labels: print the currently used labels of the fields as specified in the directory /vev-config/ labels>.
• no U1s: do not print the U(1) charges of the fields. The directory /couplings> allows to identify and analyze allowed terms of the superpotential (i.e. terms that are invariant under all gauge and discrete symmetries). The (in general moduli-dependent) coefficients are not computed. Furthermore, one can analyze mass matrices (e.g. of vector-like exotics).
Note that couplings and mass matrices are stored in the currently used vev-configuration. Hence, they can only be accessed in the vev-configuration where they have been defined. For simplicity, the abbreviations mm for mass matrix and mms for mass matrices apply to all commands.
Command auto create mass matrix(A B). Create the couplings relevant for the effective mass matrix M i j A i B j . Optionally, one can specify the the label of those fields whose vevs generate M i j using the parameter singlet(N) (with default value N=n) and the maximal order X in singlets N using the parameter max order(X).
Command create coupling(fields). Find the allowed superpotential-couplings between fields and store the result in the currently used vev-configuration. For example, all trilinear couplings are created using the command create coupling(* * *) .

(B.18)
Optionally, one can restrict fields using the parameter allowed fields(...), e.g. the command create coupling(n n n) allowed fields(SetA) creates all trilinear couplings of fields n from SetA.
Command find(fields). Displays a list of allowed couplings involving the fields fields.
Command find effective(fields). As find(fields), but only the effective couplings, i.e after replacing fields with non-zero vev by their vevs.
Command load couplings(Filename). Load couplings from file Filename into the currently used vevconfiguration. This command is disabled in the web interface.
Command mass matrix(A B). Create the mass matrix M i j A i B j (from the current superpotential) and save it in the currently used vev-configuration.
Command print effective superpotential. Similar to the command print superpotential but print only the effective couplings, i.e after replacing fields with non-zero vev by their vevs.
Command print list of mass matrices. Print all mass matrices of the currently used vev-configuration.
Command print mass matrix(i). Print the i-th mass matrix. The optional parameter max order(X) specifies the order X in the fields up to which a matrix entry shall be printed explicitly.
Command print superpotential. Print the superpotential of the currently used vev-configuration.
Command print vanishing couplings. Print all cases of vanishing couplings as lists of highest weights in Dynkin labels. See the command remove vanishing couplings.
Command remove vanishing couplings. Remove couplings that vanish because of symmetry/anti-symmetry of repeated identical fields, e.g. let ℓ be an SU(2) doublet, then the gauge invariant coupling ℓℓ = ℓ i ℓ j ǫ i j = 0 vanishes. This command requires additional user input.
Command save couplings(Filename). Save all couplings of the currently used vev-configuration to a file. One can optionally save only couplings of order X using the parameter of order(X). This command is disabled in the web interface.
Appendix B.2.6. The directory /vev-config> In this directory one can define several vev-configurations. Each of them is characterized by a choice of hidden and observable gauge group, a labeling of the fields and by their vev. In addition, one can analyze phenomenological properties and supersymmetric configurations (F = D = 0) in this directory and determine the unbroken gauge group of a given vev-configuration. For each orbifold model there are two standard vev-configurations: StandardConfig1 and TestConfig1. The first one cannot be changed, but the latter one can be and is used as default. In both configurations the full gauge group is selected as the observable sector and fields are labeled F 1, F 2, F 3, . . ., all with zero vev.
Note that the labels of the fields (see Appendix B.1.1), sets of fields (see Appendix B.1.2), monomials (see Appendix B.1.3), allowed couplings and mass matrices (created in the directory /couplings>) are saved in a vev-configuration. Hence, these data can only be accessed in the vev-configuration where they have been defined. In addition, note that all configuration-editing commands are not available in the vevconfiguration StandardConfig1. respectively, three generations of quarks and leptons and vector-like exotics. In the case the orbifolder is not able to identify one of these possibilities for the current orbifold model one obtains the output No vev-configuration identified. Otherwise, corresponding new vacua will be created and convenient labels will be assigned to all matter fields (e.g. q 1, q 2 and q 3 for the three generations of quark doublets). The command allows for two optional parameters: print SU(5) simple roots to print the simple roots of an intermediate SU (5) group that has been used in order to identify the hypercharge generator and Xgenerations with X= 0, 1, 2, 3, . . . to specify the (net) number of generations.
Command compute F-terms. Compute the F-terms using the superpotential that was created for the currently used vev-configuration (in the directory /couplings>. The optional parameter max order(X) allows to set an upper limit X on the order of superpotential couplings.
Command create config(ConfigLabel). Create a new vev-configuration. Optionally, one can specify the origin of the new vev-configuration using the parameter from(AnotherConfigLabel). If this parameter is not used the origin of the new vev-configuration is the standard vev-configuration StandardConfig1.
Command find D-flat(fields). Identify gauge invariant monomials of fields as solutions to the D = 0 supersymmetry condition, see Appendix B.1.3. This command allows for two parameters: i) with FI to allow for monomials with non-vanishing anomalous U(1) charge in order to cancel the FI term and ii) save to set(SetLabel) to save those fields in a set called SetLabel that are involved in the new monomials.
Command find unbroken gauge group. Depending on the vev assignment specified in the currently used vev-configuration, identify broken and unbroken (Abelian and non-Abelian) gauge group factors. In addition, the U(1) charges of all fields are re-computed in the new U(1) basis. There is one optional parameter: print info to display some details. Command print configs. Print an overview of all vacua defined for this orbifold model. The currently used vev-configuration is highlighted by an arrow -> in front, e.g. -> "TestConfig1".
Command rename config(OldConfigLabel) to(NewConfigLabel). Change the name of a vev-configuration from OldConfigLabel to NewConfigLabel.
Command select observable sector: parameters. Assign a choice of observable and hidden gauge groups in the current vev-configuration. Admissible parameters are: • gauge group(i,j,...), where the indices i,j = 1, 2, . . . refer to the different non-Abelian gauge group factors sorted as displayed by print gauge group. The indices provided are chosen as part of the observable sector.
• full gauge group All non-Abelian group factors are assigned as observable sector.
• no gauge groups No non-Abelian group factor is assigned as part of the observable sector. • all U1s All U(1)s are assigned as part of the observable sector.
• no U1s No U(1) is taken for the observable sector.
For example, assuming that the gauge group is E 6 ×SU(3)×E 8 , the instruction select observable sector: gauge group(1,2) selects E 6 ×SU(3) as the observable and E 8 as the hidden gauge groups.
Command use config(ConfigLabel). Change the currently used vev-configuration to ConfigLabel.
Command vev(fields) = .... Change the vevs of fields to new values. For example, vev(*) = 0 turns off the vev of all fields, vev(SetA) = rand assigns random vevs to the fields of the set SetA and vev(n 1) = 0.1 sets the vev of n 1 to 0.1.

Appendix B.2.7. The directory /vev-config/labels>
In this directory one can define, for each vev-configuration, appropriate labels for the fields. The main commands are print labels and create labels. In both cases, a summary table of massless fields is printed, sorted by those representations and U(1) charges that belong to the observable sector of the currently used vev-configuration. The observable sector can be changed using the command select observable sector:... in the directory /vev-config>, see Appendix B.2.6.
Command change label(A i) to(B j). Change the label of the field A i to B j.
Command create labels. First, a summary table of massless fields is displayed. Then the user is asked to specify a name for each line of the table.
Command load labels(Filename). Load labels from the file named Filename. This command is disabled in the web interface.
Command print labels. Print a summary table of the currently used labels displaying the gauge representations with respect to the observable sector only.
Command save labels(Filename). Save the labels to the file named Filename. This command is disabled in the web interface.
Command use label(i). Change the currently used labels to the i-th labeling.