SlideShare a Scribd company logo
Towards Domain Refinement for
UML/OCL Bounded Verification
Robert Clarisó
Universitat Oberta de Catalunya - Spain
Carlos A. González
AtlanMod team - Inria, Mines Nantes, LINA - France
Jordi Cabot
ICREA - Spain
13th Int. Conf on SW Enginerering and Formal Methods
8-11 September 2015, York, UK
Motivation
Who? The reader
What?
Where?
Find Wally
Inside the page
Motivation
Who? The reader
What?
Where?
Find Wally
Inside the page
Motivation
Who? A solver
What?
Where?
Find faults
In a bounded
state space
1. Bounded verification
2. Related work
Outline
2. Related work
3. Solution: refinement
4. Experimental results
5. Conclusions
Model M
Model-Based Verification
A B
C
Consistent
No contradictions
A
1
2
Property P
UML
Class diagram
Non-redundant
Lack of duplicities
A B
C
context C inv:
self.a->
excludes(self)
OCL
Invariants
Does model M satisfy correctness property P?
VERIFICATION TOOL
Model-based verification: overview
?
Model
A B
C
Correctness
Formal Notation
SAT / CP
?Correctness
Property
Finite
Bounds
Designer
Feedback
Example or ?
Counterexample or ?
Reasoning Engine
Bound selection
Choose “suitable” verification
bounds for the solver
Goal
CONFIDENCE
EFFICIENCY
BOUNDSSmall Large
Fast Slow
Less More
Bound selection: heuristics
Small bounds are sufficient to
detect most faults
Small scope hypothesis
Repeat analysis progressively
increasing bounds
Incremental scoping
Our approach: bound refinement
VERIFICATION TOOL
Model
A B
C Formal Notation
SAT / CP
Correctness
Property
Finite
Bounds
Reasoning Engine
Feedback
Example or ?
Countexample or ?
Our approach: bound refinement
VERIFICATION TOOL
Model
A B
C Formal Notation
SAT / CP
Correctness
Property
Finite
Bounds
Reasoning Engine
Tighter
boundsBound
refinement
Feedback
Example or ?
Countexample or ?
Related work
Abstract size-related info to
reason about size properties
Size abstraction
Bound propagation
Yu et al (FSE’2007)
CP solvers e.g.
Remove improductive values
from verification bounds
CP solvers e.g.
Interval Constraint Solver in eCLiPSe
This work:
Size abstraction + Bound propagation
Size properties CP solvers
Arbitrary SAT
Running example: production facility
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Property : Strong satisfiability
“It should be possible to populate of each non-abstract class
while satisfying all integrity constraints”
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Running example: size abstraction
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Multiplicities
“4 Parts per Machine”
Generalizations
“All Cutters are
Machines”
Invariants
“There is at least one Grinder ”
Size abstraction for OCL
OCL Expression Abstract OCL Expression
Refers to the values in
an instance of the model
Refers to the size of the
model instance
OCL expression Abstraction
col->including( object ) Col <= Exp <= Col + 1
col->exists( var | cond ) (0 <= Exp <= 1) ∧
(Col = 0) -> (Exp = 0)
V = { x ∈ [0,5], y ∈ [0,7] }
C = { x + y = 7, x + 1 ≥ 2y }
y
(x ≤ 5) ∧ (x + 1 ≥ 2y)
Integer Bound Propagation
xz
=> y ≤ 3
(x ≤ 5) ∧ (x + y = 7)
=> y ≥ 2
(y ≤ 3) ∧ (x + y = 7)
=> x ≥ 4
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (1/4)
Domain bounds Source
Machine
Cutter
Grinder
Part
Uses
Serial
Number of objects of type Machine
Number of objects of type Cutter
Number of objects of type Grinder
Number of objects of type Part
Number of links in association Uses
Number of distinct values of attribute Serial
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (1/4)
Domain bounds Source
Machine
Cutter
Grinder
Part
Uses
Serial
Number of objects of type Machine
Number of objects of type Cutter
Number of objects of type Grinder
Number of objects of type Part
Number of links in association Uses
Number of distinct values of attribute Serial
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (3/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (3/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[2, ∞)
[1, ∞)
[1, ∞)
[8, ∞)
[8, ∞)
[8, ∞)
Inferred
bounds
with no
user input
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (4/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, 10]
[2, 2]
[1, 1]
[1, 1]
[8, 8]
[8, 8]
[8, 8]
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (4/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, 10]
[2, 2]
[1, 1]
[1, 1]
[8, 8]
[8, 8]
[8, 8]
One choice
is sufficient
to bind the
state space
Designer
UML Model
A B
C
Domain Bounds
X = [1,20], Y = [2, 15], ...
Experimental set-up
KodKod Model Finder
Sat4j SAT Solver
UML-based Specification
Environment (USE)
Designer
Domain Bounds
X = [1,20], Y = [2, 15], ...
UML Model
A B
C
Bound refinement
Experimental set-up
KodKod Model Finder
Sat4j SAT Solver
Bound refinement
UML-based Specification
Environment (USE)
Experimental results: Summary (1/2)
Lightly
constrained
(“Easy”)
Satisfiable Unsatisfiable
–
Seconds Seconds
(“Easy”)
Highly
constrained
(“Hard”)
Difficulty +–
+
Minutes Hours
Experimental results: Summary (1/2)
Lightly
constrained
(“Easy”)
Satisfiable Unsatisfiable
No improvement No improvement
(“Easy”)
Highly
constrained
(“Hard”)
Speed-ups from
1,7x to 11x
Speed-ups from
2x to 50x
Overhead of bound tightening: <1 second
Conclusions… in 140 chars
Quick preprocessing to
make SAT-based verification
faster and more usable
Target: UML/OCL
Up to 50x speed-up
TODO: further experiments
Tweet0
Thank you for
your attention!
Robert Clarisó
rclariso@uoc.edu
@robertclariso

More Related Content

What's hot

Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++
Anton Kolotaev
 
The present and the future of functional programming in c++
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
Alexander Granin
 
Monadic parsers in C++
Monadic parsers in C++Monadic parsers in C++
Monadic parsers in C++
Alexander Granin
 
Functions
FunctionsFunctions
Functions
Kamal Acharya
 
The Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in PythonThe Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in Python
OSCON Byrum
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
PVS-Studio
 
Operator Overloading & Type Conversions
Operator Overloading & Type ConversionsOperator Overloading & Type Conversions
Operator Overloading & Type Conversions
Rokonuzzaman Rony
 
C++11
C++11C++11
PVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - ContinuationPVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - Continuation
PVS-Studio
 
Hot C++: New Style of Arguments Passing
Hot C++: New Style of Arguments PassingHot C++: New Style of Arguments Passing
Hot C++: New Style of Arguments Passing
Andrey Upadyshev
 
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
Andrey Upadyshev
 
Exploring Koltin on Android
Exploring Koltin on AndroidExploring Koltin on Android
Exploring Koltin on Android
Deepanshu Madan
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
Jan Rüegg
 
Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)
Geeks Anonymes
 
Gremlin's Graph Traversal Machinery
Gremlin's Graph Traversal MachineryGremlin's Graph Traversal Machinery
Gremlin's Graph Traversal Machinery
Marko Rodriguez
 
Modern C++
Modern C++Modern C++
Modern C++
Michael Clark
 
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
PVS-Studio
 
Library functions in c++
Library functions in c++Library functions in c++
Library functions in c++
Neeru Mittal
 
The Ring programming language version 1.5.2 book - Part 175 of 181
The Ring programming language version 1.5.2 book - Part 175 of 181The Ring programming language version 1.5.2 book - Part 175 of 181
The Ring programming language version 1.5.2 book - Part 175 of 181
Mahmoud Samir Fayed
 
expression in cpp
expression in cppexpression in cpp
expression in cpp
gourav kottawar
 

What's hot (20)

Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++
 
The present and the future of functional programming in c++
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
 
Monadic parsers in C++
Monadic parsers in C++Monadic parsers in C++
Monadic parsers in C++
 
Functions
FunctionsFunctions
Functions
 
The Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in PythonThe Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in Python
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
 
Operator Overloading & Type Conversions
Operator Overloading & Type ConversionsOperator Overloading & Type Conversions
Operator Overloading & Type Conversions
 
C++11
C++11C++11
C++11
 
PVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - ContinuationPVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - Continuation
 
Hot C++: New Style of Arguments Passing
Hot C++: New Style of Arguments PassingHot C++: New Style of Arguments Passing
Hot C++: New Style of Arguments Passing
 
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
 
Exploring Koltin on Android
Exploring Koltin on AndroidExploring Koltin on Android
Exploring Koltin on Android
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
 
Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)
 
