Results 1  10
of
11
Semantic subtyping with an SMT solver
, 2010
"... We study a firstorder functional language with the novel combination of the ideas of refinement type (the subset of a type to satisfy a Boolean expression) and typetest (a Boolean expression testing whether a value belongs to a type). Our core calculus can express a rich variety of typing idioms; ..."
Abstract

Cited by 31 (1 self)
 Add to MetaCart
We study a firstorder functional language with the novel combination of the ideas of refinement type (the subset of a type to satisfy a Boolean expression) and typetest (a Boolean expression testing whether a value belongs to a type). Our core calculus can express a rich variety of typing idioms; for example, intersection, union, negation, singleton, nullable, variant, and algebraic types are all derivable. We formulate a semantics in which expressions denote terms, and types are interpreted as firstorder logic formulas. Subtyping is defined as valid implication between the semantics of types. The formulas are interpreted in a specific model that we axiomatize using standard firstorder theories. On this basis, we present a novel typechecking algorithm able to eliminate many dynamic tests and to detect many errors statically. The key idea is to rely on an SMT solver to compute subtyping efficiently. Moreover, interpreting types as formulas allows us to call the SMT solver at runtime to compute instances of types.
Nested refinements: A logic for duck typing
"... Programs written in dynamic languages make heavy use of features — runtime type tests, valueindexed dictionaries, polymorphism, and higherorder functions — that are beyond the reach of type systems that employ either purely syntactic or purely semantic reasoning. We present a core calculus, Syste ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
(Show Context)
Programs written in dynamic languages make heavy use of features — runtime type tests, valueindexed dictionaries, polymorphism, and higherorder functions — that are beyond the reach of type systems that employ either purely syntactic or purely semantic reasoning. We present a core calculus, System D, that merges these two modes of reasoning into a single powerful mechanism of nested refinement types wherein the typing relation is itself a predicate in the refinement logic. System D coordinates SMTbased logical implication and syntactic subtyping to automatically typecheck sophisticated dynamic language programs. By coupling nested refinements with McCarthy’s theory of finite maps, System D can precisely reason about the interaction of higherorder functions, polymorphism, and dictionaries. The addition of type predicates to the refinement logic creates a circularity that leads to unique technical challenges in the metatheory, which we solve with a novel stratification approach that we use to prove the soundness of System D.
Runtime Instrumentation for Precise FlowSensitive Type Analysis
"... Abstract. We describe a combination of runtime information and static analysis for checking properties of complex and configurable systems. The basic idea of our approach is to 1) let the program execute and thereby read the important dynamic configuration data, then 2) invoke static analysis from t ..."
Abstract

Cited by 8 (5 self)
 Add to MetaCart
(Show Context)
Abstract. We describe a combination of runtime information and static analysis for checking properties of complex and configurable systems. The basic idea of our approach is to 1) let the program execute and thereby read the important dynamic configuration data, then 2) invoke static analysis from this runtime state to detect possible errors that can happen in the continued execution. This approach improves analysis precision, particularly with respect to types of global variables and nested data structures. It also enables the resolution of modules that are loaded based on dynamically computed information. We describe an implementation of this approach in a tool that statically computes possible types of variables in PHP applications, including detailed types of nested maps (arrays). PHP is a dynamically typed language; PHP programs extensively use nested value maps, as well as ’include’ directives whose arguments are dynamically computed file names. We have applied our analysis tool to over 50’000 lines of PHP code, including the popular DokuWiki software, which has a plugin architecture. The analysis identified 200 problems in the code and in the type hints of the original source code base. Some of these problems can cause exploits, infinite loops, and crashes. Our experiments show that dynamic information simplifies the development of the analysis and decreases the number of false alarms compared to a purely static analysis approach. 1
Recovering data models via guarded dependences
 In Proc. WCRE
