Filters








27 Hits in 0.85 sec

Turning Inductive into Equational Specifications [chapter]

Stefan Berghofer, Lukas Bulwahn, Florian Haftmann
2009 Lecture Notes in Computer Science  
Inductively defined predicates are frequently used in formal specifications. Using the theorem prover Isabelle, we describe an approach to turn a class of systems of inductively defined predicates into a system of equations using data flow analysis; the translation is carried out inside the logic and resulting equations can be turned into functional program code in SML, OCaml or Haskell using the existing code generator of Isabelle. Thus we extend the scope of code generation in Isabelle from
more » ... nctional to functional-logic programs while leaving the trusted foundations of code generation itself intact.
doi:10.1007/978-3-642-03359-9_11 fatcat:tmcrlndatjgplk3b3tk4eeuqxi

Smart test data generators via logic programming

Lukas Bulwahn, Marc Herbstritt
2011 International Conference on Logic Programming  
We present a novel counterexample generator for the interactive theorem prover Isabelle based on a compiler that synthesizes test data generators for functional programming languages (e.g. Standard ML, OCaml) from specifications in Isabelle. In contrast to naive type-based test data generators, the smart generators take the preconditions into account and only generate tests that fulfill the preconditions. The smart generators are constructed by a compiler that reformulates the preconditions as
more » ... ogic programs and analyzes them by an enriched mode inference. From this inference, the compiler can construct the desired generators in the functional programming language. These test data generators are applied to find errors in specifications, as we show in a case study of a hotel key card system. ACM Subject Classification D.2.5 Testing and Debugging
doi:10.4230/lipics.iclp.2011.139 dblp:conf/iclp/Bulwahn11 fatcat:g7l7fs27rfamtgfn56krfwz42m

Animating the Formalised Semantics of a Java-Like Language [chapter]

Andreas Lochbihler, Lukas Bulwahn
2011 Lecture Notes in Computer Science  
Considerable effort has gone into the techniques of extracting executable code from formal specifications and animating them. We show how to apply these techniques to the large JinjaThreads formalisation. It models a substantial subset of multithreaded Java source and bytecode in Isabelle/HOL and focuses on proofs and modularity whereas code generation was of little concern in its design. Employing Isabelle's code generation facilities, we obtain a verified Java interpreter that is sufficiently
more » ... efficient for running small Java programs. To this end, we present refined implementations for common notions such as the reflexive transitive closure and Russell's definite description operator. From our experience, we distill simple guidelines on how to develop future formalisations with executability in mind.
doi:10.1007/978-3-642-22863-6_17 fatcat:hwsqw6rkdjgkjbxvc2rk57qnx4

Automatic Proof and Disproof in Isabelle/HOL [chapter]

Jasmin Christian Blanchette, Lukas Bulwahn, Tobias Nipkow
2011 Lecture Notes in Computer Science  
Isabelle/HOL is a popular interactive theorem prover based on higherorder logic. It owes its success to its ease of use and powerful automation. Much of the automation is performed by external tools: The metaprover Sledgehammer relies on resolution provers and SMT solvers for its proof search, the counterexample generator Quickcheck uses the ML compiler as a fast evaluator for ground formulas, and its rival Nitpick is based on the model finder Kodkod, which performs a reduction to SAT. Together
more » ... with the Isar structured proof format and a new asynchronous user interface, these tools have radically transformed the Isabelle user experience. This paper provides an overview of the main automatic proof and disproof tools.
doi:10.1007/978-3-642-24364-6_2 fatcat:y4crzmmegfhybfp5xu2bwlxoae

Imperative Functional Programming with Isabelle/HOL [chapter]

