The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer...

16
GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security The Mobius Program Verification Environment Joe Kiniry, University College Dublin Contract n° IST 015905 http://mobius.inria.fr/ http://mobius.ucd.ie/ This presentation reflects only the author’s views the Community is not liable for any use that may be made of the information contained therein This work was funded in part by the Information Society Technologies programme of the European Commission, Future and Emerging Technologies under the IST-2005-015905 MOBIUS Project. 1

Transcript of The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer...

Page 1: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security

The Mobius Program Verification EnvironmentJoe Kiniry, University College Dublin

Contract n° IST 015905

http://mobius.inria.fr/

http://mobius.ucd.ie/

This presentation reflects only the author’s views the Community is not liable for any use that may be made of the information contained therein

This work was funded in part by the Information Society Technologies programme of the European Commission, Future and Emerging Technologies under the IST-2005-015905 MOBIUS Project.

1

Page 2: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Information Flow Type Systems

Resource Type System

JML Specifications

Logic-based Verification Tools (FreeBoogie, VCgens)

Other Program Analyses

The Mobius

Base Logic

Bicolano

2

Mobius Types and Logics

Page 3: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Security

, P

erf

orm

ance,

and B

ehavio

ral R

equirem

ents

Code Producer

Java Source Program

JML Specification

(type- and logic-based)

Java VM Bytecode

BML Specification

Verification Condition

Certificate

Certificate Generation

interactive theorem proving

automatic theorem proving Code Consumer

Certificate

Java VM Bytecode

BML Specification

Certificate Checker

Java VM Runtime Environment

network transfer

Mobius “Big Picture”

3

Page 4: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

The Mobius PVE

• custom build of Eclipse for quality software

• integrated set of plugins and features

• complementary set of other tools

• integrate testing, static checking, extended static checking, theorem proving, and full verification

• “tunable” quality with concrete feedback

• growing use in education and instruction

4

Page 5: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Context on PVE Development

• leverage existing software foundations as much as is possible and reasonable

• primarily Eclipse, the JML tool suite, Jack, and ESC/Java2

• integrate tools developed by others

• mainly other static checkers and rigorous software engineering subsystems

• leverage the ESC/Java2 user-base

• large set of industrial users, academic researchers/users, and student users that are potential Mobius PVE target users

5

Page 6: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE User Features

• Java program code features

• writing new code

• type-aware completion

• compiling

• debugging

• refactoring

• folding code

• generate Javadoc documentation

• analyze code complexity

• analyze coding standard conformance

• detecting common programming errors6

Page 7: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE User Features

• Java Modeling Language features

• writing new specifications

• compiling specifications to runtime tests

• generate Javadoc documentation

• context-aware specification folding

• Bytecode Modeling Language features

• compile JML to BML

• display BML-annotated Java VM bytecode

• edit BML

7

Page 8: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE User Features

• JML-annotated programs features

• unit test generation

• specification generation• class and loop invariant generation

• translation to guarded commands• existing ESC/Java GC and BoogiePL

• theorem prover features

• use interactive provers in a natural way

• integrate proving and programming in UI

• support several automatic provers

• user- and tool-customization for prover use

8

Page 9: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE Verification Bus Features

• Java, JML, and BML lexer, parser, type checker, and transformation subsystem

• generates, visualizes, and manipulates Java VM bytecode, JML annotations, Javadocs, BML-annotated bytecode, and DOT files

• FreeBoogie subsystem

• FreeBoogiePL—FLOSS BoogiePL

• FreeBoogie VC generation• targets Mobius VC back-end, thus• will support multiple theorem provers

9

Page 10: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE Verification Bus Features

• Mobius VC back-end

• unsorted and sorted VC representations

• logic-aware syntax generation to several automatic and interactive theorem provers• e.g., generation of Mobius VCs in

Coq, PVS, Simplify, SMT, etc.

• Mobius ESC VC generator

• generation of ESC VCs in several ESC logics

• extended static checking of ESC VCs with rich in-editor feedback

10

Page 11: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE Verification Bus Features

• Mobius Prover back-end

• generic interaction with a variety of automatic and interactive theorem provers• automatic provers supported– Simplify, SMT, Fx7, (CVC3, Yices)

• interactive provers supported– Coq and (PVS)

• integration of several support tools

• e.g., CheckStyle, FindBugs, PMD, etc.

• the Race Condition Checker (RCC)

11

Page 12: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

Mobius PVE Status

• full support available for:

• all Java and nearly all JML features• editing, compilation, doc generation, etc.

• code complexity and style checking

• partial BML support• no full compilation of JML to BML as of yet

• Mobius VC back-end

• advanced ESC VC generation

• Mobius Prover back-end

• interactive proof support for Coq

12

Page 13: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

PVE use in International Teaching and Research

• several other groups are using PVE subsystems for their own research

• prover back-end and VC representation

• Fx7 improvements

• ESC experimentation (KSU, MIT, others)

• ...and teaching

• UCD using PVE subsystems for undergraduate instruction in programming and software engineering

• groups using static checkers for instruction include Univ. of Wash., CMU, MIT, others

13

Page 14: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

ESC a package/

module/method

command line

switches

output "pass"

or warning

scanning/

lexingparsing typechecking

Java + JML

AST

JML

specifications

BML

specifications

Java Source Java Bytecode

GC language

DSA form

verification

condition

Java to DSA

translation

DSA to GC

Java to GC

VCgenpretty-printconcrete syntaxemit VC to

prover

Decisionproduce

warning

interpret

feedback

produce

"pass"

display

warning or

pass

Architecture of a Static Checker

14

Page 15: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

JML Semantics

JML Specification

Information Flow Type System

Resource Type System

BoogiePL Guarded Commands

Verification Conditions

Other Program Analysis

Mobius Base Logic

BicolanoJava VM

Semanticsoperational

model

shallow

embedding

Java Program

describes

denotational

model

expressed

within

uses

compiles

to

Java VM bytecode

BML Specification

describes

translates

togenerates

expressed

within

expressed

withinexpressed

within

BML Semantics

denotational

model

Mobius ER Diagram

15

Page 16: The Mobius Program Verification Environment · Bicolano 2 Mobius Types and Logics. GLOBAN Summer School, 22-23 September 2008 Mobius: Mobility, Ubiquity, Security Security, Performance,

Mobius: Mobility, Ubiquity, SecurityGLOBAN Summer School, 22-23 September 2008

JML Semantics

JML Specification

Information Flow Type System

Resource Type System

BoogiePL Guarded Commands

Verification Conditions

Other Program Analysis

Mobius Base Logic

Bicolano

Java VM Semantics

operational

model

shallow

embedding

Java Program

describes

denotational

model

expressed

within

uses

compiles

to

Java VM bytecode

BML Specification

describes

translates

togenerates

expressed

within

expressed

within

expressed

within

BML Semantics

denotational

model represented

using

SortedProver

generates

Concrete Syntax

ProverInterfaces

generates

Verification Conditions

represented

using

sent to

DirectVCGen, ESC VCgen

ESC/Java3

Mobius ER Diagram with Ownership

16