cocovila @ devclub.eu

49
CoCoViLa Visual DSLs and Automatic Synthesis of Programs Pavel Grigorenko DevClub 25.04.2012

Upload: pavel-grigorenko

Post on 25-Jan-2015

1.172 views

Category:

Technology


2 download

DESCRIPTION

CoCoViLa homepage: http://www.cs.ioc.ee/cocovila Video (in russian): http://vimeo.com/41040729

TRANSCRIPT

Page 1: CoCoViLa @ devclub.eu

CoCoViLaVisual DSLs and Automatic Synthesis of Programs

Pavel Grigorenko

DevClub25.04.2012

Page 2: CoCoViLa @ devclub.eu

About(me);

http://cs.ioc.ee/~pavelg

Page 3: CoCoViLa @ devclub.eu

• Founded in 1960 (Estonian Academy of Sciences)

• Since 1997 - R&D @ TUT

• Research staff: ~70 people

• Fields: mechanics, control systems, applied mathematics, computer science, systems biology, human language technology, ...

Page 4: CoCoViLa @ devclub.eu

CoCoViLa

•Declarative model-based software development

•Domain-specific languages

• Visual specification

• Program synthesis

• Java + OSS + GPL

• Portable and extensible

Page 5: CoCoViLa @ devclub.eu

Visual DSLs In CoCoViLa

• Automatic Editor generation from language definition

•Well-defined abstract syntax

•No need to implement custom parsers and code generators

• Precise semantics:

• Shallow semantics ⇒ textual representation

•Deep semantics ⇒ executable code

Page 6: CoCoViLa @ devclub.eu

(Pre)History• Research in Artificial Intelligence

• Structural Synthesis of Programs (E. Tyugu 1979; G. Mints, E. Tyugu 1982)

• 1980s - PRIZ/UTOPIST

• 1990s - NUT

• >= 2003 - CoCoViLa(A. Saabas, A. Aasmaa, P. Grigorenko)

Programmeerimiskeelte tasemed: ülesannete kirjeldamise keeled (6)

Visuaalkeeled:

Page 7: CoCoViLa @ devclub.eu

Structural Synthesis Of Programs• Structural properties of computations

• Based on implicational fragment of intuitionistic propositional logic (uses Curry-Howard correspondence)

•Deductive method:(specification ⇒ existence theorem ⇒ proof ⇒ code)

• Complexity: Polynomial-space complete (Statman ’78)

Page 8: CoCoViLa @ devclub.eu

Computational Problems In SSPKnowing M, compute y1,...,yn from x1,...,xm

Example:

(Triangle; a,b,c ⇒ S)

Triangle var : a, b, c, p, S; rel: a, b, c ⇒ p {sp};

a, b, c, p ⇒ S {h};

⊢a, b, c ⇒ p {sp}; a, b, c ⊢ a, b, c (⇒-) ⊢a, b, c, p ⇒ S {h}; a, b, c ⊢a, b, c, p (⇒-)

a, b, c ⊢ S (h(a,b,c,sp(a,b,c))) (⇒+)

⊢a, b, c ⇒ S (λabc.h(a,b,c,sp(a,b,c)))

Page 9: CoCoViLa @ devclub.eu

Visual Language Lifecycle

Create

UseExecute

Page 10: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 11: CoCoViLa @ devclub.eu

Metaclasspublic class AndGate { /*@ specification AndGate { int in1, in2, out; in1, in2 -> out {calc}; } @*/

public int calc( int x, int y ) { return Math.min(x, y); }}

Page 12: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 13: CoCoViLa @ devclub.eu

•Metaclass

• Image/Graphics

• Ports

• Fields

• Toolbar icon

Visual Class

Page 14: CoCoViLa @ devclub.eu

CoCoViLa Class Editor

Page 15: CoCoViLa @ devclub.eu