Gremlin's Graph Traversal Machinery
Gremlin's Graph Traversal MachineryGremlin's Graph Traversal Machinery
Gremlin's Graph Traversal Machinery
 
Modern C++
Modern C++Modern C++
Modern C++
 
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
 
Library functions in c++
Library functions in c++Library functions in c++
Library functions in c++
 
The Ring programming language version 1.5.2 book - Part 175 of 181
The Ring programming language version 1.5.2 book - Part 175 of 181The Ring programming language version 1.5.2 book - Part 175 of 181
The Ring programming language version 1.5.2 book - Part 175 of 181
 
expression in cpp
expression in cppexpression in cpp
expression in cpp
 

Viewers also liked

Información Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOCInformación Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOC
rclariso
 
Secudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jpSecudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jp
secudrive1
 
Secudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jpSecudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jp
secudrive1
 
Anurag
AnuragAnurag
Anurag
Anurag Kumar
 
NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!
NrgEdge
 
Mike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" AwardMike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker
 
Figuras de linguagem
Figuras de linguagem Figuras de linguagem
Figuras de linguagem
Jose Arnaldo Silva
 
How To: Creating Your Career Passport
How To: Creating Your Career PassportHow To: Creating Your Career Passport
How To: Creating Your Career Passport
NrgEdge
 
