Ignacio Ballesteros , Clara Benac-Earle , Julio Mariño , Lars-Åke Fredlund , Ángel Herranz
{"title":"Generation of algebraic data type values using evolutionary algorithms","authors":"Ignacio Ballesteros , Clara Benac-Earle , Julio Mariño , Lars-Åke Fredlund , Ángel Herranz","doi":"10.1016/j.jlamp.2024.101022","DOIUrl":"10.1016/j.jlamp.2024.101022","url":null,"abstract":"<div><div>Automatic data generation is a key component of automated software testing. Random generation of test input data can uncover some bugs in software, but its effectiveness decreases when those inputs must satisfy complex properties in order to be meaningful. In this work, we study an evolutionary approach to generate values that can be encoded as algebraic data types plus additional properties. First, the approach is illustrated with the generation of sorted lists. Then, we generalize the technique to arbitrary algebraic data type definitions. Finally, we consider the problem of constrained data types where the data must satisfy some nontrivial property, using the well-known example of red-black trees for our experiments. This example will allow us to introduce the main principles of evolutionary algorithms and how these principles can be applied to obtain valid, nontrivial samples of a given data structure. Our experiments have revealed that this evolutionary approach is able to improve diversity, and increase the size of valid generated values with respect to simple random sampling techniques.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"143 ","pages":"Article 101022"},"PeriodicalIF":0.7,"publicationDate":"2024-11-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142701496","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Alexandre Madeira , José Nuno Oliveira , José Proença , Renato Neves
{"title":"Logic and Calculi for All on the occasion of Luís Barbosa’s 60th birthday","authors":"Alexandre Madeira , José Nuno Oliveira , José Proença , Renato Neves","doi":"10.1016/j.jlamp.2024.101023","DOIUrl":"10.1016/j.jlamp.2024.101023","url":null,"abstract":"","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"143 ","pages":"Article 101023"},"PeriodicalIF":0.7,"publicationDate":"2024-11-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142745024","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"First order Büchi automata and their application to verification of LTL specifications","authors":"Wenhui Zhang","doi":"10.1016/j.jlamp.2024.101021","DOIUrl":"10.1016/j.jlamp.2024.101021","url":null,"abstract":"<div><div>Büchi automata have applications in formal verification, e.g., in deciding whether a system satisfies given properties. We provide a definition of Büchi automata based on first order logics for representing infinite state systems, and investigate rules for proving emptiness and non-emptiness of such automata. We then apply these rules to solve the problem of verifying correctness of concurrent transition systems, leading to a relatively complete approach for proving and disproving LTL (Linear Temporal Logic) specifications. This approach overcomes weaknesses of existing work based on well-founded sets in the sense that the relative completeness does not depend on additional specification for ensuring progress of non-stuttering transitions. On the practical aspect, we provide a set of examples with an experimental verification condition generation tool to demonstrate the potential applicability of the approach for the verification of concurrent systems.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101021"},"PeriodicalIF":0.7,"publicationDate":"2024-10-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142446083","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Tuning similarity-based fuzzy logic programs","authors":"Ginés Moreno, José A. Riaza","doi":"10.1016/j.jlamp.2024.101020","DOIUrl":"10.1016/j.jlamp.2024.101020","url":null,"abstract":"<div><div>We have recently designed a symbolic extension of <span>FASILL</span> (acronym of “Fuzzy Aggregators and Similarity Into a Logic Language”), where some truth degrees, similarity annotations and fuzzy connectives can be left unknown, so that the user can easily see the impact of their possible values at execution time. By extending our previous results in the development of tuning techniques not dealing yet with similarity relations, in this work we automatically tune <span>FASILL</span> programs by appropriately substituting the symbolic constants appearing on their rules and similarity relations with the concrete values that best satisfy the user's preferences. Firstly, we have formally proved two theoretical results with different levels of generality/practicability for tuning programs in a safe and effective way. Regarding efficiency, we have drastically reduced the exponential complexity of the tuning algorithms by splitting the initial set of symbolic constants in disjoint sets and using thresholding techniques. These effects have been evidenced by several experiments and benchmarks developed with the online tool we provide to verify in practice the high performance of the improved system.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101020"},"PeriodicalIF":0.7,"publicationDate":"2024-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142432865","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Luis Eduardo Bueso de Barrio, Lars-Åke Fredlund, Ángel Herranz, Julio Mariño, Clara Benac Earle
{"title":"Executable contracts for Elixir","authors":"Luis Eduardo Bueso de Barrio, Lars-Åke Fredlund, Ángel Herranz, Julio Mariño, Clara Benac Earle","doi":"10.1016/j.jlamp.2024.101019","DOIUrl":"10.1016/j.jlamp.2024.101019","url":null,"abstract":"<div><div>This article presents the design of a library for attaching and checking executable contracts to code written in the Elixir programming language. In addition to classical contract constructs such as preconditions and postconditions, the library allows specifying exceptional behaviour (i.e., which exceptions are thrown and under which conditions), detecting non-termination issues in recursive functions by specifying a strictly decreasing order in function arguments, and associating timers with function calls to detect slow computations. The library also focuses on language-specific features, enabling the association of contracts with the reception of messages sent by processes and the attachment of constraints to variable names (useful due to variable shadowing in Elixir). Moreover, stateful contracts (i.e., with a model state) permit specifying the behaviour of stateful APIs whose operations can be linearized. Using the stateful contracts, a monitor can be employed to check that the observed state can be explained in terms of possible linearizations.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101019"},"PeriodicalIF":0.7,"publicationDate":"2024-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142424083","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Partially typed multiparty sessions with internal delegation","authors":"Franco Barbanera , Viviana Bono , Mariangiola Dezani-Ciancaglini","doi":"10.1016/j.jlamp.2024.101018","DOIUrl":"10.1016/j.jlamp.2024.101018","url":null,"abstract":"<div><div>A multiparty session formalises a set of concurrent communicating participants. The possibility for a participant to delegate some interactions to another participant is crucial for the expressivity of multiparty sessions. We propose the first type system for multiparty sessions with delegation where some communications between participants can be ignored. This allows us to type some sessions with global types representing interesting protocols, which have no type in the standard type systems. Our type system enjoys Subject Reduction, Session Fidelity and <em>partial</em> Lock-freedom. The last property ensures the absence of <em>locks</em> for participants with non-ignored communications. A sound and complete type inference algorithm is also discussed.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101018"},"PeriodicalIF":0.7,"publicationDate":"2024-09-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142322690","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The expression dependence graph","authors":"Carlos Galindo, Sergio Pérez, Josep Silva","doi":"10.1016/j.jlamp.2024.101016","DOIUrl":"10.1016/j.jlamp.2024.101016","url":null,"abstract":"<div><div>The <em>system dependence graph</em> (SDG) is a widely used program representation for the static analysis of programs. In particular, it is the standard way to represent control and flow dependences between the statements of a program. It is at the core of program slicing, a technique that extracts the part of a program that can influence a given program point (the so-called slicing criterion). In this paper, we identify several program slicing situations (e.g., list comprehensions, <span>try-catch</span> and <span>for</span>) where the representation provided by the SDG is imprecise, and we present an alternative program representation, which is indeed an extension of the SDG, that solves these situations. We call this extension the <em>expression dependence graph</em> (EDG). The EDG redefines the SDG by increasing the granularity of its nodes to <em>abstract syntax tree</em> (AST) nodes. The implications of this change include an improvement in precision, the appearance of new kinds of dependences (besides control and flow dependences), and the possibility of selecting any (sub)expression as the slicing criterion.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101016"},"PeriodicalIF":0.7,"publicationDate":"2024-09-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S2352220824000701/pdfft?md5=e1a070fcd4076ea5219a2aae17e4145c&pid=1-s2.0-S2352220824000701-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142311098","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"On the expressiveness and efficiency of guarded lists in Bach","authors":"Manel Barkallah, Jean-Marie Jacquet","doi":"10.1016/j.jlamp.2024.101017","DOIUrl":"10.1016/j.jlamp.2024.101017","url":null,"abstract":"<div><div>Concurrency theory has received considerable attention, but mostly in the scope of synchronous process algebras such as CCS, CSP, and ACP. As another way of handling concurrency, data-based coordination languages aim to provide a clear separation between interaction and computation by synchronizing processes asynchronously by means of information being available or not on a shared space. Although these languages enjoy interesting properties, verifying program correctness remains challenging. In particular, model checking logic formulae is known to raise performance issues due to the state space explosion problem. In this paper, we propose a guarded list construct as a solution to address this problem. Beyond increasing performance, it also enriches the expressiveness of data-based coordination languages and allows for program transformations that further increase the speed of computations.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101017"},"PeriodicalIF":0.7,"publicationDate":"2024-09-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142311004","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Multifaceted formal methods and their interdisciplinary role — From the cathedral of ‘components as coalgebras’ to the HCI context and the open source software bazaar","authors":"Antonio Cerone","doi":"10.1016/j.jlamp.2024.101006","DOIUrl":"10.1016/j.jlamp.2024.101006","url":null,"abstract":"<div><div>In this article we revisit the history of formal methods with a focus on important aspects that contribute to their interdisciplinary role. We consider: the variability of mathematical representation techniques on which the theoretical foundations of formal methods are based; formal methods multidisciplinarity; their capability to serve at a meta-level in providing the semantics of programming languages, specification and modelling languages as well as higher-level and domain-specific formal notations; and, finally, how some of these higher-level and domain-specific notations may be lifted at an interdisciplinary level.</div><div>Within this historical review, we are inspired by Luís Barbosa's “components as coalgebras” approach in seeing that the duality data-process is underlying all those aspects of formal methods. We also see that such a duality may not only be expressed in universal terms within category theory, but may also be characterised in practical terms and focused applications by two distinct logic paradigms, equational logic for the data and rewriting logic for the process, by two modelling directions, forward process definitions and backward data-driven process transformations, and by the distinction between syntax, defined by the data structures, and semantics, provided by rewrite rules. We use the Maude modelling language to illustrate the application of the data-process duality. In fact, Maude use equational logic to define data types and rewriting logic to express system evolution. Illustrative examples are from the areas of cognitive science and human-computer interaction (HCI).</div><div>We then define a data-driven model transformation, which we call <em>elaborative mining</em>, which adopts a backward perspective to recover a behaviour that was observed in real life but was not predicted forward by the original model. Finally, we see how the “open source software bazaar”, which is a metaphor for the apparently chaotic open source development process, offers us a big data context to lift the driving process for model transformation from deterministic to statistical.</div></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101006"},"PeriodicalIF":0.7,"publicationDate":"2024-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142311003","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Maude2Lean: Theorem proving for Maude specifications using Lean","authors":"Rubén Rubio , Adrián Riesco","doi":"10.1016/j.jlamp.2024.101005","DOIUrl":"10.1016/j.jlamp.2024.101005","url":null,"abstract":"<div><p>Maude is a specification language based on rewriting logic whose programs can be executed, model checked, and analyzed with other automated techniques, but not easily theorem proved. On the other hand, Lean is a modern proof assistant based on the calculus of inductive constructions with a wide library of reusable proofs and definitions. This paper presents a translation from the first formalism to the second, and the <span>maude2lean</span> tool that predictably derives a Lean program from a Maude module. Hence, theorems can be proved in Lean about Maude specifications.</p></div>","PeriodicalId":48797,"journal":{"name":"Journal of Logical and Algebraic Methods in Programming","volume":"142 ","pages":"Article 101005"},"PeriodicalIF":0.7,"publicationDate":"2024-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S2352220824000592/pdfft?md5=4c71774004ee940c316d76725faf003b&pid=1-s2.0-S2352220824000592-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142128938","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}