{'fraction_non_alphanumeric': 0.055303030303030305, 'fraction_numerical': 0.037070707070707073, 'mean_word_length': 4.1498049414824445, 'pattern_counts': {'":': 0, '<': 1, '<?xml version=': 0, '>': 2, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Steiner Triple Systems of Order 21 with Subsystems

The smallest open case for classifying Steiner triple systems is order 21. A Steiner triple system of order 21, an STS(21), can have subsystems of orders 7 and 9, and it is known that there are 12,661,527,336 isomorphism classes of STS(21)s with sub-STS(9)s. Here, the classification of STS(21)s with subsystems is completed by settling the case of STS(21)s with sub-STS(7)s. There are 116,635,963,205,551 isomorphism classes of such systems. An estimation of the number of isomorphism classes of STS(21)s is given.


Introduction
A Steiner triple system (STS) is a pair (V, B), where V is a set of points and B is a set of 3-subsets of points, called blocks, such that every 2-subset of points occurs in exactly one block. The size of the point set is the order of the STS, and an STS of order v is denoted by STS(v). It is well known that an STS(v) exists iff v ≡ 1 or 3 (mod 6).
For more information about Steiner triple systems, see [4,5].
An STS(v) is said to be isomorphic to another STS(v) if there exists a bijection between the point sets that maps blocks onto blocks; such a bijection is called an isomorphism. An isomorphism of a Steiner triple system onto itself is an automorphism of the STS. The automorphisms of an STS form a group under composition, the automorphism group of the Steiner triple system.
Classification of combinatorial designs is about finding a transversal of the isomorphism classes [13]. The Steiner triple systems have been classified up to order 19, and the numbers of isomorphism classes are 1, 1, 1, 2, 80, and 11,084,874,829 for orders 3,7,9,13,15, and 19, respectively. A classification of the STS (19)s was published in 2004 with a remark that the algorithm used would require hundreds of thousands of CPU years to classify the STS(21)s [11]. As this seems to be currently out of reach, one will have to focus on subclasses of STS (21)s. Indeed, STS(21)s of various types have been considered in this context, including STS(21)s with a nontrivial automorphism group [10] (with earlier work in [3,9,20,21,22,30,31], also considering other properties), anti-Pasch STS(21)s [18], and resolutions of STS (21)s-that is, Kirkman triple systems-with subsystems [17].
A necessary condition for an STS(v) to have a nontrivial (w > 3) and proper (w < v) subsystem of order w, i.e., a sub-STS(w), is that v ≥ 2w + 1; see [5,Lemma 6.1]. Classification of Steiner triple systems with sub-STS(7)s has been carried out for orders 15 and 19-see [23, Table 1.29] and [15], respectively-and for those with sub-STS(9)s for order 19-see [29].
The only possible nontrivial proper subsystems of STS (21)s are STS(7)s and STS(9)s. The STS(21)s with sub-STS (9)s are classified in [14]; there are 12,661,527,336 isomorphism classes of such designs. For STS (21)s with sub-STS(7)s, the special case of Wilson-type systems is handled in [15]. Wilson-type STS(21)s contain three sub-STS(7)s on disjoint point sets. In the current paper the classification problem for STS (21)s with subsystems is settled by completing the case of sub-STS(7)s. The paper is organized as follows. An algorithm for classifying STS(21)s with sub-STS(7)s is described in Section 2, and the results are listed in Section 3. The number of isomorphism classes of STS(21)s with sub-STS(7)s is used in Section 4 to get an estimation of the total number of isomorphism classes of STS(21)s.

Classification
In this section, we present a classification algorithm for STS(21)s containing sub-STS(7)s. To facilitate reading, we give necessary definitions in Section 2.1. The general approach is outlined in Section 2.2, details about subtasks are given in Section 2.4, and some computational issues are considered in Section 2.5.

Definitions
A (v r , b k ) configuration is an incidence structure with v points and b blocks, such that each block contains k points, each point occurs in r blocks, and two different blocks intersect in at most one point. If v = b and k = r, these are simply called v k configurations. The definitions of isomorphism and automorphism of configurations are analogous to those for Steiner triple systems.
A 1-factor in a graph, also called a perfect matching, is a 1-regular spanning subgraph and a 1-factorization is a partition of the edges of the graph into 1-factors. A 1-factorization of a graph G = (V, E) is isomorphic to a 1-factorization of a graph G ′ = (V ′ , E ′ ) if there is a bijection from V to V ′ that maps the 1-factors of the 1-factorization of G onto the 1-factors of the 1-factorization of G ′ .

General Approach
On a general level, the current approach follows [14], in which all of Theorem 2 except the last statement already appeared.

5.
G is w-regular and its complement G is (v − 2w − 1)-regular, and 6. G can be decomposed into a set of edge-disjoint 3-cycles-D being one possible set-which forms a configuration.
Using this theorem, any STS containing a sub-STS is decomposable into B ′ ∪F ∪D. For the task of classifying all STS(v)s containing some sub-STS(w), one has now two starting points: either a classification of the 1-factorizations underlying F or a classification of the configurations corresponding to D. Then, in both cases, one needs to combine this with a classification of B ′ to create an STS in all possible ways, taking symmetry into account.
The next sections illustrate the details for v = 21 and w = 7; the general setting is also depicted in [14].

Application to STS(21) containing sub-STS(7)s
Let (V, B) be an STS(21) that has a sub-STS(7) (W, B ′ ). Clearly W ⊆ V and B ′ ⊆ B. The blocks in B \ B ′ intersect W in either 0 or 1 points, and those two sets of blocks are denoted by D and F , respectively.
Fix a point p ∈ W and let B p be the set of blocks in F that contain p. Further let As a pair of points with one point in W and the other in V \ W must occur in exactly one block of F , the sets in B ′ p partition V \ W . The sets in B ′ p have size 2, and we may view them as edges in a graph with vertex set V \ W . The sets in B ′ p form a 1-factor of that graph. With 7 possible values of p, we have 7 disjoint 1-factors of a 7-regular graph of order 14.
To complete the Steiner triple system, given a 7-regular graph G of order 14, one may find all 1-factorizations of G and in the complement G find all decompositions into 3-cycles (which is the graph analogy of finding sets of triples that cover all unordered pairs) and combine these in all possible ways. Doing this for all possible choices of G gives all ways of extending the initial STS (7). Finally, isomorph rejection needs to be carried out during the process of combining parts. Specific details about using this approach in the current work-where the order D → F → B ′ for constructing the blocks B is actually used-are presented in Section 2.4. See also [14].
There are 21,609,301 isomorphism classes of 7-regular graphs of order 14 [26]; see also [28,Table 4.25]. Only a small number of graphs G have the property that the complement G can be decomposed into 3-cycles as described in the last statement in Theorem 2. Indeed, the required 14 3 configurations have already been classified.
There are 21,399 isomorphism classes of 14 3 configurations [2]. Checking the isomorphism classes of graphs underlying the 14 3 configurations shows that their number is 20,787. As this is about one thousandth of the number of regular graphs, the 14 3 configurations are the appropriate building block for our algorithm.

Details of the Approach
We shall now give more specific details needed for implementing the general approach. Some of the computational subproblems will be considered separately in Section 2.5. The unique 14 3 configuration with automorphism group order 56448 consists of two disjoint STS (7) and is the configuration of Wilson-type systems. Ignoring that configuration here, the groups to be considered have order at most 128, so there is no need for advanced group algorithms.
After fixing a configuration (V \ W, D), where the point set is V \ W = {0, . . . , 13}, we compute its automorphism group A, the underlying graph G, and the complement G. Notice that the group A is trivial in most of the cases.
The 1-factorization For a given graph G, we first determine the set F of 1-factors of G and then use the 1-factors in F to compute the set F ′ of all possible 1-factorizations of G. If the group A is nontrivial, isomorph rejection is further carried out by accepting precisely those 1-factorizations in F ′ that are lexicographically minimum under the action of A. For an accepted 1-factorization, the subgroup of A consisting of the elements that stabilize the 1-factorization is denoted by A ′ .
A 1-factor of G corresponds to a set B ′ p defined in (2), and a 1-factorization of G gives a set of blocks F = ∪ 20 p=14 B p up to permutation of the points in W = {14, 15, . . . , 20} (we pick an arbitrary one). The group A ′ acts on V \W . Blocks of F also have points in W , so we extend the action of A ′ to get a group A ′′ acting on V . The permutation of the points in W for an element in A ′′ is uniquely defined by how the original element in A ′ maps the 1-factors.

The sub-STS(7)
There is a unique STS (7), the Fano plane, which has an automorphism group of order 168. Hence there are are 7!/168 = 30 distinct labelled STS(7)s on 7 given points.
An isomorphism from one STS(21) with a sub-STS(7) to another maps the particularized sub-STS(7) to a sub-STS (7). Hence there are two general situations: STS(21)s with exactly one sub-STS(7) and STS(21)s with more than one sub-STS(7)s. In the latter case, there are further several possibilities for how the point sets of two sub-STS(7)s may intersect. Such an intersection must form a (possibly trivial) sub-STS, so possible intersection sizes are 0, 1, and 3.
If the intersection size is 0, then there is necessarily a third sub-STS(7) whose point set is disjoint from the point sets of the first two sub-STS(7)s, that is, we have a Wilson-type system and the 14 3 configuration discussed earlier. Wilson-type STS(21)s have exactly three sub-STS(7)s [15, Lemma 1]. As the mentioned 14 3 configuration is not considered here, this case will not occur in the search.
Isomorph rejection when extending blocks D ∪ F with blocks B ′ is analogous to the situation when extending blocks D with blocks F , considered earlier. Now, out of the 30 possibilities, those sub-STS(7)s that are lexicographically minimum under the action of A ′′ are accepted. The subgroup of A ′′ consisting of the elements that stabilize the accepted sub-STS (7) is denoted by A ′′′ .
The blocks B = D ∪ F ∪ B ′ now form an STS(21) with a particularized sub-STS (7), and if those are the objects to classify we would be done. But in the classification of STS(21)s with at least one sub-STS (7), there is still one final step.

The final isomorph rejection
If there is exactly one sub-STS(7) in the constructed design (V, B), then we accept the STS(21); its automorphism group is the group A ′′′ computed earlier. Otherwise, we proceed by finding all sub-STS(7)s in V . (As we have seen, these will intersect W in exactly 1 or 3 points; some precomputations for finding them can be done based on D and F .) We now determine whether the particularized sub-STS(7) is a canonically minimum sub-STS(7), to be discussed in Section 2.5, and accept it if that is the case. The automorphism group of an accepted STS(21) is obtained as a by-product of the computations.

Computational Subproblems
We shall here discuss some of the main computational subproblems that are encountered when implementing the presented approach and that are not standard problems related to data structures and algorithms.
Automorphism groups and canonical forms Automorphism groups and canonical forms are conveniently computed with nauty [24] after an appropriate transformation of the combinatorial structure to a graph.
To order the sub-STS(7)s of an STS(21) one may use the standard graph encoding of the incidence matrix of the design, add one vertex for each sub-STS (7), and let the 7 vertices corresponding to the points of the sub-STS (7) form the neighborhood of an added vertex. Then the canonical order of vertices given by nauty imposes an order on the sub-STS(7)s. More precisely, nauty determines an order of the orbits of vertices under the action of the automorphism group of the graph. Therefore we get an induced ordering of the orbits of sub-STS(7)s under the action of the automorphism group of the STS (21).
For small group orders, the abstract type of the automorphism groups of the classified designs can be identified based on the multiset of orders of elements. The abstract type can further be computed using AllSmallGroups and StructureDescription in GAP [8]. In the current work, seven groups (of orders 27, 54, 108, 294, and 1008) had to be treated manually and separately. The designs with nontrivial automorphisms are amongst those classified in [10].

1-factors and 1-factorizations
Although finding single perfect matchings in general graphs respective all perfect matchings in bipartite graphs are standard computational problems [6,7], we use a backtrack algorithm to compute all 1-factors of general graphs. Given the set of 1-factors of a graph, the problem of finding all 1-factorizations can be phrased in the framework of exact cover [12], whereby the instances can be solved, for example, using the libexact [16] software.

Results
The total number of isomorphism classes of STS (21)s containing at least one sub-STS (7) [15].
More detailed information can be found in Table 1 and Table 2. The column headers in Table 1 are the order of the automorphism group (O), the number of contained sub-STS(7)s (U), the number of unordered pairs of sub-STS(7)s that intersect in 1 and 3 points (I 1 and I 3 , respectively), the abstract type of the automorphism group (A), and finally the number of isomorphism classes of STS(21)s with these properties (#).
The notation for the abstract types of groups is as follows: C n is the cyclic group of order n, S n is the symmetric group of order n!, A n is the alternating group of order n!/2, D n is the dihedral group of order n, and PSL(v, q) is the projective special linear group in F v q . For two groups G and H, G × H is the direct product of G and H, G ⋊ H is a semidirect product of G and H, and  G A central open problem for specific STS(21)s is whether systems exist that are doubly resolvable. The current work gives nothing new with respect to this problem, because Kirkman triple systems of order 21 with sub-STS(7)s have already been classified and tested [17].
The whole classification including the detection of the abstract group types took about 1300 CPU days on the equivalent of one core of an Intel Xeon E5-2665 @ 2.40GHz.
Verification We perform two tests to validate results. Let S be a transversal of the isomorphism classes of the STS(21)s with sub-STS(7)s that are not of Wilson type-this is the outcome of the current classification-and let C be a transversal of the isomorphism classes of the 14 3 configurations excluding the configuration leading to Wilson-type STS(21)s. Further, let s 7 (S) be the number of sub-STS(7)s in the system S, and let f (C) be the number of 1-factorizations with labelled 1-factors of the complement of the graph underlying the configuration C. During the computations, all this data was collected.
In the first test, we count in two different ways all pairs of labelled STS(21)s that are not of Wilson type and their contained sub-STS(7)s. By the Orbit-Stabilizer Theorem, we have in the final computation. The fact [15] that Wilson-type STS(21)s have exactly three sub-STS(7)s and will not appear in the search is essential for the double counting to work.
In the second test, we extract the STS(21)s with sub-STS(7)s from the STS(21)s with nontrivial automorphisms classified in [10] and compare the numbers with those in Table 1a. Also this test was successful.  16

Estimating the Number of STS(21)s
The classification of the STS(21)s with sub-STS(7)s gives a lower bound on the number of isomorphism classes of STS(21) but can also be used for an estimation of that number. The authors are not aware of any published estimations.
Quackenbush [27] conjectured that almost all Steiner triple systems have no nontrivial subsystems. Later, however, Kwan [19] used a random model to find evidence for the number of sub-STS(7)s in an STS(v) to have expectation Θ(1), referring to similar work in [25] on Latin squares. The models used in [19] and [25] are random 3-uniform hypergraphs and random integer matrices, respectively.
An STS(v) has v(v − 1)/6 blocks out of v(v − 1)(v − 2)/6 3-subsets of a v-set, that is, a ratio of p := 1/(v − 2) of the 3-subsets are blocks. We may now form a random 3-uniform hypergraph on v vertices by including blocks with probability p (note that p := 1/v, which is used in [19], works when studying asymptotics). We denote the number of labelled STS(w)s on w points by N(w). We have seen earlier that N(7) = 30. The number of labelled STS(w)s on v points, where v ≥ w, is M(v, w) := N(w) v w . The probability for a given STS(w) to occur in the random model is p w(w−1)/6 .

Conjecture 1 The distribution of the number of sub-STS(w)s in an STS(v)
tends to the Poisson distribution with expected value 1/168 for w = 7 and expected value 0 for w > 7 as v ∈ S tends to infinity.
The proportion of STS(v) containing at least one sub-STS (7) is then approximately α = 1 − e −1/168 ≈ 0.00593 for large v. Consequently, an estimation of the total number of STS(v) can be obtained by dividing the number of STS(v) with at least one sub-STS(w) by α.
As almost all Steiner triple systems have no nontrivial automorphisms [1], an estimation for the number of isomorphism classes of STS(v) can be obtained by dividing the number of isomorphism classes of STS(v) with at least one sub-STS(w) by α.
There are only two instances for which the quality of such an estimation can be checked, and the case STS(15) with only 80 isomorphism classes is not useful. For the 11,084,874,829 STS(19) out of which 86,701,547 have at least one sub-STS (7) [15], we get a ratio of approximately 0.00782, which is getting into the same order of magnitude as α.
For the number of isomorphism classes of STS(21)s, using the classification results of the current paper we calculate 116,635,963,205,551/α ≈ 1.965 · 10 16 , which indicates that the number could be somewhat greater than 10 16 , perhaps between 1 · 10 16 and 2 · 10 16 .
In the estimation one might consider utilizing µ(21, 7) ≈ 0.00389 rather than µ(∞, 7), but notice that µ(19, 7) ≈ 0.00368 underestimates the true value by a factor greater than 2, and the situation here might be analogous to that for sub-Latin squares considered in [25]. In that paper, it is conjectured that the expected number of 3 × 3 sub-Latin squares of a randomly chosen n × n Latin square tends to 1/18 as n tends to infinity, and numerical data show that the value given by the random model for a fixed parameter, f (n) = 12 n 3 3 n −9 , underestimates the computed value for small parameters. For example, for n = 10, the asymptotic value (≈ 0.0556) is closer to the exact value (≈ 0.0536) than f (n) (≈ 0.0207).
It is not clear whether an STS with subsystems is more or less prone to have resolutions. If the correlation is weak, then the fact that there are 12,520,021 isomorphism classes of Kirkman triple systems of order 21 with sub-STS(7)s [17] could be used to calculate 12,520,021/α ≈ 2.111 · 10 9 , which would hint that there might be somewhat more than 1 billion isomorphism classes of Kirkman triple systems of order 21.  14 1 54 C 2 3 ⋊ C 6 1 126 C 3 × (C 7 ⋊ C 6 ) 1 504 C 3 × PSL(3, 2) 1