How to calculate the value of UX with standard financial models
How to calculate the value of UX with standard financial modelsHow to calculate the value of UX with standard financial models
How to calculate the value of UX with standard financial models
Aaron Powers
 
William Maschinot-Resume-Process Engineer
William Maschinot-Resume-Process EngineerWilliam Maschinot-Resume-Process Engineer
William Maschinot-Resume-Process Engineer
William Maschinot
 
From Enterprise IA To Enterprise UX
From Enterprise IA To Enterprise UXFrom Enterprise IA To Enterprise UX
From Enterprise IA To Enterprise UX
jason hobbs
 
water conservation
water conservationwater conservation
water conservation
Raj Kumar
 
難得的照片
難得的照片難得的照片
難得的照片
honan4108
 

Viewers also liked (13)

Información Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOCInformación Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOC
 
Secudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jpSecudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jp
 
Secudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jpSecudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jp
 
Anurag
AnuragAnurag
Anurag
 
NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!
 
Mike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" AwardMike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" Award
 
Figuras de linguagem
Figuras de linguagem Figuras de linguagem
Figuras de linguagem
 
How To: Creating Your Career Passport
How To: Creating Your Career PassportHow To: Creating Your Career Passport
How To: Creating Your Career Passport
 
How to calculate the value of UX with standard financial models
How to calculate the value of UX with standard financial modelsHow to calculate the value of UX with standard financial models
How to calculate the value of UX with standard financial models
 
William Maschinot-Resume-Process Engineer
William Maschinot-Resume-Process EngineerWilliam Maschinot-Resume-Process Engineer
William Maschinot-Resume-Process Engineer
 
From Enterprise IA To Enterprise UX
From Enterprise IA To Enterprise UXFrom Enterprise IA To Enterprise UX
From Enterprise IA To Enterprise UX
 
water conservation
water conservationwater conservation
water conservation
 
難得的照片
難得的照片難得的照片
難得的照片
 

Similar to Towards Domain Refinement for UML/OCL Bounded Verification

Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
Amine Benelallam
 
