Section: New Results
Non-Null annotation inference
A common source of exceptional program behaviour is the dereferencing of null references (also called null pointers), resulting in segmentation faults in C or null pointer exceptions in Java. Even if such exceptions are caught, the presence of exception handlers creates an additional amount of potential branching which in turn implies that: 1) fewer optimizations are possible and 2) verification is more difficult (bigger certification conditions, implicit flow in information flow verification, etc.). Furthermore, the Java virtual machine is obliged to perform run-time checks for non-nullness of references when executing a number of its bytecode instructions, thereby incurring a performance penalty. For all these reasons, a static program analysis which can guarantee before execution of the program that certain references will definitely be non-null is useful.
We propose a nullness static analysis  that automatically infers non-null annotations for local variables, method signatures and fields. The analysis has been mechanically proved sound in the Coq proof assistant. The Null-ability Inference Tool presented at PASTE'08  is based on this work.