Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automated logical verification based on trace abstractions
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
Automatic verification of pointer programs using monadic second-order logic
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Mona: Monadic Second-Order Logic in Practice
TACAS '95 Proceedings of the First International Workshop on Tools and Algorithms for Construction and Analysis of Systems
Three Approaches to Type Structure
CAAP '85 Proceedings of the International Joint Conference on Theory and Practice of Software Development (TAPSOFT), Volume 1: Colloquium on Trees in Algebra and Programming: Mathematical Foundations of Software Development
Algorithms for Guided Tree Automata
WIA '96 Revised Papers from the First International Workshop on Implementing Automata
Hardware Verification using Monadic Second-Order Logic
Proceedings of the 7th International Conference on Computer Aided Verification
LISA: A Specification Language Based on WS2S
CSL '97 Selected Papers from the11th International Workshop on Computer Science Logic
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Compile-Time Debugging of C Programs Working on Trees
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
An Approach to Symbolic Test Generation
IFM '00 Proceedings of the Second International Conference on Integrated Formal Methods
When and how to develop domain-specific languages
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
We propose a new high-level programming notation, called FIDO, that we have designed to concisely express regular sets of strings or trees. In particular, it can be viewed as a domain-specific language for the expression of finite-state automata on large alphabets (of sometimes astronomical size). FIDO is based on a combination of mathematical logic and programming language concepts. This combination shares no similarities with usual logic programming languages. FIDO compiles into finite-state string or tree automata, so there is no concept of run-time.It has already been applied to a variety of problems of considerable complexity and practical interest. In the present paper, we motivate the need for a language like FIDO, and discuss our design and its implementation. Also, we briefly discuss design criteria for domain-specific languages that we have learned from the work with FIDO. We show how recursive data types, unification, implicit coercions, and subtyping can be merged with a variation of predicate logic, called the Monadic Second-order Logic (M2L) on trees. FIDO is translated first into pure M2L via suitable encodings, and finally into finite-state automata through the MONA tool.