Lukas Bulwahn, Alexander Krauss, Florian Haftmann, Levent Erkök, John Matthews
2008 Lecture Notes in Computer Science  
We introduce a lightweight approach for reasoning about programs involving imperative data structures using the proof assistant Isabelle/HOL. It is based on shallow embedding of programs, a polymorphic heap model using enumeration encodings and type classes, and a state-exception monad similar to known counterparts from Haskell. Existing proof automation tools are easily adapted to provide a verification environment. The framework immediately allows for correct code generation to ML and
more » ... Two case studies demonstrate our approach: An array-based checker for resolution proofs, and a more efficient bytecode verifier. Supported by DFG project NI 491/10-1
doi:10.1007/978-3-540-71067-7_14 fatcat:lcedkeoly5fzxol5ttbj6ezv24

Automatically Generated Safety Mechanisms from Semi-Formal Software Safety Requirements [chapter]

Raphael Fonte Boa Trindade, Lukas Bulwahn, Christoph Ainhauser
2014 Lecture Notes in Computer Science  
Today's automobiles incorporate a great number of functions that are realized by software. An increasing number of safety-critical functions also follow this trend. For the development of such functions, the ISO 26262 demands a number of additional steps to be performed compared to common software engineering activities. We address some of these demands with means to semi-formally express software safety requirements, tools to automatically implement these requirements, and artifacts and
more » ... ility information that can be used for safety case documentation. Through a hierarchical classification of safety mechanisms, a semi-formal specification language for requirements, a generation engine and a case study on a production-model automotive system, we demonstrate: first, how expert knowledge of the functional safety domain can be captured, second, how the tedious and error prone task of manually implementing safety mechanisms can be automated, and third, how this serves as a basis for formal safety argumentation.
doi:10.1007/978-3-319-10506-2_19 fatcat:yqc7ygpemjatxh34mz7zh7veka

Finding Lexicographic Orders for Termination Proofs in Isabelle/HOL [chapter]

Lukas Bulwahn, Alexander Krauss, Tobias Nipkow
Lecture Notes in Computer Science  
We present a simple method to formally prove termination of recursive functions by searching for lexicographic combinations of size measures. Despite its simplicity, the method turns out to be powerful enough to solve a large majority of termination problems encountered in daily theorem proving practice. 1 The guessing of termination orderings in HOL4 is unpublished work by Slind, extending his work on function definitions [20, 21] .
doi:10.1007/978-3-540-74591-4_5 fatcat:sjeccssa6jfxrjeo25r7k5x3vu

The Sound of Silence: Mining Security Vulnerabilities from Secret Integration Channels in Open-Source Projects [article]

Ralf Ramsauer, Lukas Bulwahn, Daniel Lohmann, Wolfgang Mauerer
2020 pre-print
Public development processes are a key characteristic of open source projects. However, fixes for vulnerabilities are usually discussed privately among a small group of trusted maintainers, and integrated without prior public involvement. This is supposed to prevent early disclosure, and cope with embargo and non-disclosure agreement (NDA) rules. While regular development activities leave publicly available traces, fixes for vulnerabilities that bypass the standard process do not. We present a
more » ... ata-mining based approach to detect code fragments that arise from such infringements of the standard process. By systematically mapping public development artefacts to source code repositories, we can exclude regular process activities, and infer irregularities that stem from non-public integration channels. For the Linux kernel, the most crucial component of many systems, we apply our method to a period of seven months before the release of Linux 5.4. We find 29 commits that address 12 vulnerabilities. For these vulnerabilities, our approach provides a temporal advantage of 2 to 179 days to design exploits before public disclosure takes place, and fixes are rolled out. Established responsible disclosure approaches in open development processes are supposed to limit premature visibility of security vulnerabilities. However, our approach shows that, instead, they open additional possibilities to uncover such changes that thwart the very premise. We conclude by discussing implications and partial countermeasures.
doi:10.1145/3411495.3421360 arXiv:2009.01694v1 fatcat:qzb73lyblrd23kepyrlconxt4y

Recursive Definitions of Monadic Functions

