source: biblio/compositional.html @ 49

Last change on this file since 49 was 46, checked in by cecile, 13 years ago

biblio compostition

File size: 28.9 KB
RevLine 
[46]1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2<html lang="en">
3<head>
4<title>JabRef References output</title>
5<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6<script type="text/javascript">
7<!--
8// QuickSearch script for JabRef HTML export
9// Version: 2.0
10//
11// Copyright (c) 2006-2008, Mark Schenk
12//
13// This software is distributed under a Creative Commons Attribution 3.0 License
14// http://creativecommons.org/licenses/by/3.0/
15
16// Some features:
17// + optionally searches Abstracts and Reviews
18// + allows RegExp searches
19//   e.g. to search for entries between 1980 and 1989, type:  198[0-9]
20//   e.g. for any entry ending with 'symmetry', type:  symmetry$
21//   e.g. for all reftypes that are books: ^book$, or ^article$
22//   e.g. for entries by either John or Doe, type john|doe
23// + easy toggling of Abstract/Review/BibTeX
24
25// Search settings
26var searchAbstract = true;
27var searchReview = true;
28
29// Speed optimisation introduced some esoteric problems with certain RegExp searches
30// e.g. if the previous search is 200[-7] and the next search is 200[4-7] then the search doesn't work properly until the next 'keyup'
31// hence the searchOpt can be turned off for RegExp adepts
32var searchOpt = true;
33
34if (window.addEventListener) {
35        window.addEventListener("load",initSearch,false); }
36else if (window.attachEvent) {
37        window.attachEvent("onload", initSearch); }
38
39function initSearch() {
40        // basic object detection
41        if(!document.getElementById || !document.getElementsByTagName) { return; }
42        if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; }
43
44        // find QS table and appropriate rows
45        searchTable = document.getElementById('qstable');
46        var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
47
48        // split all rows into entryRows and infoRows (e.g. abstract, review, bibtex)
49        entryRows = new Array();
50        infoRows = new Array(); absRows = new Array(); revRows = new Array();
51
52        for (var i=0, k=0, j=0; i<allRows.length;i++) {
53                if (allRows[i].className.match(/entry/)) {
54                        entryRows[j++] = allRows[i];
55                } else {
56                        infoRows[k++] = allRows[i];
57                        // check for abstract/review
58                        if (allRows[i].className.match(/abstract/)) {
59                                absRows.push(allRows[i]);
60                        } else if (allRows[i].className.match(/review/)) {
61                                revRows.push(allRows[i]);
62                        }
63                }
64        }
65
66        //number of entries and rows
67        numRows = allRows.length;
68        numEntries = entryRows.length;
69        numInfo = infoRows.length;
70        numAbs = absRows.length;
71        numRev = revRows.length;
72
73        //find the query field
74        qsfield = document.getElementById('qsfield');
75
76        // previous search term; used for speed optimisation
77        prevSearch = '';
78
79        //find statistics location
80        stats = document.getElementById('stat');
81        setStatistics(-1);
82
83        // creates the appropriate search settings
84        createQSettingsDialog();
85
86        // shows the searchfield
87        document.getElementById('qs').style.display = 'block';
88        document.getElementById('qsfield').onkeyup = testEvent;
89}
90
91function quickSearch(tInput){
92
93         if (tInput.value.length == 0) {
94                showAll();
95                setStatistics(-1);
96                qsfield.className = '';
97                return;
98        } else {
99                // only search for valid RegExp
100                try {
101                        var searchText = new RegExp(tInput.value,"i")
102                        closeAllInfo();
103                        qsfield.className = '';
104                }
105                catch(err) {
106                        prevSearch = tInput.value;
107                        qsfield.className = 'invalidsearch';
108                        return;
109                }
110        }
111       
112        // count number of hits
113        var hits = 0;
114
115        // start looping through all entry rows
116        for (var i = 0; cRow = entryRows[i]; i++){
117
118                // only show search the cells if it isn't already hidden OR if the search term is getting shorter, then search all
119                // some further optimisation is possible: if the search string is getting shorter, and the row is already visible, skip it. Then be careful with hits!
120                if(!searchOpt || cRow.className.indexOf('noshow')==-1 || tInput.value.length <= prevSearch.length){
121                        var found = false; 
122
123                        var inCells = cRow.getElementsByTagName('td');
124                        var numCols = inCells.length;
125                               
126                        for (var j=0; j<numCols; j++) {
127                                cCell = inCells[j];
128                                var t = cCell.innerText?cCell.innerText:getTextContent(cCell);
129                                if (t.search(searchText) != -1){ 
130                                        found=true; 
131                                        break;
132                                } 
133                        }
134
135                        // look for further hits in Abstract and Review
136                        if(!found) {
137                                var articleid = cRow.id;
138                                if(searchAbstract && (abs = document.getElementById('abs_'+articleid))) {
139                                        if (getTextContent(abs).search(searchText) != -1){ found=true; } 
140                                }
141                                if(searchReview && (rev = document.getElementById('rev_'+articleid))) {
142                                        if (getTextContent(rev).search(searchText) != -1){ found=true; } 
143                                }
144                        }
145                       
146                        if(found) {
147                                cRow.className = 'entry show';
148                                hits++;
149                        } else {
150                                cRow.className = 'entry noshow';
151                        }
152                }
153        }
154
155        // update statistics
156        setStatistics(hits)
157       
158        // set previous search value
159        prevSearch = tInput.value;
160}
161
162function toggleInfo(articleid,info) {
163
164        var entry = document.getElementById(articleid);
165        var abs = document.getElementById('abs_'+articleid);
166        var rev = document.getElementById('rev_'+articleid);
167        var bib = document.getElementById('bib_'+articleid);
168                // Get the abstracts/reviews/bibtext in the right location
169        // in unsorted tables this is always the case, but in sorted tables it is necessary.
170        // Start moving in reverse order, so we get: entry, abstract,review,bibtex
171        if (searchTable.className.indexOf('sortable') != -1) {
172                if(bib) { entry.parentNode.insertBefore(bib,entry.nextSibling); }
173                if(rev) { entry.parentNode.insertBefore(rev,entry.nextSibling); }
174                if(abs) { entry.parentNode.insertBefore(abs,entry.nextSibling); }
175        }
176
177        if (abs && info == 'abstract') {
178                if(abs.className.indexOf('abstract') != -1) {
179                abs.className.indexOf('noshow') == -1?abs.className = 'abstract noshow':abs.className = 'abstract';
180                }
181        } else if (rev && info == 'review') {
182                if(rev.className.indexOf('review') != -1) {
183                rev.className.indexOf('noshow') == -1?rev.className = 'review noshow':rev.className = 'review';
184                }
185        } else if (bib && info == 'bibtex') {
186                if(bib.className.indexOf('bibtex') != -1) {
187                bib.className.indexOf('noshow') == -1?bib.className = 'bibtex noshow':bib.className = 'bibtex';
188                }               
189        } else { 
190                return;
191        }
192
193        // check if one or the other is available
194        var revshow = false;
195        var absshow = false;
196        var bibshow = false;
197        (abs && abs.className.indexOf('noshow') == -1)? absshow = true: absshow = false;
198        (rev && rev.className.indexOf('noshow') == -1)? revshow = true: revshow = false;       
199        (bib && bib.className == 'bibtex')? bibshow = true: bibshow = false;
200       
201        // highlight original entry
202        if(entry) {
203                if (revshow || absshow || bibshow) {
204                entry.className = 'entry highlight show';
205                } else {
206                entry.className = 'entry show';
207                }               
208        }
209       
210        // When there's a combination of abstract/review/bibtex showing, need to add class for correct styling
211        if(absshow) {
212                (revshow||bibshow)?abs.className = 'abstract nextshow':abs.className = 'abstract';
213        } 
214        if (revshow) {
215                bibshow?rev.className = 'review nextshow': rev.className = 'review';
216        }
217       
218}
219
220function setStatistics (hits) {
221        if(hits < 0) { hits=numEntries; }
222        if(stats) { stats.firstChild.data = hits + '/' + numEntries}
223}
224
225function getTextContent(node) {
226        // Function written by Arve Bersvendsen
227        // http://www.virtuelvis.com
228       
229        if (node.nodeType == 3) {
230        return node.nodeValue;
231        } // text node
232        if (node.nodeType == 1) { // element node
233        var text = [];
234        for (var chld = node.firstChild;chld;chld=chld.nextSibling) {
235                text.push(getTextContent(chld));
236        }
237        return text.join("");
238        } return ""; // some other node, won't contain text nodes.
239}
240
241function showAll(){
242        // first close all abstracts, reviews, etc.
243        closeAllInfo();
244
245        for (var i = 0; i < numEntries; i++){
246                entryRows[i].className = 'entry show'; 
247        }
248}
249
250function closeAllInfo(){
251        for (var i=0; i < numInfo; i++){
252                if (infoRows[i].className.indexOf('noshow') ==-1) {
253                        infoRows[i].className = infoRows[i].className + ' noshow';
254                }
255        }
256}
257
258function testEvent(e){
259        if (!e) var e = window.event;
260        quickSearch(this);
261}
262
263function clearQS() {
264        qsfield.value = '';
265        quickSearch(qsfield);
266}
267
268function redoQS(){
269        showAll();
270        quickSearch(qsfield);
271}
272
273// Create Search Settings
274
275function toggleQSettingsDialog() {
276
277        var qssettings = document.getElementById('qssettings');
278       
279        if(qssettings.className.indexOf('active')==-1) {
280                qssettings.className = 'active';
281
282                if(absCheckBox && searchAbstract == true) { absCheckBox.checked = 'checked'; }
283                if(revCheckBox && searchReview == true) { revCheckBox.checked = 'checked'; }
284
285        } else {
286                qssettings.className= '';
287        }
288}
289
290function createQSettingsDialog(){
291        var qssettingslist = document.getElementById('qssettings').getElementsByTagName('ul')[0];
292       
293        if(numAbs!=0) {
294                var x = document.createElement('input');
295                x.id = "searchAbs";
296                x.type = "checkbox";
297                x.onclick = toggleQSetting;
298                var y = qssettingslist.appendChild(document.createElement('li')).appendChild(document.createElement('label'));
299                y.appendChild(x);
300                y.appendChild(document.createTextNode('search abstracts'));             
301        }
302        if(numRev!=0) {
303                var x = document.createElement('input');
304                x.id = "searchRev";
305                x.type = "checkbox";           
306                x.onclick = toggleQSetting;
307                var y = qssettingslist.appendChild(document.createElement('li')).appendChild(document.createElement('label'));         
308                y.appendChild(x);               
309                y.appendChild(document.createTextNode('search reviews'));
310        }
311               
312        // global variables
313        absCheckBox = document.getElementById('searchAbs');
314        revCheckBox = document.getElementById('searchRev');
315       
316        // show search settings
317        if(absCheckBox||revCheckBox) {
318                document.getElementById('qssettings').style.display = 'block';
319        }
320}
321
322function toggleQSetting() {
323        if(this.id=='searchAbs') { searchAbstract = !searchAbstract; }
324        if(this.id=='searchRev') { searchReview = !searchReview; }
325        redoQS()
326} 
327-->
328</script>
329<script type="text/javascript">
330<!--
331// Sort Table Script
332// Version: 1.1
333//
334// Copyright (c) 2006-2008, Mark Schenk
335//
336// This software is distributed under a Creative Commons Attribution 3.0 License
337// http://creativecommons.org/licenses/by/3.0/
338
339// NB: slow as molasses in FireFox, especially when sorting columns with a lot of text.
340// An optimization is implemented which makes speed bearable, toggled by the following variable
341var SORT_SPEED_OPT = true;
342// a bit of browser preference: Opera does not need optimization
343if(window.opera) { SORT_SPEED_OPT=false; }
344// the optimization has one limitation on the functionality: when sorting search
345// results, the expanded info, e.g. bibtex/review, is collapsed. In the non-optimized
346// version they remain visible.
347
348
349if (window.addEventListener) {
350        window.addEventListener("load",initSortTable,false) }
351else if (window.attachEvent) {
352        window.attachEvent("onload", initSortTable); }
353
354function initSortTable() {
355var alltables = document.getElementsByTagName('table');
356for(i=0;i<alltables.length;i++) {
357        var currentTable = alltables[i];
358        if(currentTable.className.indexOf('sortable') !=-1) {
359                var thead = currentTable.getElementsByTagName('thead')[0];
360                thead.title = 'Click on any column header to sort';
361                for (var i=0;cell = thead.getElementsByTagName('th')[i];i++) {
362                        cell.onclick = function () { resortTable(this); };
363                        // make it possible to have a default sort column
364                        if(cell.className.indexOf('sort')!=-1) {
365                                resortTable(cell)
366                        }
367                }
368        }
369}
370}
371
372var SORT_COLUMN_INDEX
373
374function resortTable(td) {
375        var column = td.cellIndex;
376        var table = getParent(td,'TABLE');
377
378        var allRows = table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
379        var newRows = new Array();
380
381        for (var i=0, k=0; i<allRows.length;i++) {
382
383                var rowclass = allRows[i].className;
384
385                if (rowclass.indexOf('entry') != -1) {
386                newRows[k++] = allRows[i];
387                }
388               
389                if (SORT_SPEED_OPT) {
390                // remove highlight class
391                allRows[i].className = rowclass.replace(/highlight/,'');
392                // close information
393                if(rowclass.indexOf('entry') == -1 && rowclass.indexOf('noshow') == -1) { allRows[i].className = rowclass + ' noshow';}
394                } 
395        }
396
397
398        // If other sort functions are deemed necessary (e.g. for
399        // dates and currencies) they can be added.
400        var sortfn = ts_sort_firstchild_caseinsensitive;
401        SORT_COLUMN_INDEX = column;
402        newRows.sort(sortfn);
403
404        // create a container for showing sort arrow
405        var arrow =  td.getElementsByTagName('span')[0];
406        if (!arrow) { var arrow = td.appendChild(document.createElement('span'));}
407       
408        if (td.className) {
409                if (td.className.indexOf('sort_asc') !=-1) {
410                        td.className = td.className.replace(/_asc/,"_des");
411                        newRows.reverse();
412                        arrow.innerHTML = '&uArr;';
413                } else if (td.className.indexOf('sort_des') !=-1) {
414                        td.className = td.className.replace(/_des/,"_asc");
415                        arrow.innerHTML = '&dArr;';
416                } else { 
417                        td.className += ' sort_asc'; 
418                        arrow.innerHTML = '&dArr;';
419                }
420        } else {
421                td.className += 'sort_asc';
422                arrow.innerHTML = '&dArr;';
423        }
424       
425        // Remove the classnames and up/down arrows for the other headers
426        var ths = table.getElementsByTagName('thead')[0].getElementsByTagName('th');
427        for (var i=0; i<ths.length; i++) {
428                if(ths[i]!=td && ths[i].className.indexOf('sort_')!=-1) {
429                // argh, moronic JabRef thinks (backslash)w is an output field!!
430                //ths[i].className = ths[i].className.replace(/sort_(backslash)w{3}/,"");
431                ths[i].className = ths[i].className.replace(/sort_asc/,"");
432                ths[i].className = ths[i].className.replace(/sort_des/,"");
433
434                // remove span
435                var arrow =  ths[i].getElementsByTagName('span')[0];
436                if (arrow) { ths[i].removeChild(arrow); }
437                }
438        }
439
440        // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
441        for (i=0;i<newRows.length;i++) { 
442                table.getElementsByTagName('tbody')[0].appendChild(newRows[i]);
443
444                if(!SORT_SPEED_OPT){
445                // moving additional information, e.g. bibtex/abstract to right locations
446                // this allows to sort, even with abstract/review/etc. still open
447                var articleid = newRows[i].id;
448
449                var entry = document.getElementById(articleid);
450                var abs = document.getElementById('abs_'+articleid);
451                var rev = document.getElementById('rev_'+articleid);
452                var bib = document.getElementById('bib_'+articleid);           
453       
454                var tbody = table.getElementsByTagName('tbody')[0];
455                // mind the order of adding the entries
456                if(abs) { tbody.appendChild(abs); }
457                if(rev) { tbody.appendChild(rev); }
458                if(bib) { tbody.appendChild(bib); }
459                }
460        }
461}
462
463function ts_sort_firstchild_caseinsensitive(a,b) {
464        // only search in .firstChild of the cells. Speeds things up tremendously in FF
465        // problem is that it won't find all the text in a cell if the firstChild is an element
466        // or if there are other elements in the cell. Risky fix, but the speed boost is worth it.
467        var acell = a.cells[SORT_COLUMN_INDEX];
468        var bcell = b.cells[SORT_COLUMN_INDEX];
469       
470        acell.firstChild? aa = getTextContent(acell.firstChild).toLowerCase():aa = "";
471        bcell.firstChild? bb = getTextContent(bcell.firstChild).toLowerCase():bb = "";
472
473        if (aa==bb) return 0;
474        if (aa<bb) return -1;
475        return 1;
476}
477
478function ts_sort_caseinsensitive(a,b) {
479        aa = getTextContent(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
480        bb = getTextContent(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
481        if (aa==bb) return 0;
482        if (aa<bb) return -1;
483        return 1;
484}
485
486function ts_sort_default(a,b) {
487        aa = getTextContent(a.cells[SORT_COLUMN_INDEX]);
488        bb = getTextContent(b.cells[SORT_COLUMN_INDEX]);
489        if (aa==bb) return 0;
490        if (aa<bb) return -1;
491        return 1;
492}
493
494function getParent(el, pTagName) {
495        if (el == null) { 
496                return null;
497        } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
498                return el;
499        } else {
500                return getParent(el.parentNode, pTagName);
501        }
502}
503-->
504</script>
505
506<style type="text/css">
507body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; color: #2E2E2E; }
508
509#qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none; position:relative; }
510#qs form { padding: 0px; margin: 0px; }
511#qs form p { padding: 0px; margin: 0px; }
512
513.invalidsearch { background-color: red; }
514
515table { border: 1px gray solid; width: 100%; empty-cells: show; }
516th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top;  }
517td { text-align: left; vertical-align: top; }
518th { background-color: #EFEFEF; }
519
520td a { color: navy; text-decoration: none; }
521td a:hover  { text-decoration: underline; }
522
523tr.noshow { display: none;}
524
525tr.highlight td { background-color: #F1F1F1; border-top: 2px black solid; font-weight: bold; }
526tr.abstract td, tr.review td, tr.bibtex td { background-color: #F1F1F1; border-bottom: 2px black solid; }
527tr.nextshow td { border-bottom: 1px gray solid; }
528
529tr.bibtex pre { width: 100%; overflow: auto;}
530
531p.infolinks { margin: 0.5em 0em 0em 0em; padding: 0px; }
532
533#qssettings { padding: 0.5em; position: absolute; top: 0.2em; right: 0.2em; border: 1px gray solid; background-color: white; display: none; }
534#qssettings p { font-weight: bold; cursor: pointer; }
535#qssettings ul { display: none; list-style-type: none; padding-left: 0; margin: 0; }
536#qssettings.active ul { display: block; }
537
538@media print {
539        p.infolinks, #qssettings, #qs { display: none !important; }
540        table { border-width: 0px; }
541        tr { page-break-inside: avoid; }
542        tr > * + * + * + * + * {display: none; }
543        thead tr::before { content: "Reference"; border: 1px gray solid; padding: 0.5em; vertical-align: top; font-weight: bold; text-align: center; display: table-cell; background-color: #EFEFEF; }
544        tr[id]::before { content: attr(id); display: table-cell; border: 1px gray solid; padding: 0.5em; vertical-align: top; font-style: italic; }
545}
546th.sort_asc, th.sort_des { border: 2px black solid; }
547
548</style>
549</head>
550<body>
551
552<div id="qs">
553        <form action="">
554        <p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as well as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" />&nbsp; Number of matching entries: <span id="stat">0</span>.</p>
555        <div id="qssettings">
556                <p onclick="toggleQSettingsDialog()">Search Settings</p>
557                <ul></ul>
558        </div>
559        </form>
560</div>
561<table id="qstable" class="sortable" border="1">
562<thead><tr><th width="20%">Author</th><th width="30%">Title</th><th width="4%">Year</th><th width="30%">Journal/Proceedings</th><th width="7%">Reftype</th><th width="4%">DOI/URL</th></tr></thead>
563<tbody>
564<tr id="Cabodi09Speeding" class="entry">
565        <td>Cabodi, G., Camurati, P., Garcia, L., Murciano, M., Nocco, S. &amp; Quer, S.&nbsp;</td>
566        <td>Speeding up Model Checking by Exploiting Explicit and Hidden Verification Constraints <p class="infolinks">[<a href="javascript:toggleInfo('Cabodi09Speeding','abstract')">Abstract</a>] [<a href="javascript:toggleInfo('Cabodi09Speeding','bibtex')">BibTeX</a>]</p></td>
567        <td>2009</td>
568        <td>DATE '09: Proceedings of the conference on Design, Automation and Test in Europe, pp. 1686-1691&nbsp;</td>
569        <td>inproceedings</td>
570        <td>&nbsp;</td>
571</tr>
572<tr id="abs_Cabodi09Speeding" class="abstract noshow">
573        <td colspan="7"><b>Abstract</b>: Constraints represent a key component of state-<p>of-the-art verification tools based on compositional approaches<p>and assume–guarantee reasoning. In recent years, most of the<p>research efforts on verification constraints have focused on<p>defining formats and techniques to encode, or to synthesize,<p>constraints starting from the specification of the design.<p>In this paper, we analyze the impact of constraints on the<p>performance of model checking tools, and we discuss how to<p>effectively exploit them. We also introduce an approach to<p>explicitly derive verification constraints hidden in the design<p>and/or in the property under verification. Such constraints may<p>simply come from true design constraints, embedded within the<p>properties, or may be generated in the general effort to reduce or<p>partition the state space. Experimental results show that, in both<p>cases, we can reap benefits for the overall verification process<p>in several hard-to-solve designs, where we obtain speed-ups of<p>more than one order of magnitude.</td>
574</tr>
575<tr id="bib_Cabodi09Speeding" class="bibtex noshow">
576<td colspan="7"><b>BibTeX</b>:
577<pre>
578@inproceedings{Cabodi09Speeding,
579  author = {G. Cabodi and P. Camurati and L. Garcia and M. Murciano and S. Nocco and S. Quer},
580  title = {Speeding up Model Checking by Exploiting Explicit and Hidden Verification Constraints},
581  booktitle = {DATE '09: Proceedings of the conference on Design, Automation and Test in Europe},
582  year = {2009},
583  pages = {1686-1691}
584}
585</pre></td>
586</tr>
587<tr id="6128043" class="entry">
588        <td>Feng, Y., Veeramani, A., Kanagasabai, R. &amp; Rho, S.&nbsp;</td>
589        <td>Automatic Service Composition via Model Checking <p class="infolinks">[<a href="javascript:toggleInfo('6128043','abstract')">Abstract</a>] [<a href="javascript:toggleInfo('6128043','bibtex')">BibTeX</a>]</p></td>
590        <td>2011</td>
591        <td>Services Computing Conference (APSCC), 2011 IEEE Asia-Pacific, pp. 477 -482&nbsp;</td>
592        <td>inproceedings</td>
593        <td><a href="http://dx.doi.org/10.1109/APSCC.2011.54">DOI</a> &nbsp;</td>
594</tr>
595<tr id="abs_6128043" class="abstract noshow">
596        <td colspan="7"><b>Abstract</b>: Web service composition is the process of constructing a set of Web services which, when invoked with some user input in a particular order, can produce the output to the user's requirements. This paper proposes a novel model checking based approach for automated service composition. Modeling services as a set of interleaved processes in a class of process algebra, we formulate service composition as model checking asserted on a specific type of property on the model. We show that, under this formulation, correct composition workflows can be constructed from the counter-examples provided by model checking. With a case study on online hotel booking services, we demonstrate that the proposed approach can support directed a cyclic composition graphs and the generated composition graphs are automatically verified.</td>
597</tr>
598<tr id="bib_6128043" class="bibtex noshow">
599<td colspan="7"><b>BibTeX</b>:
600<pre>
601@inproceedings{6128043,
602  author = {Yuzhang Feng and Veeramani, A. and Kanagasabai, R. and Seungmin Rho},
603  title = {Automatic Service Composition via Model Checking},
604  booktitle = {Services Computing Conference (APSCC), 2011 IEEE Asia-Pacific},
605  year = {2011},
606  pages = {477 -482},
607  doi = {http://dx.doi.org/10.1109/APSCC.2011.54}
608}
609</pre></td>
610</tr>
611<tr id="springerlink:10.1007/978-3-642-16901-4_15" class="entry">
612        <td>Lomuscio, A., Strulo, B., Walker, N. &amp; Wu, P.&nbsp;Jin Dong and Huibiao Zhu (Ed.)</td>
613        <td>Assume-Guarantee Reasoning with Local Specifications <p class="infolinks">[<a href="javascript:toggleInfo('springerlink:10.1007/978-3-642-16901-4_15','abstract')">Abstract</a>] [<a href="javascript:toggleInfo('springerlink:10.1007/978-3-642-16901-4_15','bibtex')">BibTeX</a>]</p></td>
614        <td>2010</td>
615        <td><br/>Vol. 6447Formal Methods and Software Engineering, pp. 204-219&nbsp;</td>
616        <td>incollection</td>
617        <td><a href="http://dx.doi.org/10.1007/978-3-642-16901-4_15">URL</a>&nbsp;</td>
618</tr>
619<tr id="abs_springerlink:10.1007/978-3-642-16901-4_15" class="abstract noshow">
620        <td colspan="7"><b>Abstract</b>: We investigate assume-guarantee reasoning for global specifications consisting of conjunctions of local specifications. We present a sound and complete assume-guarantee rule that permits reasoning about individual modules for local specifications and draws conclusions on global specifications. We illustrate our approach with an example from the field of network congestion control, where different agents are responsible for controlling packet flow across a shared infrastructure. In this context, we derive an assume-guarantee rule for system stability, and show that this rule is valuable to reason about any number of agents, any initial flow configuration, and any topology of bounded degree.</td>
621</tr>
622<tr id="bib_springerlink:10.1007/978-3-642-16901-4_15" class="bibtex noshow">
623<td colspan="7"><b>BibTeX</b>:
624<pre>
625@incollection{springerlink:10.1007/978-3-642-16901-4_15,
626  author = {Lomuscio, Alessio and Strulo, Ben and Walker, Nigel and Wu, Peng},
627  title = {Assume-Guarantee Reasoning with Local Specifications},
628  booktitle = {Formal Methods and Software Engineering},
629  publisher = {Springer Berlin / Heidelberg},
630  year = {2010},
631  volume = {6447},
632  pages = {204-219},
633  note = {10.1007/978-3-642-16901-4_15},
634  url = {http://dx.doi.org/10.1007/978-3-642-16901-4_15}
635}
636</pre></td>
637</tr>
638<tr id="Tripakis201" class="entry">
639        <td>Tripakis, S., Andrade, H., Ghosal, A., Limaye, R., Ravindran, K., Wang, G., Yang, G., Kormerup, J. &amp; Wong, I.&nbsp;</td>
640        <td>Correct and non-defensive glue design using abstract models <p class="infolinks">[<a href="javascript:toggleInfo('Tripakis201','abstract')">Abstract</a>] [<a href="javascript:toggleInfo('Tripakis201','bibtex')">BibTeX</a>]</p></td>
641        <td>2011</td>
642        <td>Proceedings of the seventh IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, pp. 59-68&nbsp;</td>
643        <td>inproceedings</td>
644        <td><a href="http://doi.acm.org/10.1145/2039370.2039382">DOI</a> <a href="http://doi.acm.org/10.1145/2039370.2039382">URL</a>&nbsp;</td>
645</tr>
646<tr id="abs_Tripakis201" class="abstract noshow">
647        <td colspan="7"><b>Abstract</b>:  Current hardware design practice often relies on integration of components, some of which may be IP or legacy blocks. While integration eases design by allowing modularization and component reuse, it is still done in a mostly ad hoc manner. Designers work with descriptions of components that are either informal or incomplete (e.g., documents in English, structural but non-behavioral specifications in IP-XACT) or too low-level (e.g., HDL code), and have little to no automatic support for stitching the components together. Providing such support is the glue design problem.<p>This paper addresses this problem using a model-based approach. The key idea is to use high-level models, such as dataflow graphs, that enable efficient automated analysis. The analysis can be used to derive performance properties of the system (e.g., component compatibility, throughput, etc.), optimize resource usage (e.g., buffer sizes), and even synthesize low-level code (e.g., control logic). However, these models are only abstractions of the real system, and often omit critical information. As a result, the analysis outcomes may be defensive (e.g., buffers that are too big) or even incorrect (e.g., buffers that are too small). The paper examines these situations and proposes a correct and non-defensive design methodology that employs the right models to explore accurate performance and resource trade-offs. </td>
648</tr>
649<tr id="bib_Tripakis201" class="bibtex noshow">
650<td colspan="7"><b>BibTeX</b>:
651<pre>
652@inproceedings{Tripakis201,
653  author = {Tripakis, Stavros and Andrade, Hugo and Ghosal, Arkadeb and Limaye, Rhishikesh and Ravindran, Kaushik and Wang, Guoqiang and Yang, Guang and Kormerup, Jacob and Wong, Ian},
654  title = {Correct and non-defensive glue design using abstract models},
655  booktitle = {Proceedings of the seventh IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis},
656  publisher = {ACM},
657  year = {2011},
658  pages = {59--68},
659  url = {http://doi.acm.org/10.1145/2039370.2039382},
660  doi = {http://doi.acm.org/10.1145/2039370.2039382}
661}
662</pre></td>
663</tr>
664<tr id="5374376" class="entry">
665        <td>Zheng, H., Yao, H. &amp; Yoneda, T.&nbsp;</td>
666        <td>Modular Model Checking of Large Asynchronous Designs with Efficient Abstraction Refinement <p class="infolinks">[<a href="javascript:toggleInfo('5374376','abstract')">Abstract</a>] [<a href="javascript:toggleInfo('5374376','bibtex')">BibTeX</a>]</p></td>
667        <td>2010</td>
668        <td>Computers, IEEE Transactions on<br/>Vol. 59(4), pp. 561 -573&nbsp;</td>
669        <td>article</td>
670        <td><a href="http://dx.doi.org/10.1109/TC.2009.187">DOI</a> &nbsp;</td>
671</tr>
672<tr id="abs_5374376" class="abstract noshow">
673        <td colspan="7"><b>Abstract</b>: Divide-and-conquer is essential to address state explosion in model checking. Verifying each individual component in a system, in isolation, efficiently requires an appropriate context, which traditionally is obtained by hand. This paper presents an efficient modular model checking approach for asynchronous design verification. It is equipped with a novel abstraction refinement method that can refine a component abstraction to be accurate enough for successful verification. It is fully automated, and eliminates the need of finding an accurate context when verifying each individual component, although such a context is still highly desirable. This method is also enhanced with additional state space reduction techniques. The experiments on several nontrivial asynchronous designs show that this method efficiently removes impossible behaviors from each component including ones violating correctness requirements.</td>
674</tr>
675<tr id="bib_5374376" class="bibtex noshow">
676<td colspan="7"><b>BibTeX</b>:
677<pre>
678@article{5374376,
679  author = {Hao Zheng and Haiqiong Yao and Yoneda, T.},
680  title = {Modular Model Checking of Large Asynchronous Designs with Efficient Abstraction Refinement},
681  journal = {Computers, IEEE Transactions on},
682  year = {2010},
683  volume = {59},
684  number = {4},
685  pages = {561 -573},
686  doi = {http://dx.doi.org/10.1109/TC.2009.187}
687}
688</pre></td>
689</tr>
690</tbody>
691</table>
692
693<p>
694 <small>Created by <a href="http://jabref.sourceforge.net">JabRef</a> on 01/03/2012.</small>
695</p>
696
697</body>
698</html>
699
700<!-- File generated by JabRef ; Export Filter written by Mark Schenk -->
Note: See TracBrowser for help on using the repository browser.