On the Expressive Power of Languages for Static Variability
Paul Maximilian Bittner, Alexander Schultheiß, Benjamin Moosherr, Jeffrey M. Young, Leopoldo Teixeira, Eric Walkingshaw, Parisa Ataei, Thomas Thüm
Abstract
Variability permeates software development to satisfy ever-changing requirements and mass-customization needs. A prime example is the Linux kernel, which employs the C preprocessor to specify a set of related but distinct kernel variants. To study, analyze, and verify variational software, several formal languages have been proposed. For example, the choice calculus has been successfully applied for type checking and symbolic execution of configurable software, while other formalisms have been used for variational model checking, change impact analysis, among other use cases. Yet, these languages have not been formally compared, hence, little is known about their relationships. Crucially, it is unclear to what extent one language subsumes another, how research results from one language can be applied to other languages, and which language is suitable for which purpose or domain. In this paper, we propose a formal framework to compare the expressive power of languages for static (i.e. compile-time) variability. By establishing a common semantic domain to capture a widely used intuition of explicit variability, we can formulate the basic, yet to date neglected, properties of soundness, completeness, and expressiveness for variability languages. We then prove the (un)soundness and (in)completeness of a range of existing languages, and relate their ability to express the same variational systems. We implement our framework as an extensible open source Agda library in which proofs act as correct compilers between languages or differencing algorithms. We find different levels of expressiveness as well as complete and incomplete languages w.r.t. our unified semantic domain, with the choice calculus being among the most expressive languages.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext e8b3c71a-45a1-4534-baf5-8d4c8eb14b14Cited by top-tier papers1
Ask how each one uses itBuilds on16
- An empirical analysis of the costs of clone- and platform-oriented software reuseJacob Krüger, Thorsten BergerFSE 2020 · 81 citations
- Understanding and discovering software configuration dependencies in cloud and datacenter systemsQingrong Chen, Teng Wang, Owolabi Legunsen, Shanshan Li et al.FSE 2020 · 54 citations
- Finding broken Linux configuration specifications by statically analyzing the Kconfig languageJeho Oh, Necip Fazil Yildiran, Julian Braha, Paul GazzilloFSE 2021 · 46 citations
- Control Parameters Considered Harmful: Detecting Range Specification Bugs in Drone Configuration Modules via Learning-Guided SearchRuidong Han, Chao Yang, Siqi Ma, Jianfeng Ma et al.ICSE 2022 · 27 citations
- Tseitin or not Tseitin? The Impact of CNF Transformations on Feature-Model AnalysesElias Kuiter, Sebastian Krieter, Chico Sundermann, Thomas Thüm et al.ASE 2022 · 24 citations
Related papers
- SugarC: Scalable Desugaring of Real-World Preprocessor Usage into Pure CZach Patterson, Zenong Zhang, Brent Pappas, Shiyi Wei et al.ICSE 2022 · 36 citations
- Automatic and efficient variability-aware lifting of functional programsRamy Shahin, Marsha ChechikOOPSLA 2020 · 18 citations
- Classifying edits to variability in source codePaul Maximilian Bittner, Christof Tinnes, Alexander Schultheiß, Sören Viegener et al.FSE 2022 · 8 citations
- The Essence of Verilog: A Tractable and Tested Operational Semantics for VerilogQinlin Chen, Nairen Zhang, Jinpeng Wang, Tian Tan et al.OOPSLA 2023 · 10 citations
- Formal metatheory of second-order abstract syntaxMarcelo Fiore, Dmitrij SzamozvancevPOPL 2022 · 20 citations
