Search arXivSearch

arXiv · 2401.12740

Controlling the C3 super class linearization algorithm

Abstract

C3 is an algorithm used by several widely used programming languages such as Python to support multiple inheritance in object oriented programming (OOP): for each class, C3 computes recursively a linear extension of the poset of all its super classes (the Method Resolution Order, MRO) from user-provided local information (an ordering of the direct super classes). This algorithm can fail if the local information is not consistent. For large hierarchies of classes, as encountered when modeling hierarchies of concepts from abstract algebra in the SageMath computational system, maintaining consistent local information by hand does not scale and leads to unpredictable C3 failures. This paper reports on the authors' work to analyze and circumvent this maintenance nightmare. First, we discovered through extensive computer exploration that there exists posets admitting no consistent local information; we exhibit the smallest one which has 10 elements. Then, we provide and analyze an algorithm that, given a poset and a linear extension, automatically builds local information for C3 in such a way that guarantees that it will never fail, at the price of a slight relaxation of the hypotheses. This algorithm has been used in production in SageMath since 2013.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Florent Hivert, Nicolas M. Thiéry. 2024-01-23. Controlling the C3 super class linearization algorithm. https://doi.org/10.1007/s11083-022-09607-5

Cite the original work for its findings. Save a collection to share your selection of sources.

KEEP EXPLORING

Related papers

On Perfect Divisibility of Bull-Free Graphs Without Long Paths

A graph $G$ is {\em perfectly divisible} if, for every induced subgraph $H$ of $G$, $V(H)$ can be partitioned into $A$ and $B$ such that $H[A]$ is perfect and $ω(H[B])<ω(H)$. Chudnovsky and Sivaraman [J. Graph Theory \textbf{90} (2019) 54-60] proved that every ($P_5$, bull)-free graph is perfectly divisible, while Chen and Xu [Discrete Appl. Math. \textbf{372} (2025) 298-307] proved the same for ($P_7,C_5$, bull)-free graphs. We extend these results by proving that every ($P_8,C_5$, bull)-free graph is perfectly divisible and that, letting $F$ denote the Grötzsch graph, a ($P_6$, bull)-free graph is perfectly divisible if and only if it is $F$-free.

math.CO

Covering graphs by isometric trees

A connected subgraph of a graph is isometric if it preserves distances. Recently, graphs admitting a vertex or edge covering by a small number of isometric paths have been studied. In this paper, we consider the analogous problem for isometric trees, focusing on the treewidth of graphs admitting a vertex or edge covering by a small number of such trees. Baste, De Meyer, Giocanti, Objois, and Picavet showed that for coverings by two isometric trees, the treewidth is bounded. We show that already for three isometric trees, the treewidth can be linear in the number of vertices. On the positive side, we show that for graphs of bounded degree coverable by a small number of isometric trees, the treewidth is sublinear in the number of vertices.

math.CO

Tree-independence number of $P_5$-free graphs with no large bicliques

The tree-independence number of a graph is the minimum, over all tree-decompositions of the graph, of the maximum size of an independent set contained in a bag. Graph classes of bounded tree-independence number have strong structural and algorithmic properties; however, the parameter can be unbounded even in quite restricted classes. In particular, the presence of an induced biclique $K_{\ell,\ell}$ forces tree-independence number at least $\ell$. This leads to the question whether large induced bicliques are the only obstruction to bounded tree-independence number in natural hereditary classes. A conjecture of Dallard, Krnc, Kwon, Milanič, Munaro, Štorgel, and Wiederrecht states that for all positive integers $t$ and $\ell$, ${\{P_t,K_{\ell,\ell}\}}$-free graphs have bounded tree-independence number. We prove this conjecture for ${t=5}$ by showing that every ${\{P_5,K_{\ell,\ell}\}}$-free graph has tree-independence number at most ${4\ell-4}$. We also obtain related bounds for the weaker parameter of $α$-degeneracy and answer a question of Hilaire, Milanič, and Vasić whether tree-independence number of ${\{P_5,K_{\ell,\ell}\}}$-free graphs exceeds $\ell$ by at most an additive constant.

math.CO