16
FORMALLY DEFINING AND ITERATING INFINITE MODELS Benoit Combemale University of Rennes 1, IRISA, France) Xavier Thirioux ENSEEIHT, IRIT, France Benoit Baudry Inria Rennes, France

Formally Defining and Iterating Infinite Models (MODELS 2012)

Embed Size (px)

Citation preview

Page 1: Formally Defining and Iterating Infinite Models (MODELS 2012)

FORMALLY DEFINING AND ITERATING INFINITE MODELS Benoit Combemale University of Rennes 1, IRISA, France)

Xavier Thirioux ENSEEIHT, IRIT, France

Benoit Baudry Inria Rennes, France

Page 2: Formally Defining and Iterating Infinite Models (MODELS 2012)

Very Large Models • Examples:

•  The Eclipse platform: 5M model elements •  Civil engineering models: 7.3M model elements [Steel et al.,

SoSyM'12] •  Etc.

• Existing approaches:

•  Lazy model processing [Tisi et al., MoDELS'11] •  NoSQL-based approach for model persistence [Pagán et al.,

MoDELS'11]

Context Formally Defining and Iterating Infinite Models, MODELS 2012 2

Page 3: Formally Defining and Iterating Infinite Models (MODELS 2012)

Models at Runtime • Examples:

•  Monitoring systems •  Adaptive systems •  Etc.

• Existing approaches: •  Models@runtime based on CEP •  Active Operations [Beaudoux et al., MODELS 2010]

Context Formally Defining and Iterating Infinite Models, MODELS 2012 3

Page 4: Formally Defining and Iterating Infinite Models (MODELS 2012)

Infinite Model •  Intuitive Definition:

Models whose the comprehensive set of model elements is too large to be loaded or even not available

Context

• Challenges: •  Identify locally in an OO metamodel sources of infinity in the

conforming models. •  Understanding the exact meaning of a query over a model for which

the interpretation does not know the size at a given point in time

Formally Defining and Iterating Infinite Models, MODELS 2012 4

• Current Issues: •  Implicit and global infinite evaluation of the model •  Missing a formal and unified semantics (implementation-

independent)

Page 5: Formally Defining and Iterating Infinite Models (MODELS 2012)

Contributions

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 5

Let’s specify infinite models explicitly, locally, formally, and in a implementation-independent way!

Page 6: Formally Defining and Iterating Infinite Models (MODELS 2012)

Contributions 1.  A MOF extension to locally identify in

metamodels the infinite parts of the conforming models

2.  A corresponding coinductive semantics for

evaluating such infinite parts with OCL iterators

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 6

Page 7: Formally Defining and Iterating Infinite Models (MODELS 2012)

Example: the UML State Machine

… Small and Terminating Program … Large or Non-Terminating Program

Formally Defining and Iterating Infinite Models, MODELS 2012 7 Contributions

s1_1

s2_1

s2_2

s2_m

sn_1t1t1

t1

t2 tn-1...

Let’s imagine the execution trace of a…

s1_1

s2_1

s2_2

s2_m

sn_1

initial

final

t1t1

t1

t2 tn-1...

•  Ex1: lazily built at design time while exploring the graph of reachable states

•  Ex2: continuously built at run time while monitoring the system execution

Page 8: Formally Defining and Iterating Infinite Models (MODELS 2012)

How Infinite Models would come? • Let’s consider:

• Models are (complex) graphs

• Graphs conform to metamodels

• Metamodels are described using a object-oriented meta-language

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 8

Page 9: Formally Defining and Iterating Infinite Models (MODELS 2012)

<<conformsTo>>

*{ordered}

StateMachine

State Transitionsourcetarget Trigger

initial

InjectEvent

1

1 EventOccurence

<<enumeration>>EventKind

endogenousexogenous

RuntimeEvent

kind: EventKind0..1

cause

outgoingincoming

Event

eventToProcess

type1

1

*

*1

1

*

***

(Finite)Trace

SendEvent* effect

type1

/nextStates*

Excerpt fromthe UML2

StateMachineMetamodel

with a Finite Interpretation

context State::reachableStates : Set(State) derive : self->asSet()->closure(outgoing->collect(target));

How Infinite Models would come?

Formally Defining and Iterating Infinite Models, MODELS 2012 9 Contributions

s1_1

s2_1

s2_2

s2_m

sn_1t1t1

t1

t2 tn-1...s1_1

s2_1

s2_2

s2_m

sn_1

initial

final

t1t1

t1

t2 tn-1...

•  IN BREADTH: upper bound of a collection (ex: eventToProcess)

•  IN DEPTH: unfolding of a transitive closure (ex: nextStates)

<<conformsTo>>

StateMachine

State Transitionsourcetarget Trigger

initial

InjectEvent

1

1 EventOccurence

ω{ordered}

<<enumeration>>EventKind

endogenousexogenous

RuntimeEvent

kind: EventKind0..1

cause

outgoingincoming

Event

eventToProcess

type1

1

*

*1

1

*

***

/nextStates*

Excerpt fromthe UML2

StateMachineMetamodel

with an Infinite Interpretation

(Infinite)Trace

SendEvent* effect

type1

Page 10: Formally Defining and Iterating Infinite Models (MODELS 2012)

Formally Defining and Iterating Infinite Models, MODELS 2012 10

StateMachine

State Transitionsourcetarget Trigger

initial

InjectEvent

1

1 EventOccurence

ω{ordered}

<<enumeration>>EventKind

endogenousexogenous

RuntimeEvent

kind: EventKind0..1

cause

outgoingincoming

Event

eventToProcess

type1

1

*

*1

1

*

***

/nextStates*

Excerpt fromthe UML2

StateMachineMetamodel

with an Infinite Interpretation

(Infinite)Trace

*{ordered}

SendEvent* effect

typeStateMachine

State Transitionsourcetarget Trigger

initial

InjectEvent

1

1 EventOccurence

<<enumeration>>EventKind

endogenousexogenous

RuntimeEvent

kind: EventKind0..1

cause

outgoingincoming

Event

eventToProcess

type1

1

*

*1

1

*

***

(Finite)Trace

SendEvent* effect

type11

s1_1

s2_1

s2_2

s2_m

sn_1

initial

final

t1t1

t1t2 tn-1

/nextStates*

Excerpt fromthe UML2

StateMachineMetamodel

with a Finite Interpretation

<<conformsTo>><<conformsTo>>

<<conformsTo>>

... s1_1

s2_1

s2_2

s2_m

sn_1

initial

t1t1

t1t2 tn-1...

Finite Interpretation Infinite Interpretation

<<conformsTo>>

Propertylower: Integer = 1 upper : UnlimitedNatural = 1isOrdered : Boolean = false isComposite: Boolean = falsedefault: String = ""

ClassisAbstract: Boolean = false

{ordered} 0..*ownedAttribute

0..1opposite

NamedElementname: String

0..*superClass

Type TypedElementtype1

DataTypeowner

cyclic digraph

upper bound

Contributions

Let’s consider MOF (+OCL) as meta-language

Page 11: Formally Defining and Iterating Infinite Models (MODELS 2012)

How MOF/OCL Does Not Support Infinite Models?

Formally Defining and Iterating Infinite Models, MODELS 2012 11 Contributions

•  upper is typed by UnlimitedNatural taken from UML •  UML involves a notation for the unlimited value (*) interpreted as bounded in the type Collection (e.g., result of the OCL iterators) ⇒  All elements are considered as available at any time of the iteration

Propertylower: Integer = 1 upper : UnlimitedNatural = 1isOrdered : Boolean = false isComposite: Boolean = falsedefault: String = ""

ClassisAbstract: Boolean = false

{ordered} 0..*ownedAttribute

0..1opposite

NamedElementname: String

0..*superClass

Type TypedElementtype1

DataTypeowner

cyclic digraph

upper bound

•  The OCL closure refers to the type Collection for the result!⇒  The closure is a finite processing, which assumes that the whole model is available for evaluation

Page 12: Formally Defining and Iterating Infinite Models (MODELS 2012)

Defining Infinite Models: A MOF Extension • Upper bound of a MOF property

•  new type for upper identifying possible infinite collection •  upper: Naturalω, s.t. m < * < ω where m∈N •  Naturalω is an extension of UnlimitedNatural from MOF

•  Transitive closure of a MOF property •  additional attribute in Property identifying possible infinite

unfolding (only for reflexive relation)

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 12

A Bcontext A::a : A derive :

self.b->collect(a)->flatten();a 0..* b

0..*/a 0..*

Page 13: Formally Defining and Iterating Infinite Models (MODELS 2012)

Iterating Infinite Models: A Coinductive Semantics

•  The coinductive principle •  Provides the formal and abstract foundations for reasoning

over infinite data structures •  Come equipped with a ‘produce’ operator instead of a

‘reduce’ operator in the induction principle •  Supported by some of the proof assistant

•  We used COQ in our case!

• We provide: •  a CoIterate operator to iterate over infinite collections •  a CoClosure operator to infinitely unfold reflexive relations

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 13

Page 14: Formally Defining and Iterating Infinite Models (MODELS 2012)

Iterating Infinite Models: A Coinductive Semantics

• CoIterate over infinite collections:

• CoClosure for infinite unfolding of relations:

Contributions Formally Defining and Iterating Infinite Models, MODELS 2012 14

Page 15: Formally Defining and Iterating Infinite Models (MODELS 2012)

Example: the UML State Machine •  Iterating the events to be processed

• Unfolding the reachable states

Evaluation Formally Defining and Iterating Infinite Models, MODELS 2012 15

Page 16: Formally Defining and Iterating Infinite Models (MODELS 2012)

Conclusion & Perspectives • Contributions

•  A MOF extension (abstract and concrete syntaxes) •  Explicit identification of infinite models in metamodels •  Precise and local specification of the infinite parts in the conforming models

•  A coinductive semantics (implemented using COQ) •  Formal evaluation of such infinite parts with OCL iterators •  Provides the foundations for the verification of operations that must process

models of unknown size •  Independent of various possible implementations and would be used as

reference for interoperability issues

Conclusion Formally Defining and Iterating Infinite Models, MODELS 2012 16

(object-oriented) definition and (coinductive) semantics for iterating

(in breadth, in depth)

implementations(lazy evaluation, models@runtime)

•  Future Work: •  Investigate equivalent translations to various

implementations (platform model) •  Investigate the coiterate iterator for model transformation

(using model as accumulator) to formally deal with the production of models at runtime.