Package<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE package SYSTEM "package2.dtd"><package> <name>Logic</name> <description>Logical circuits builder</description> <class type="class"> <name>And</name> <description>And</description> <icon>images/and.png</icon> <graphics> <bounds height="83" width="202" x="0" y="0"/> <image fixed="false" height="100" path="/images/200px-AND_ANSI.png" width="200" x="3" y="-11"/> </graphics> <ports> <port name="in1" portConnection="" strict="false" type="int" x="13" y="19"/> <port name="in2" portConnection="" strict="false" type="int" x="13" y="59"/> <port name="out" portConnection="" strict="false" type="int" x="190" y="39"/> </ports> <fields> <field name="in1" type="int">

Page 16: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 17: CoCoViLa @ devclub.eu

• Instantiate objects

• Connect ports

• Assign values

• Assign a superclass

CoCoViLa Scheme Editor

Page 18: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 19: CoCoViLa @ devclub.eu

Scheme To Metaclass

Page 20: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 21: CoCoViLa @ devclub.eu

Metaclasses To Code

Page 22: CoCoViLa @ devclub.eu

Domain Concepts Java classes

MetaclassesVisual classes

Scheme

Metaclass

Computational modelJava classes

Bytecode

Aut

omat

icD

esig

ner

Use

rProgramming

Add specDraw

Planning andcode generation

Transform

Translate

Compile

Compose

Execute (w/ feedback)

Page 23: CoCoViLa @ devclub.eu

Compilation• Storing generated Java files: in memory or file system

• Eclipse JDT Core compiler

• Compiling Classloader (CCL)

URLClassLoader CCL

RunnerClassLoader

PackageClassLoader

Page 24: CoCoViLa @ devclub.eu

Execution

Page 25: CoCoViLa @ devclub.eu

Specification Language

• Variables double a, b; AndGate and;• Constants const double PI = Math.PI;• Bindings (equality) a = b;• Value assignments a = 3; and.in1 = 1;

Page 26: CoCoViLa @ devclub.eu

Simple Functional Dependencies

in1, in2 -> out {calc};

Realization in Java: public int calc( int x, int y ) { return Math.min(x, y); }

Page 27: CoCoViLa @ devclub.eu

Higher-order F. D-s (w/ Subtasks)

[arg -> val], from, to, step -> done {loop};

Realization in Java:public void loop(Subtask s, int st, int fn, int inc){

for(int i = st; i <= fn; i+=inc){

s.run(new Object[]{ i });}

}

public interface Subtask {

public Object[] run(Object[] args);

}

Page 28: CoCoViLa @ devclub.eu

Higher-order Dataflow

loopfrom, to, step done

arg val

Page 29: CoCoViLa @ devclub.eu

Specification Language

• Equations (built-in solver) specification AndGate { double in1, in2, out; in1*in2 = out; }

specification Complex { double re, im, arg, mod; mod^2 = re^2 + im^2; mod * sin(arg) = im; }

Page 30: CoCoViLa @ devclub.eu

Specification Language

• Tuples alias x = (a, b); alias y = (c, d); x = y; x.0 = y.1; x.length -> x {init};

• Wildcards alias ts = (*.t); x.*.1 = y.*.z;• Inheritance• Goals• Polymorphic types• Control variables• ...

Page 31: CoCoViLa @ devclub.eu

Tuplesalias axial = (n, T);alias tang = (v, m, F);

Page 32: CoCoViLa @ devclub.eu

Tuplesalias axial = (n, T);alias tang = (v, m, F);

W0.axial = W1.axial;

W1.tang = W2.tang;

Page 33: CoCoViLa @ devclub.eu

Tuplesalias axial = (n, T);alias tang = (v, m, F);

W0.axial = W1.axial;

W1.tang = W2.tang;

W0.n = W1.n;W0.T = W1.T;

W1.v = W2.v;W1.m = W2.m;W1.F = W2.F;

Page 34: CoCoViLa @ devclub.eu

Inheritance

public class Dif { /*@ specification Dif { Process Process_0; Clock Clock_0; Integrator Integrator_0; Integrator Integrator_1; } @*/}

public class Dif extends Process { /*@ specification Dif super Process { Clock Clock_0; Integrator Integrator_0; Integrator Integrator_1; } @*/}

Page 35: CoCoViLa @ devclub.eu

Wildcards (example)

scheme’s superclass

Page 36: CoCoViLa @ devclub.eu