CodeChecker summary 21062021
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021
Olivera Milenkovic
 
Advanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDLAdvanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDL
Tony Lisko
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
Badoo Development
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия Swift
CocoaHeads
 
Functional programming for production quality code
Functional programming for production quality codeFunctional programming for production quality code
Functional programming for production quality code
Jack Fox
 
Search-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing SystemsSearch-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing Systems
Lionel Briand
 
Functional programming-advantages
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantages
Sergei Winitzki
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
Jörn Guy Süß JGS
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreter
Roberto Nogueira
 
Cleaner Code: How Clean Code is Functional Code
Cleaner Code: How Clean Code is Functional CodeCleaner Code: How Clean Code is Functional Code
Cleaner Code: How Clean Code is Functional Code
Dave Fancher
 
The Swift Compiler and Standard Library
The Swift Compiler and Standard LibraryThe Swift Compiler and Standard Library
The Swift Compiler and Standard Library
Santosh Rajan
 
The Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 MigrationThe Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 Migration
Joel Falcou
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
Andrey Karpov
 
Functional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic ProgrammerFunctional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic Programmer
Raúl Raja Martínez
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
NabeelaNousheen
 
Steffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
MLconf
 
Steffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
MLconf
 
Dr archana dhawan bajaj - c# dot net
Dr archana dhawan bajaj - c# dot netDr archana dhawan bajaj - c# dot net
Dr archana dhawan bajaj - c# dot net
Dr-archana-dhawan-bajaj
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
temkin abdlkader
 

Similar to Towards Domain Refinement for UML/OCL Bounded Verification (20)

Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
 
CodeChecker summary 21062021
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021
 
Advanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDLAdvanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDL
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия Swift
 
Functional programming for production quality code
Functional programming for production quality codeFunctional programming for production quality code
Functional programming for production quality code
 
Search-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing SystemsSearch-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing Systems
 
Functional programming-advantages
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantages
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreter
 
Cleaner Code: How Clean Code is Functional Code
Cleaner Code: How Clean Code is Functional CodeCleaner Code: How Clean Code is Functional Code
Cleaner Code: How Clean Code is Functional Code
 
The Swift Compiler and Standard Library
The Swift Compiler and Standard LibraryThe Swift Compiler and Standard Library
The Swift Compiler and Standard Library
 
The Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 MigrationThe Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 Migration
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
 
Functional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic ProgrammerFunctional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic Programmer
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
 
Steffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
 
Steffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
 
Dr archana dhawan bajaj - c# dot net
Dr archana dhawan bajaj - c# dot netDr archana dhawan bajaj - c# dot net
Dr archana dhawan bajaj - c# dot net
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
 

More from rclariso

Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
rclariso
 
Informació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOCInformació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOC
rclariso
 
Máster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOCMáster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOC
rclariso
 
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
rclariso
 
Orientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOCOrientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOC
rclariso
 
Orientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOCOrientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOC
rclariso
 
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOCMásters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
rclariso
 

More from rclariso (7)

Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
 
Informació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOCInformació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOC
 
Máster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOCMáster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOC
 
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
 
Orientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOCOrientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOC
 
Orientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOCOrientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOC
 
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOCMásters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
 

Recently uploaded

Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
karim wahed
 
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
Srinivas Dukka
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
SimonedeGijt
 
Introduction_to_Security_Assessments.ppt
Introduction_to_Security_Assessments.pptIntroduction_to_Security_Assessments.ppt
Introduction_to_Security_Assessments.ppt
sudsdeep
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
sudsdeep
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
908dutch
 
Leading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptxLeading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptx
taskroupseo
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
karim wahed
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
e-Definers Technology
 
NYGGS 360: A Complete ERP for Construction Innovation
NYGGS 360: A Complete ERP for Construction InnovationNYGGS 360: A Complete ERP for Construction Innovation
NYGGS 360: A Complete ERP for Construction Innovation
NYGGS Construction ERP Software
 
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
ashiklo9823
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
akshesh doshi
 
