Results 1  10
of
10
Antipattern matching
 In European Symposium on Programming – ESOP 2007, LNCS
, 2007
"... Abstract. It is quite appealing to base the description of patternbased 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 antipatterns and their semantics along w ..."
Abstract

Cited by 20 (7 self)
 Add to MetaCart
Abstract. It is quite appealing to base the description of patternbased 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 antipatterns 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 antipatterns and ground terms. We provide a rulebased algorithm that finds the solutions to such problems and prove its correctness and completeness. Antipattern matching is by nature different from disunification and quite interestingly the antipattern matching problem is unitary. Therefore the concept is appropriate to ground a powerful extension to patternbased programming languages and we show how this is used to extend the expressiveness and usability of the Tom language. 1
Mechanized metatheory modelchecking
 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 9 (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 modelchecking 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 negationasfailure 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 5 (3 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 firstorder modal logics.
The Relative Complement Problem for HigherOrder Patterns
 Proceedings of the 1999 International Conference on Logic Programming (ICLP'99
, 1999
"... We address the problem of complementing higherorder patterns without repetitions of free variables. Differently from the firstorder 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 simplytyped calcul ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
We address the problem of complementing higherorder patterns without repetitions of free variables. Differently from the firstorder 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 simplytyped 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 higherorder 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...
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]
Intensionality, Extensionality, and Proof Irrelevance in Modal Type Theory
"... 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
 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 firstorder modal logics. Our type theory contrasts with previous approaches that a priori distinguish propositions (whose proofs are all identified—only their existence is important) from specifications (whose implementations are subject to some definitional equalities). 1
Antipatterns for Rulebased 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 patternbased 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 patternbased 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 antipattern, i.e. patterns that may contain complement symbols. This concept is appropriate to design powerful extensions to patternbased 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 antipatterns 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 antipatterns 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.
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., user2 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.
A SteptoStep 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 objectlogic 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 objectlogic capital to avoid confusion w