, 2007
"... All intext references underlined in blue are linked to publications on ResearchGate, letting you access and read them immediately. ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
(Show Context)
All intext references underlined in blue are linked to publications on ResearchGate, letting you access and read them immediately.
Borrowing Interpolation
, 2011
"... We present a generic method for establishing interpolation properties by ‘borrowing ’ across logical systems. The framework used is that of the socaled ‘institution theory’ which is a categorical abstract model theory providing a formal definition for the informal concept of ‘logical system’ and a ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
(Show Context)
We present a generic method for establishing interpolation properties by ‘borrowing ’ across logical systems. The framework used is that of the socaled ‘institution theory’ which is a categorical abstract model theory providing a formal definition for the informal concept of ‘logical system’ and a mathematical concept of ‘homomorphism’ between logical systems. We develop three different styles or patterns to apply the proposed borrowing interpolation method. These three ways are illustrated by the development of a series of concrete interpolation results for logical systems that are used in mathematical logic or in computing science, most of these interpolation properties apparently being new results. These logical systems include fragments of (classical many sorted) first order logic with equality, preordered algebra and its Horn fragment, partial algebra, higher order logic. Applications are also expected for many other logical systems, including membership algebra, various types of order sorted algebra, the logic of predefined types, etc., and various combinations of the logical systems discussed here.
Tools and Techniques for Formalising Structural Proof Theory
, 2009
"... Whilst results from Structural Proof Theory can be couched in many formalisms, it is the sequent calculus which is the most amenable of the formalisms to metamathematical treatment. Constructive syntactic proofs are filled with bureaucratic details; rarely are all cases of a proof completed in the l ..."
Abstract
 Add to MetaCart
(Show Context)
Whilst results from Structural Proof Theory can be couched in many formalisms, it is the sequent calculus which is the most amenable of the formalisms to metamathematical treatment. Constructive syntactic proofs are filled with bureaucratic details; rarely are all cases of a proof completed in the literature. Two intermediate results can be used to drastically reduce the amount of effort needed in proofs of Cut admissibility: Weakening and Invertibility. Indeed, whereas there are proofs of Cut admissibility which do not use Invertibility, Weakening is almost always necessary. Use of these results simply shifts the bureaucracy, however; Weakening and Invertibility, whilst more easy to prove, are still not trivial. We give a framework under which sequent calculi can be codified and analysed, which then allows us to prove various results: for a calculus to admit Weakening and for a rule to be invertible in a calculus. For the latter, even though many calculi are investigated, the general condition is simple and easily verified. The results have been applied to G3ip, G3cp, G3c, G3s, G3LC and G4ip. Invertibility is important in another respect; that of proofsearch. Should all rules in a calculus be invertible, then terminating rootfirst proof search gives a decision procedure
Semantic Subtyping with an SMT Solver
, 2010
"... 1.1 Programming with TypeTest and Refinement... 1 1.2 An Opportunity: SMT as a Platform........ 2 1.3 Semantic Subtyping with an SMT Solver..... 2 ..."
Abstract
 Add to MetaCart
(Show Context)
1.1 Programming with TypeTest and Refinement... 1 1.2 An Opportunity: SMT as a Platform........ 2 1.3 Semantic Subtyping with an SMT Solver..... 2
Craig Interpolation in Displayable Logics
"... Abstract. We give a general prooftheoretic method for proving Craig interpolation for displayable logics, based on an analysis of the individual proof rules of their display calculi. Using this uniform method, we prove interpolation for a spectrum of display calculi differing in their structural ru ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. We give a general prooftheoretic method for proving Craig interpolation for displayable logics, based on an analysis of the individual proof rules of their display calculi. Using this uniform method, we prove interpolation for a spectrum of display calculi differing in their structural rules, including those for multiplicative linear logic, multiplicative additive linear logic and ordinary classical logic. Our analysis of proof rules also provides new insights into why interpolation fails, or seems likely to fail, in many substructural logics. Specifically, contraction appears particularly problematic for interpolation except in special circumstances. 1