The Ultimate Guide to Phone Spy Apps: Everything You Need to Know
The Ultimate Guide to Phone Spy Apps: Everything You Need to KnowThe Ultimate Guide to Phone Spy Apps: Everything You Need to Know
The Ultimate Guide to Phone Spy Apps: Everything You Need to Know
onemonitarsoftware
 
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
jealousviolet
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
rachitkumar09887
 
ANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdfANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdf
sachin chaurasia
 
11 Top Cross Browser Testing Tools to Know About.pdf
11 Top Cross Browser Testing Tools to Know About.pdf11 Top Cross Browser Testing Tools to Know About.pdf
11 Top Cross Browser Testing Tools to Know About.pdf
kalichargn70th171
 
當測試開始左移
當測試開始左移當測試開始左移
當測試開始左移
Jersey (CHE-PING) Su
 

Recently uploaded (20)

Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) .pdf
 
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
AWS DevOps-Tutorial CHANAKYA SRIYAN DUKKA.
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
 
Introduction_to_Security_Assessments.ppt
Introduction_to_Security_Assessments.pptIntroduction_to_Security_Assessments.ppt
Introduction_to_Security_Assessments.ppt
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
 
Leading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptxLeading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptx
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Final Course Know...
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
 
NYGGS 360: A Complete ERP for Construction Innovation
NYGGS 360: A Complete ERP for Construction InnovationNYGGS 360: A Complete ERP for Construction Innovation
NYGGS 360: A Complete ERP for Construction Innovation
 
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
Vip Girls Call ServiCe Hyderabad 0000000000 Pooja Best High Class Hyderabad A...
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
 
The Ultimate Guide to Phone Spy Apps: Everything You Need to Know
The Ultimate Guide to Phone Spy Apps: Everything You Need to KnowThe Ultimate Guide to Phone Spy Apps: Everything You Need to Know
The Ultimate Guide to Phone Spy Apps: Everything You Need to Know
 
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
VVIP Girls Call Mumbai 9910780858 Provide Best And Top Girl Service And No1 i...
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
Agra Girls Call Agra 0X0000000X Unlimited Short Providing Girls Service Avail...
 
ANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdfANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdf
 
11 Top Cross Browser Testing Tools to Know About.pdf
11 Top Cross Browser Testing Tools to Know About.pdf11 Top Cross Browser Testing Tools to Know About.pdf
11 Top Cross Browser Testing Tools to Know About.pdf
 
當測試開始左移
當測試開始左移當測試開始左移
當測試開始左移
 

