8 research outputs found

    La boucle de fuzzing CFL : un cadre de test pour Cubicle

    No full text
    L'objectif de cette thèse est d'intégrer une technique de test dans le model checker Cubicle. Pour cela, nous avons étendu Cubicle avec une boucle de Fuzzing (appelée Cubicle Fuzzy Loop - CFL). Cette nouvelle fonctionnalité remplit deux fonctions principales.Tout d'abord, elle sert d'oracle pour l'algorithme de génération d'invariants de Cubicle. Ce dernier, basé sur une exploration en avant de l'ensemble des états atteignables, était fortement limité par ses heuristiques lorsqu'elles sont appliquées à des modèles fortementconcurrents. CFL apporte une nouvelle manière plus efficace d'explorer ces modèles, en particulier il permet de visiter beaucoup plus d'états pertinents.Son deuxième objectif est de détecter rapidement et efficacement les problèmes et les vulnérabilités dans les modèles de toutes tailles, ainsi que de capturer les deadlocks.L'intégration de CFL nous a également permis d'augmenter l'expressivité du langage d'entrée de Cubicle, avec l'inclusion de nouvelles primitives pour manipuler des threads (verrous, sémaphores, etc.).Enfin, nous avons construit un cadre de test autour de Cubicle et de CFL avec un interpréteur interactif, utile pour le débogage, le prototypage et l'exécution pas à pas des modèles. Ce nouveau système a été appliqué avec succès sur une étude de cas d'un algorithme deconsensus distribué pour blockchains.The goal of this thesis is to integrate a testing technique into the Cubicle model checker. To do this, we extended Cubicle with a Fuzzing loop (called the Cubicle Fuzzy Loop - CFL). This new feature serves two primary purposes.Firstly, it acts as an oracle for Cubicle's invariant generation algorithm. The existing algorithm, which is based on a forward exploration of reachable states, was significantly limited by its heuristics when applied to highly concurrent models. CFL introduces amore efficient way to explore these models, visiting a larger number of relevant states.Its second objective is to quickly and efficiently detect issues and vulnerabilities in models of all sizes, as well as detect deadlocks.The integration of CFL has also enabled us to enhance the expressiveness of Cubicle's input language, including new primitives for manipulating threads (locks, semaphores, etc.).Lastly, we built a testing framework around Cubicle and CFL with an interactive interpreter, which is useful for debugging, prototyping, and step-by-step execution of models. This new system has been successfully applied in a case study of a distributed consensus algorithm for blockchains

    La boucle de fuzzing CFL : un cadre de test pour Cubicle

    No full text
    The goal of this thesis is to integrate a testing technique into the Cubicle model checker. To do this, we extended Cubicle with a Fuzzing loop (called the Cubicle Fuzzy Loop - CFL). This new feature serves two primary purposes.Firstly, it acts as an oracle for Cubicle's invariant generation algorithm. The existing algorithm, which is based on a forward exploration of reachable states, was significantly limited by its heuristics when applied to highly concurrent models. CFL introduces amore efficient way to explore these models, visiting a larger number of relevant states.Its second objective is to quickly and efficiently detect issues and vulnerabilities in models of all sizes, as well as detect deadlocks.The integration of CFL has also enabled us to enhance the expressiveness of Cubicle's input language, including new primitives for manipulating threads (locks, semaphores, etc.).Lastly, we built a testing framework around Cubicle and CFL with an interactive interpreter, which is useful for debugging, prototyping, and step-by-step execution of models. This new system has been successfully applied in a case study of a distributed consensus algorithm for blockchains.L'objectif de cette thèse est d'intégrer une technique de test dans le model checker Cubicle. Pour cela, nous avons étendu Cubicle avec une boucle de Fuzzing (appelée Cubicle Fuzzy Loop - CFL). Cette nouvelle fonctionnalité remplit deux fonctions principales.Tout d'abord, elle sert d'oracle pour l'algorithme de génération d'invariants de Cubicle. Ce dernier, basé sur une exploration en avant de l'ensemble des états atteignables, était fortement limité par ses heuristiques lorsqu'elles sont appliquées à des modèles fortementconcurrents. CFL apporte une nouvelle manière plus efficace d'explorer ces modèles, en particulier il permet de visiter beaucoup plus d'états pertinents.Son deuxième objectif est de détecter rapidement et efficacement les problèmes et les vulnérabilités dans les modèles de toutes tailles, ainsi que de capturer les deadlocks.L'intégration de CFL nous a également permis d'augmenter l'expressivité du langage d'entrée de Cubicle, avec l'inclusion de nouvelles primitives pour manipuler des threads (verrous, sémaphores, etc.).Enfin, nous avons construit un cadre de test autour de Cubicle et de CFL avec un interpréteur interactif, utile pour le débogage, le prototypage et l'exécution pas à pas des modèles. Ce nouveau système a été appliqué avec succès sur une étude de cas d'un algorithme deconsensus distribué pour blockchains

    La boucle de fuzzing CFL : un cadre de test pour Cubicle

    No full text
    The goal of this thesis is to integrate a testing technique into the Cubicle model checker. To do this, we extended Cubicle with a Fuzzing loop (called the Cubicle Fuzzy Loop - CFL). This new feature serves two primary purposes.Firstly, it acts as an oracle for Cubicle's invariant generation algorithm. The existing algorithm, which is based on a forward exploration of reachable states, was significantly limited by its heuristics when applied to highly concurrent models. CFL introduces amore efficient way to explore these models, visiting a larger number of relevant states.Its second objective is to quickly and efficiently detect issues and vulnerabilities in models of all sizes, as well as detect deadlocks.The integration of CFL has also enabled us to enhance the expressiveness of Cubicle's input language, including new primitives for manipulating threads (locks, semaphores, etc.).Lastly, we built a testing framework around Cubicle and CFL with an interactive interpreter, which is useful for debugging, prototyping, and step-by-step execution of models. This new system has been successfully applied in a case study of a distributed consensus algorithm for blockchains.L'objectif de cette thèse est d'intégrer une technique de test dans le model checker Cubicle. Pour cela, nous avons étendu Cubicle avec une boucle de Fuzzing (appelée Cubicle Fuzzy Loop - CFL). Cette nouvelle fonctionnalité remplit deux fonctions principales.Tout d'abord, elle sert d'oracle pour l'algorithme de génération d'invariants de Cubicle. Ce dernier, basé sur une exploration en avant de l'ensemble des états atteignables, était fortement limité par ses heuristiques lorsqu'elles sont appliquées à des modèles fortementconcurrents. CFL apporte une nouvelle manière plus efficace d'explorer ces modèles, en particulier il permet de visiter beaucoup plus d'états pertinents.Son deuxième objectif est de détecter rapidement et efficacement les problèmes et les vulnérabilités dans les modèles de toutes tailles, ainsi que de capturer les deadlocks.L'intégration de CFL nous a également permis d'augmenter l'expressivité du langage d'entrée de Cubicle, avec l'inclusion de nouvelles primitives pour manipuler des threads (verrous, sémaphores, etc.).Enfin, nous avons construit un cadre de test autour de Cubicle et de CFL avec un interpréteur interactif, utile pour le débogage, le prototypage et l'exécution pas à pas des modèles. Ce nouveau système a été appliqué avec succès sur une étude de cas d'un algorithme deconsensus distribué pour blockchains

    The Cubicle Fuzzy Loop : A Fuzzing-Based Extension for the Cubicle Model Checker

    No full text
    This paper presents the Cubicle Fuzzy Loop (CFL), a fuzzingbased extension for Cubicle, a model checker for parameterized systems. To prove safety, Cubicle generates invariants, making use of forward exploration strategies like BFS or DFS on finite model instances. However, these standard algorithms are quickly faced with the state explosion problem due to Cubicle's purely nondeterministic semantics. This causes them to struggle at discovering critical states, hindering invariant generation. CFL replaces this approach with a powerful DFS-like algorithm inspired by fuzzing. Cubicle's purely nondeterministic execution loop is modified to provide feedback on newly discovered states and visited transitions. This feedback is used by CFL to construct schedulers that guide the model exploration. Not only does this provide Cubicle with a bigger variety of states for generating invariants, it also quickly identifies unsafe models. As a bonus, it adds testing capabilities to Cubicle, such as the ability to detect deadlocks. Our first experiments have yielded promising results. CFL effectively allows Cubicle to generate crucial invariants, useful to handle hierarchical systems, while also being able to trap bad states and deadlocks in hardto-reach areas of such models

    The Cubicle Fuzzy Loop: A Fuzzing-Based Extension for the Cubicle Model Checker

    No full text
    International audienceThis paper presents the Cubicle Fuzzy Loop (CFL), a fuzzing-based extension for Cubicle, a model checker for parameterized systems.To prove safety, Cubicle generates invariants, making use of forward exploration strategies like BFS or DFS on finite model instances. However, these standard algorithms are quickly faced with the state explosion problem due to Cubicle’s purely nondeterministic semantics. This causes them to struggle at discovering critical states, hindering invariant generation.CFL replaces this approach with a powerful DFS-like algorithm inspired by fuzzing. Cubicle’s purely nondeterministic execution loop is modified to provide feedback on newly discovered states and visited transitions. This feedback is used by CFL to construct schedulers that guide the model exploration. Not only does this provide Cubicle with a bigger variety of states for generating invariants, it also quickly identifies unsafe models. As a bonus, it adds testing capabilities to Cubicle, such as the ability to detect deadlocks.Our first experiments have yielded promising results. CFL effectively allows Cubicle to generate crucial invariants, useful to handle hierarchical systems, while also being able to trap bad states and deadlocks in hard-to-reach areas of such models

    Formally Documenting Tenderbake (Short Paper)

    No full text

    Formally Documenting Tenderbake

    No full text
    International audienceIn this paper, we propose a formal documentation of Tenderbake, the new Tezos consensus algorithm, slated to replace the current Emmy family algorithms. The algorithm is broken down to its essentials and represented as an automaton. The automaton models the various aspects of the algorithm: (i) the individual participant, referred to as a baker, (ii) how bakers communicate over the network (the mempool) and (iii) the overall network the bakers operate in. We also present a TLA+ implementation, which has proven to be useful for reasoning about this automaton and refining our documentation. The main goal of this work is to serve as a formal foundation for extracting intricate test scenarios and verifying invariants that Tenderbake's implementation should satisfy
    corecore