Alexander Krauss
2010 Electronic Proceedings in Theoretical Computer Science  
Acknowledgments I want to thank Lukas Bulwahn for many interesting discussions about improving tool support for Imperative HOL, and for providing helpful feedback on a draft of this paper and the implementation  ...  For example, in ongoing work, Bulwahn is formalizing an imperative version of unification.  ... 
doi:10.4204/eptcs.43.1 fatcat:uakxpxo4mvakflfwwyd3imoeve

Foundational (Co)datatypes and (Co)recursion for Higher-Order Logic [chapter]

Julian Biendarra, Jasmin Christian Blanchette, Aymeric Bouzy, Martin Desharnais, Mathias Fleury, Johannes Hölzl, Ondřej Kunčar, Andreas Lochbihler, Fabian Meier, Lorenz Panny, Andrei Popescu, Christian Sternagel (+2 others)
2017 Lecture Notes in Computer Science  
We are also indebted to Andreas Abel, Stefan Berghofer, Sascha Böhme, Lukas Bulwahn, Elsa Gunter, Florian Haftmann, Martin Hofmann, Brian Huffman, Lars Hupel, Alexander Krauss, Peter Lammich, Rustan Leino  ... 
doi:10.1007/978-3-319-66167-4_1 fatcat:oyojuyu32rc4dk3ritsvdzqhma

Fast LCF-Style Proof Reconstruction for Z3 [chapter]

Sascha Böhme, Tjark Weber
2010 Lecture Notes in Computer Science  
Acknowledgments The authors are grateful to Nikolaj Bjørner and Leonardo de Moura for their help with Z3, to Yeting Ge for his help on proof reconstruction for CVC3, and to Alexander Krauss and Lukas Bulwahn  ... 
doi:10.1007/978-3-642-14052-5_14 fatcat:yvi5yovfijayhmc6nnkj34mfju

Foundational (Co)datatypes and (Co)recursion for Higher-Order Logic

Julian Biendarra, Jasmin Christian Blanchette, Aymeric Bouzy, Martin Desharnais, Mathias Fleury, Johannes Hölzl, Ondřej Kunčar, Andreas Lochbihler, Fabian Meier, Lorenz Panny, Andrei Popescu, Christian Sternagel (+2 others)
2017 Zenodo  
We are also indebted to Andreas Abel, Stefan Berghofer, Sascha Böhme, Lukas Bulwahn, Elsa Gunter, Florian Haftmann, Martin Hofmann, Brian Huffman, Lars Hupel, Alexander Krauss, Peter Lammich, Rustan Leino  ... 
doi:10.5281/zenodo.3228083 fatcat:qcnc36ufqbea3ghgqu7hhkkuw4

More SPASS with Isabelle [chapter]

Jasmin Christian Blanchette, Andrei Popescu, Daniel Wand, Christoph Weidenbach
2012 Lecture Notes in Computer Science  
We are also grateful to Lukas Bulwahn, Laura Faust, Lawrence Paulson, Mark Summerfield, and the anonymous reviewers for suggesting textual improvements.  ... 
doi:10.1007/978-3-642-32347-8_24 fatcat:owxenyb52vezhl4j36he3vabqu

Nitpick: A Counterexample Generator for Higher-Order Logic Based on a Relational Model Finder [chapter]

Jasmin Christian Blanchette, Tobias Nipkow
2010 Lecture Notes in Computer Science  
Stefan Berghofer, Lukas Bulwahn, Marcelo Frias, Florian Haftmann, Alexander Krauss, Mark Summerfield, Emina Torlak, and several anonymous reviewers provided useful comments on drafts of this paper.  ... 
doi:10.1007/978-3-642-14052-5_11 fatcat:2sj3mwdaajfe5g634aethf7nnm

Certification of Nontermination Proofs [chapter]

Christian Sternagel, René Thiemann
2012 Lecture Notes in Computer Science  
Acknowledgments We thank Lukas Bulwahn for helpful information on Isabelle/HOL's predicate compiler.  ... 
doi:10.1007/978-3-642-32347-8_18 fatcat:myagdtrcaffo5gymgzwxubzika
« Previous Showing results 1 — 15 out of 27 results