Wildcards (example)

double state, nextstatestate stat

scheme’s superclass

double state, nextstate;

Page 37: CoCoViLa @ devclub.eu

Wildcards (example)

alias st = (*.state);alias nst = (*.nextstate);st -> nst {calculate};

double state, nextstatestate

alias st = (*.state);alias nst = (*.nextstate);st -> nst {calculate};

stat

scheme’s superclass

double state, nextstate;

Page 38: CoCoViLa @ devclub.eu

Wildcards (example)

alias st = (*.state);alias nst = (*.nextstate);st -> nst {calculate};

double state, nextstatestate

alias st = (*.state);alias nst = (*.nextstate);st -> nst {calculate};

stat

scheme’s superclass

double state, nextstate;

st = (Clock_0.state, Integrator_0.state, Integrator_1.state);

Page 39: CoCoViLa @ devclub.eu

Applications

• Hydraulic systems

• GrADAR model

• Security Costs Optimization

• Web-service composition

• Functional Constraint Networks

• Differential Equations

• Discrete Event Simulation

• Hybrid Network Simulation

• Logic Circuits

• Electric Circuits

• Gearbox kinematics

• Neural networks

• Petri nets

• Attack Trees

• UML diagrams

• ∞

Page 40: CoCoViLa @ devclub.eu

Hands-on Demo

Page 41: CoCoViLa @ devclub.eu

Starting CoCoViLa

• Requires Java 1.6

• How to run:

• Java Web Start (http://cs.ioc.ee/cocovila -> Web Start)

• Download zipped version and execute .jar

• git clone git://cocovila.git.sourceforge.net/gitroot/cocovila/cocovila -> ant run-se

Page 42: CoCoViLa @ devclub.eu

Predator-Prey Model (Lotka-Volterra)

• Prey (rabbits)

• Predators (wolfs)

dR

dt= kR− aRW

dW

dt= −rW + bRW

1

dR

dt= kR− aRW

dW

dt= −rW + bRW

1

Parameters: k = .08, a = .001, r=.02, b=.00002, R=1000, W=30

Page 43: CoCoViLa @ devclub.eu

Mechanical parts

Functional scheme

Modeling And Simulation Of An Electro-hydraulic Servo-valve

!A&?-%)!LS!H%3**!*)75&3/!30!/3RR()=0($22)%!5.2)!*)%#3#$(#)!4&5;!

*;34/!&/!A&?+!^+!

! !A&?-%)!"S!A-/75&3/$(!*7;)6)!30!$/!)()75%3=;.1%$-(&7!*)%#3#$(#)!!

Servo-valvewith mechanical

feedback

Page 44: CoCoViLa @ devclub.eu

Mechanical parts

Functional scheme

Modeling And Simulation Of An Electro-hydraulic Servo-valve

!A&?-%)!LS!H%3**!*)75&3/!30!/3RR()=0($22)%!5.2)!*)%#3#$(#)!4&5;!

*;34/!&/!A&?+!^+!

! !A&?-%)!"S!A-/75&3/$(!*7;)6)!30!$/!)()75%3=;.1%$-(&7!*)%#3#$(#)!!

Servo-valvewith mechanical

feedback

Page 45: CoCoViLa @ devclub.eu

Mechanical parts

Functional scheme

Modeling And Simulation Of An Electro-hydraulic Servo-valve

!A&?-%)!LS!H%3**!*)75&3/!30!/3RR()=0($22)%!5.2)!*)%#3#$(#)!4&5;!

*;34/!&/!A&?+!^+!

! !A&?-%)!"S!A-/75&3/$(!*7;)6)!30!$/!)()75%3=;.1%$-(&7!*)%#3#$(#)!!

Servo-valvewith mechanical

feedback

Page 46: CoCoViLa @ devclub.eu

Composition Of X-Road Services

Page 47: CoCoViLa @ devclub.eu

Graded IT Security Cost Optimization

Page 48: CoCoViLa @ devclub.eu

Modeling and Simulation Group @ IoC

http://www.cs.ioc.ee/msg/

Page 49: CoCoViLa @ devclub.eu

Thank You!