Towards Domain Refinement for UML/OCL Bounded Verification

  • 1. Towards Domain Refinement for UML/OCL Bounded Verification Robert Clarisó Universitat Oberta de Catalunya - Spain Carlos A. González AtlanMod team - Inria, Mines Nantes, LINA - France Jordi Cabot ICREA - Spain 13th Int. Conf on SW Enginerering and Formal Methods 8-11 September 2015, York, UK
  • 4. Motivation Who? A solver What? Where? Find faults In a bounded state space
  • 5. 1. Bounded verification 2. Related work Outline 2. Related work 3. Solution: refinement 4. Experimental results 5. Conclusions
  • 6. Model M Model-Based Verification A B C Consistent No contradictions A 1 2 Property P UML Class diagram Non-redundant Lack of duplicities A B C context C inv: self.a-> excludes(self) OCL Invariants Does model M satisfy correctness property P?
  • 7. VERIFICATION TOOL Model-based verification: overview ? Model A B C Correctness Formal Notation SAT / CP ?Correctness Property Finite Bounds Designer Feedback Example or ? Counterexample or ? Reasoning Engine
  • 8. Bound selection Choose “suitable” verification bounds for the solver Goal CONFIDENCE EFFICIENCY BOUNDSSmall Large Fast Slow Less More
  • 9. Bound selection: heuristics Small bounds are sufficient to detect most faults Small scope hypothesis Repeat analysis progressively increasing bounds Incremental scoping
  • 10. Our approach: bound refinement VERIFICATION TOOL Model A B C Formal Notation SAT / CP Correctness Property Finite Bounds Reasoning Engine Feedback Example or ? Countexample or ?
  • 11. Our approach: bound refinement VERIFICATION TOOL Model A B C Formal Notation SAT / CP Correctness Property Finite Bounds Reasoning Engine Tighter boundsBound refinement Feedback Example or ? Countexample or ?
  • 12. Related work Abstract size-related info to reason about size properties Size abstraction Bound propagation Yu et al (FSE’2007) CP solvers e.g. Remove improductive values from verification bounds CP solvers e.g. Interval Constraint Solver in eCLiPSe This work: Size abstraction + Bound propagation Size properties CP solvers Arbitrary SAT
  • 13. Running example: production facility context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability :context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Property : Strong satisfiability “It should be possible to populate of each non-abstract class while satisfying all integrity constraints”
  • 14. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Running example: size abstraction context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Multiplicities “4 Parts per Machine” Generalizations “All Cutters are Machines” Invariants “There is at least one Grinder ”
  • 15. Size abstraction for OCL OCL Expression Abstract OCL Expression Refers to the values in an instance of the model Refers to the size of the model instance OCL expression Abstraction col->including( object ) Col <= Exp <= Col + 1 col->exists( var | cond ) (0 <= Exp <= 1) ∧ (Col = 0) -> (Exp = 0)
  • 16. V = { x ∈ [0,5], y ∈ [0,7] } C = { x + y = 7, x + 1 ≥ 2y } y (x ≤ 5) ∧ (x + 1 ≥ 2y) Integer Bound Propagation xz => y ≤ 3 (x ≤ 5) ∧ (x + y = 7) => y ≥ 2 (y ≤ 3) ∧ (x + y = 7) => x ≥ 4
  • 17. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (1/4) Domain bounds Source Machine Cutter Grinder Part Uses Serial Number of objects of type Machine Number of objects of type Cutter Number of objects of type Grinder Number of objects of type Part Number of links in association Uses Number of distinct values of attribute Serial
  • 18. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (1/4) Domain bounds Source Machine Cutter Grinder Part Uses Serial Number of objects of type Machine Number of objects of type Cutter Number of objects of type Grinder Number of objects of type Part Number of links in association Uses Number of distinct values of attribute Serial
  • 19. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 20. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 21. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 22. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 23. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 24. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (3/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞)
  • 25. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (3/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [2, ∞) [1, ∞) [1, ∞) [8, ∞) [8, ∞) [8, ∞) Inferred bounds with no user input
  • 26. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (4/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, 10] [2, 2] [1, 1] [1, 1] [8, 8] [8, 8] [8, 8]
  • 27. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (4/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, 10] [2, 2] [1, 1] [1, 1] [8, 8] [8, 8] [8, 8] One choice is sufficient to bind the state space
  • 28. Designer UML Model A B C Domain Bounds X = [1,20], Y = [2, 15], ... Experimental set-up KodKod Model Finder Sat4j SAT Solver UML-based Specification Environment (USE)
  • 29. Designer Domain Bounds X = [1,20], Y = [2, 15], ... UML Model A B C Bound refinement Experimental set-up KodKod Model Finder Sat4j SAT Solver Bound refinement UML-based Specification Environment (USE)
  • 30. Experimental results: Summary (1/2) Lightly constrained (“Easy”) Satisfiable Unsatisfiable – Seconds Seconds (“Easy”) Highly constrained (“Hard”) Difficulty +– + Minutes Hours
  • 31. Experimental results: Summary (1/2) Lightly constrained (“Easy”) Satisfiable Unsatisfiable No improvement No improvement (“Easy”) Highly constrained (“Hard”) Speed-ups from 1,7x to 11x Speed-ups from 2x to 50x Overhead of bound tightening: <1 second
  • 32. Conclusions… in 140 chars Quick preprocessing to make SAT-based verification faster and more usable Target: UML/OCL Up to 50x speed-up TODO: further experiments Tweet0
  • 33. Thank you for your attention! Robert Clarisó rclariso@uoc.edu @robertclariso