Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Huu Hai Nguyen

dblp:58/79 · DBLP profile ↗
← Back
12ranked-venue papers
4as first author
0since 2021 · last 2012
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 10 · 4 first-authorArtificial intelligence and machine learning · 2Theory of computation · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Program verification · 65% Programming languages and type systems · 32% Program analysis · 3%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems › subtyping
behavioral subtyping
0.112008
Enhancing modular OO verification with separation logic · POPL 2008
Program verification
modular verification
0.112008
Enhancing modular OO verification with separation logic · POPL 2008
Program verification › code-level verification
object-oriented verification
0.112008
Enhancing modular OO verification with separation logic · POPL 2008
Program verification › program logic
separation logic
0.112008
Enhancing modular OO verification with separation logic · POPL 2008
Programming languages and type systems › type theory
dependent types
0.112005
Verifying safety policies with size properties and alias controls · ICSE 2005
Program verification
type-based verification
0.112005
Verifying safety policies with size properties and alias controls · ICSE 2005
Programming languages and type systems
type systems
0.112005
Verifying safety policies with size properties and alias controls · ICSE 2005
Program analysis › static analysis
pointer analysis
0.012005
Verifying safety policies with size properties and alias controls · ICSE 2005

Methods — techniques the papers use, named apart from their topics

predicate mechanism · 0.1class invariant · 0.1type checking · 0.1
YearPublicationVenuePosition
2012 Automated verification of shape, size and bag properties via user-defined predicates in separation logic
Wei-Ngan Chin, Cristina David, Huu Hai Nguyen, Shengchao Qin
Sci. Comput. Program.3
2008 Enhancing Program Verification with Lemmas
Huu Hai Nguyen, Wei-Ngan Chin
CAV1
2008 Analysing memory resource bounds for low-level programs
abstract
Embedded systems are becoming more widely used but these systems are often resource constrained. Programming models for these systems should take into formal consideration resources such as stack and heap. In this paper, we show how memory resource bounds can be inferred for assembly-level programs. Our inference process captures the memory needs of each method in terms of the symbolic values of its parameters. For better precision, we infer path-sensitive information through a novel guarded expression format. Our current proposal relies on a Presburger solver to capture memory requirements symbolically, and to perform fixpoint analysis for loops and recursion. Apart from safety in memory adequacy, our proposal can provide estimate on memory costs for embedded devices and improve performance via fewer runtime checks against memory bound.
Wei-Ngan Chin, Huu Hai Nguyen, Corneliu Popeea, Shengchao Qin
ISMM2
2008 Enhancing modular OO verification with separation logic
abstract
Conventional specifications for object-oriented (OO) programs must adhere to behavioral subtyping in support of class inheritance and method overriding. However, this requirement inherently weakens the specifications of overridden methods in superclasses, leading to imprecision during program reasoning. To address this, we advocate a fresh approach to OO verification that focuses on the distinction and relation between specifications that cater to calls with static dispatching from those for calls with dynamic dispatching. We formulate a novel specification subsumption that can avoid code re-verification, where possible. Using a predicate mechanism, we propose a flexible scheme for supporting class invariant and lossless casting. Our aim is to lay the foundation for a practical verification system that is precise, concise and modular for sequential OO programs. We exploit the separation logic formalism to achieve this.
Wei-Ngan Chin, Cristina David, Huu Hai Nguyen, Shengchao Qin
POPL3
2008 Runtime Checking for Separation Logic
Huu Hai Nguyen, Viktor Kuncak, Wei-Ngan Chin
VMCAI1
2007 Automated Verification of Shape, Size and Bag Properties
abstract
In recent years, separation logic has emerged as a contender for formal reasoning of heap-manipulating imperative programs. Recent works have focused on specialised provers that are mostly based on fixed sets of predicates. To improve expressivity, we have proposed a prover that can automatically handle user-defined predicates. These shape predicates allow programmers to describe a wide range of data structures with their associated size properties. In the current work, we shall enhance this prover by providing support for a new type of constraints, namely bag (multi-set) constraints. With this extension, we can capture the reachable nodes (or values) inside a heap predicate as a bag constraint. Consequently, we are able to prove properties about the actual values stored inside a data structure.
Wei-Ngan Chin, Cristina David, Huu Hai Nguyen, Shengchao Qin
ICECCS3
2007 Detecting and eliminating memory leaks using cyclic memory allocation
abstract
We present and evaluate a new technique for detecting and eliminating memory leaks in programs with dynamic memory allocation. This technique observes the execution of the program on a sequence oftraining inputs to find m-bounded allocation sites, which have the property that at any time during the execution of the program, the program accesses at most only the last m objects allocated at that site. If the difference between the number of allocated and deallocated objects from the site grows above m throughout the computation, there is a memory leak at that site. To eliminate the leak, the technique transforms the program to use cyclic memory allocation at that site: it preallocates a buffer containing m objects of the type allocated at that site, with each allocation returning the next object in the buffer. At the end of the buffer the allocations wrap back around to the first object. Cyclic allocationeliminates any memory leak at the allocation site -- the total amountof memory required to hold all of the objects ever allocated at the site is simply m times the object size. We evaluate our technique by applying it to several widely-used open source programs. Our results show that it is able to successfully detect and eliminate important memory leaks in these programs. Apotential concern is that the estimated bounds m may be too small, causing the program to overlay live objects in memory. Our results indicate that our bounds estimation technique is quite accurate in practice, providing incorrect results for only one of the 160 m-bounded sites that it identifies. To evaluate the potential impact of overlaying live objects, we artificially reduce the bounds at m-bounded sites and observe the resulting behavior. The resulting overlaying of live objects often does not affect the functionality ofthe program at all; even when it does impair part of the functionality, the program does not fail and is still able to acceptably deliver the remaining functionality.
Huu Hai Nguyen, Martin C. Rinard
ISMM1
2007 Automated Verification of Shape and Size Properties Via Separation Logic
Huu Hai Nguyen, Cristina David, Shengchao Qin, Wei-Ngan Chin
VMCAI1
2006 Deciding Boolean Algebra with Presburger Arithmetic
Viktor Kuncak, Huu Hai Nguyen, Martin C. Rinard
J. Autom. Reason.2
2005 An Algorithm for Deciding BAPA: Boolean Algebra with Presburger Arithmetic
Viktor Kuncak, Huu Hai Nguyen, Martin C. Rinard
CADE2
2005 Verifying safety policies with size properties and alias controls
abstract
Many software properties can be analysed through a relational size analysis on each function's inputs and outputs. Such relational analysis (through a form of dependent typing) has been successfully applied to declarative programs, and to restricted imperative programs; but it has been elusive for object-based programs. The main challenge is that objects may mutate and they may be aliased. In this paper, we show how safety policies of programs can be analysed by tracking size properties of objects and be enforced by objects' invariants and the preconditions of methods. We propose several new ideas to allow both mutability and sharing of objects, whilst aiming for precision in our analysis. We introduce the concept of size-immutability to facilitate sharing, and also a set of alias controls to track unaliased objects whose size properties may change. We formalise our results through a set of advanced type checking rules for an object-based imperative language. We re-affirm the utility of the proposed type system by showing how a variety of software properties can be automatically verified according to size-inspired safety policies.
Wei-Ngan Chin, Siau-Cheng Khoo, Shengchao Qin, Corneliu Popeea, Huu Hai Nguyen
ICSE5
2005 Memory Usage Verification for OO Programs
Wei-Ngan Chin, Huu Hai Nguyen, Shengchao Qin, Martin C. Rinard
SAS2