Results 1 -
9 of
9
Anti-pattern matching
- In European Symposium on Programming – ESOP 2007, LNCS
, 2007
"... Abstract. It is quite appealing to base the description of pattern-based searches on positive as well as negative conditions. We would like for example to specify that we search for white cars that are not station wagons. To this end, we define the notion of anti-patterns and their semantics along w ..."
Abstract
-
Cited by 15 (6 self)
- Add to MetaCart
Abstract. It is quite appealing to base the description of pattern-based searches on positive as well as negative conditions. We would like for example to specify that we search for white cars that are not station wagons. To this end, we define the notion of anti-patterns and their semantics along with some of their properties. We then extend the classical notion of matching between patterns and ground terms to matching between anti-patterns and ground terms. We provide a rule-based algorithm that finds the solutions to such problems and prove its correctness and completeness. Anti-pattern matching is by nature different from disunification and quite interestingly the anti-pattern matching problem is unitary. Therefore the concept is appropriate to ground a powerful extension to pattern-based programming languages and we show how this is used to extend the expressiveness and usability of the Tom language. 1
Mechanized metatheory model-checking
- In 9th International ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming
, 2007
"... The problem of mechanically formalizing and proving metatheoretic properties of programming language calculi, type systems, operational semantics, and related formal systems has received considerable attention recently. However, the dual problem of searching for errors in such formalizations has rec ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
The problem of mechanically formalizing and proving metatheoretic properties of programming language calculi, type systems, operational semantics, and related formal systems has received considerable attention recently. However, the dual problem of searching for errors in such formalizations has received comparatively little attention. In this paper, we consider the problem of bounded model-checking for metatheoretic properties of formal systems specified using nominal logic. In contrast to the current state of the art for metatheory verification, our approach is fully automatic, does not require expertise in theorem proving on the part of the user, and produces counterexamples in the case that a flaw is detected. We present two implementations of this technique, one based on negation-as-failure and one based on negation elimination, along with experimental results showing that these techniques are fast enough to be used interactively to debug systems as they are developed.
Intensionality, Extensionality, and Proof Irrelevance in Modal Type Theory
- Pages 221–230 of: Symposium on Logic in Computer Science
, 2001
"... We develop a uniform type theory that integrates intensionality, extensionality, and proof irrelevance as judgmental concepts. Any object may be treated intensionally (subject only to #-conversion), extensionally (subject also to ##-conversion), or as irrelevant (equal to any other object at the sam ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
We develop a uniform type theory that integrates intensionality, extensionality, and proof irrelevance as judgmental concepts. Any object may be treated intensionally (subject only to #-conversion), extensionally (subject also to ##-conversion), or as irrelevant (equal to any other object at the same type), depending on where it occurs. Modal restrictions developed in prior work for simple types are generalized and employed to guarantee consistency between these views of objects. Potential applications are in logical frameworks, functional programming, and the foundations of first-order modal logics.
The Relative Complement Problem for Higher-Order Patterns
- Proceedings of the 1999 International Conference on Logic Programming (ICLP'99
, 1999
"... We address the problem of complementing higher-order patterns without repetitions of free variables. Differently from the first-order case, the complement of a pattern cannot, in general, be described by a pattern, or even by a finite set of patterns. We therefore generalize the simply-typed -calcul ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We address the problem of complementing higher-order patterns without repetitions of free variables. Differently from the first-order case, the complement of a pattern cannot, in general, be described by a pattern, or even by a finite set of patterns. We therefore generalize the simply-typed -calculus to include an internal notion of strict function so that we can directly express that a term must depend on a given variable. We show that, in this more expressive calculus, finite sets of patterns without repeated variables are closed under complement and unification. Our principal application is the transformational approach to negation in higher-order logic programs. 1 Introduction In most functional and logic programming languages the notion of a pattern, together with the requisite algorithms for matching or unification, play an important role in the operational semantics. Besides unification other problems such as generalization or complement also arise frequently. In this paper w...
A Step-to-Step Example of Negation Elimination in Hereditary Harrop Formulae
"... exp) ! exp: app : exp ! (exp ! exp): linear : exp ! o: linx : (exp ! exp) ! o: The representation function is given by: pxq = x : exp px : eq = lam (x : exp: peq) pe 1 e 2 q = app pe 1 q pe 2 q pe linearq = linear peq px : e linear in xq = linx(x : exp: peq) 1 We use object-logic capital to av ..."
Abstract
- Add to MetaCart
exp) ! exp: app : exp ! (exp ! exp): linear : exp ! o: linx : (exp ! exp) ! o: The representation function is given by: pxq = x : exp px : eq = lam (x : exp: peq) pe 1 e 2 q = app pe 1 q pe 2 q pe linearq = linear peq px : e linear in xq = linx(x : exp: peq) 1 We use object-logic capital to avoid confusion w
Irrelevance, Polymorphism, and Erasure in Type Theory
, 2008
"... Dependent type theory is a proven technology for verified functional programming in which programs and their correctness proofs may be developed using the same rules in a single formal system. In practice, large portions of programs developed in this way have no computational relevance to the ultima ..."
Abstract
- Add to MetaCart
Dependent type theory is a proven technology for verified functional programming in which programs and their correctness proofs may be developed using the same rules in a single formal system. In practice, large portions of programs developed in this way have no computational relevance to the ultimate result of the program and should therefore be removed prior to program execution. In previous work on identifying and removing irrelevant portions of programs, computational irrelevance is usually treated as an intrinsic property of program expressions. We find that such an approach forces programmers to maintain two copies of commonly used datatypes: a computationally relevant one and a computationally irrelevant one. We instead develop an extrinsic notion of computational irrelevance and find that it yields several benefits including (1) avoidance of the above mentioned code duplication problem; (2) an identification of computational irrelevance with a highly general form of parametric polymorphism; and (3) an elective (i.e., user-2 directed) notion of proof irrelevance. We also develop a program analysis for identifying irrelevant expressions and show how previously studied types embodying computational irrelevance (including subset types and squash types) are expressible in the extension of type theory developed herein.
Anti-patterns for Rule-based Languages
, 2010
"... Negation is intrinsic to human thinking and most of the time when searching for something, we base our patterns on both positive and negative conditions. This should be naturally reflected in software that provide pattern-based searches. We would like for example to specify that we search for white ..."
Abstract
- Add to MetaCart
Negation is intrinsic to human thinking and most of the time when searching for something, we base our patterns on both positive and negative conditions. This should be naturally reflected in software that provide pattern-based searches. We would like for example to specify that we search for white cars that are not station wagons, or that we search for a list of objects that does not contain two identical elements. In this paper we extend the notion of pattern to the one of anti-pattern, i.e. patterns that may contain complement symbols. This concept is appropriate to design powerful extensions to pattern-based programming languages like Ml, Asf+Sdf, Stratego, Maude, Elan or Tom and we show how this is used to extend the expressiveness and usability of the Tom language. We further define formally the semantics of anti-patterns both in the syntactic case, i.e. when the symbols have no specific theory associated, and modulo an arbitrary equational theory E. We then extend the classical notion of matching between patterns and ground terms to matching between anti-patterns and ground terms. Solving such problems can be performed either using general techniques as disunification, which we exemplify in the syntactical case, or more tailored and efficient approaches, which we chose to illustrate on the specific and very useful case of associativity, possibly with a unity. This allows us to be generic enough to give in this framework a very simple and natural expression of, for instance, the AllDiff standard predicate of constraint programming.
Recueil d’articles
"... Annexes du manuscrit d’HDR — Le calcul de réécritureiiSommaire Présentations du calcul de réécriture 1 Propriétés des calculs à motifs 57 Extensions du calcul de réécriture 75 Expressivité du calcul de réécriture 147 Systèmes de types pour le calcul de réécriture 195 Applications 225Présentations du ..."
Abstract
- Add to MetaCart
Annexes du manuscrit d’HDR — Le calcul de réécritureiiSommaire Présentations du calcul de réécriture 1 Propriétés des calculs à motifs 57 Extensions du calcul de réécriture 75 Expressivité du calcul de réécriture 147 Systèmes de types pour le calcul de réécriture 195 Applications 225Présentations du calcul de réécriture [CK01] [CKL01a]

