=Paper=
{{Paper
|id=Vol-2245/mdebug_paper_1
|storemode=property
|title=Debugging of Model Transformations and Contracts in SyVOLT
|pdfUrl=https://ceur-ws.org/Vol-2245/mdebug_paper_1.pdf
|volume=Vol-2245
|authors=Bentley James Oakes,Levi Lucio,Clark Verbrugge,Hans Vangheluwe
|dblpUrl=https://dblp.org/rec/conf/models/OakesLVV18
}}
==Debugging of Model Transformations and Contracts in SyVOLT==
Debugging of Model Transformations and Contracts in SyVOLT Bentley James Oakes Clark Verbrugge McGill University, Montreal, Canada McGill University, Montreal, Canada bentley.oakes@mail.mcgill.ca clump@cs.mcgill.ca Levi Lucio Hans Vangheluwe fortiss GmbH, München, Germany McGill University, Montreal, Canada lucio@fortiss.org University of Antwerp, Antwerp, Belgium Flanders Make, Belgium Hans.Vangheluwe@uantwerpen.be ABSTRACT then proved over the state-space, yielding combinations of rules The SyVOLT tool verifies DSLTrans transformations by generating where the contract is satisfied, and combinations where it is not. a state-space for the transformation’s execution, and then proving The SyVOLT tool and its input artefacts are presented in Section 2 structural contracts on that state-space. As with any verification to provide background information. activity, it is non-trivial to ensure that these contracts are error-free However, the result of the verification process only indicates and correspond to the user’s intention. that the contracts are or are not satisfied by the transformation by SyVOLT detects and localizes errors in the input artefacts for providing counter-examples. It is still a significant effort to examine the verification activity to provide the user with assistance in de- these counter-examples and localize the fault in the transformation bugging the transformation and/or the contracts. This experience and/or the contracts. As well, once the fault is localized, it may be report details the techniques built into the analysis, monitoring, and non-trivial to modify the artefacts to obtain the desired contract reporting stages of the tool. These techniques include detection of result. One particular problem, partially addressed in this paper invalid rules and contracts, a form of reachability analysis during by the contract result analysis, is the situation where a contract is state-space generation, and assisting the user in understanding why expected to fail, but instead is reported as satisfied. a contract fails to be satisfied. The current paper addresses the difficulty in understanding the interaction of contracts with the transformation under study. As our CCS CONCEPTS contribution, we present three stages of fault detection and localiza- tion within the SyVOLT tool, at the appropriate level of abstraction. • Computing methodologies → Model verification and vali- The first stage is analysis (Section 3), where transformation and dation; • Software and its engineering → Domain specific lan- contracts are examined to record dependency information, and en- guages; Automated static analysis; sure that transformations and contracts are valid before state-space ACM Reference Format: generation begins. The second stage is the monitoring of state space Bentley James Oakes, Clark Verbrugge, Levi Lucio, and Hans Vangheluwe. generation (Section 4), where rules are examined to ensure they 2018. Debugging of Model Transformations and Contracts in SyVOLT. In symbolically execute. Finally, the reporting stage (Section 5) offers Proceedings of Debugging in Model-Driven Engineering (MDEbug). ACM, New York, NY, USA, 6 pages. an explanation for why contracts have failed to be satisfied. 1 INTRODUCTION 2 BACKGROUND Our verification research concerns the creation of a symbolic execu- As the adoption of model-driven engineering increases in both tion state-space for transformations, and verification of structural academia and industry, the verification of model-to-model or model- contracts over that representation of the state-space. These opera- to-text transformations becomes a critical part of software devel- tions are performed by the SyVOLT contract verifier1 , which has opment. Our verification research [9, 10] focuses on the proving been employed in transformation verification research [1]. of structural contracts, which represent patterns on the input and output models of a transformation written in the DSLTrans model transformation language. If a contract is said to hold by our tech- 2.1 DSLTrans Transformation Language nique, then whenever a transformation’s input model contains the Our symbolic execution technique requires that the transformation pattern specified in the pre-condition of the contract, the output language being verified has reduced expressiveness, as in work by model produced by that transformation will contain the pattern Varró et al. [18]. Our verification research operates on the model specified in the contract’s post-condition (including traceability transformation language DSLTrans [2], which has the properties constraints). of termination and confluence. A full treatment of the semantics of The SyVOLT tool [8] verifies a set of contracts on a transforma- DSLTrans is found in the thesis of Oakes [10]. tion by generating a symbolic state-space for the transformation The essential unit of a DSLTrans transformation is the rule. Rules through the combination of rule applications. The contracts are contain matching and production elements and links in the Match- Model and the ApplyModel. In Figure 1 on the following page, the MDEbug, October 2018, Copenhagen, Denmark 2018. 1 Available at https://github.com/levilucio/SyVOLT. MatchModel is the white box in the top half of the rule, while least) these upper elements were present in the input model, and the ApplyModel is the yellow box in the bottom of the rule. Rule these lower elements are present in the output model.” application begins by matching elements and links found in the MatchModel (as well as connected elements in the ApplyModel) onto the input model of the rule. If this can be accomplished, then the elements and links in the ApplyModel (not connected to the MatchModel) are created in the output model. As well, rules specify how elements of the output model were created from specific elements of the input model during rule ap- plication. This traceability information for the transformation is Figure 2: A path condition which represents the application stored as traceability links, which are built between a newly gen- of four transformation rules. erated element in the output model, and the elements of the input model that originated it. The backward link construct in DSLTrans rules is used to match 2.3 Contracts over these traceability links. Figure 1 depicts a rule containing two backward links. The backward links are denoted as dotted The structural contracts used in our verification research represent lines, connecting the Country and Community elements and the patterns on the input and output models of a transformation. Child and Woman elements. These links enforce a dependency that the Community element must have been produced by a rule that matched on the Country element in an earlier layer of the transformation. Figure 1: A DSLTrans rule with backward links. Figure 3: Pos_FourMembers contract, representing the infor- Rules are placed into layers in the transformation. The semantics mal statement “A Family with a father, mother, son and of DSLTrans specify that all rules in a layer fully apply before the daughter should always produce two Man and two Woman next layer is executed. Note that rules in a layer cannot match on elements connected to a Community” the output produced by another rule in the same layer. 2.2 Path Conditions For example, the input graph of the contract in the upper-half of Figure 3 contains a Family element and four connected Member Our contract verification technique builds structures called path elements. The output graph of the contract in the lower-half of conditions, which represent the symbolic application of rules in the figure contains a Community element, two Man elements, and the transformation by explicitly including the input and output two Woman elements. The dashed lines represent the restriction elements and links matched over or created by those rules. that the output elements must have been produced by a rule that An example path condition is shown in Figure 2, which repre- matched over the connected input element. sents the application of four rules in the transformation. These rules are bounded in dashed boxes and contain elements and links 2.3.1 Contract Verification. Once the set of path conditions has which are typed from the input and output meta-models for the been created for a transformation, then the pre-condition and post- transformation. condition for each contract are matched over these path conditions. The white top-half of the path condition is the input graph, while In Figure 3, the pre-condition of the contract is composed of the the grey bottom-half is the output graph. Lines between the input elements in the upper half of the contract. The post-condition of graph and output graph are traceability links, which record how this contract is all elements and links as shown in Figure 3. the output elements were created during the execution of the trans- If a contract is said to be satisfied by our technique, then when- formation. This path condition can therefore be read as: “If only ever a transformation’s input model contains the pattern specified these four rules apply during a transformation execution, then (at in the pre-condition of the contract, the output model produced by that transformation will contain the pattern specified in the a) Error: Elements in contract ErrFourMembers link are missing: Community - directLink_T - Female contract’s post-condition (including traceability constraints). Oth- b) Error: Backward link might be missing in contract ErrFourMembers: erwise, if the post-condition does not hold on a path condition, then Member - trace - Female c) Looking for meta-model element: `Member' we have found a counter-example to the contract, and those rule Rule Daughter2Woman contains meta-model element: combinations represented by the path condition do not satisfy the `Member' as `Child' contract. Rule Father2Man contains meta-model element: `Member' as `Parent' The present paper focuses on how to assist the user in under- ... standing the result of contract satisfaction through a number of d) Looking for meta-model element: `Female' debugging techniques. Error: Meta-model element `Female' not found in any rule! 3 DEBUGGING STAGE 1: ANALYSIS Figure 4: Dependency analysis presented for the erroneous ErrFourMembers contract. The main operation of the SyVOLT tool is the generation of the state-space of rule execution. However, first an analysis stage oc- curs, where the transformation and contract are examined to detect where the contract’s post-condition can be satisfied, and thus the dependencies between the contract and rules in the transformation, contract will never hold. as well as inter-rule dependencies. The output marked b) states that there is also a backward link This dependency analysis has three primary objectives in a de- in the contract which cannot be satisfied by the transformation. bugging context. The first objective is a sanity check to ensure that That is, there is no rule that matches over a Member element and all rules can symbolically execute and all contract elements can be produces a Female element. To assist the user, the rules where these produced, such that the user is alerted to an invalid transformation elements are presented are indicated in sections c) and d). or a contract which cannot be verified. The second objective is to The c) section displays the transformation rules that contain a record which elements of the contract and transformation depend Member element. Note that these rules may contain the element on which rules in the transformation, as this information will be as a sub-class instead. For example, the Father2Man rule contains a used when presenting the results of verification (Section 5). Parent element which is a sub-class of the Member element. This Finally, the last objective is to support a slicing optimization [10, allows the user to focus on the rules which are likely candidates 11], which restricts the symbolic execution of the transformation for errors. to only those rules needed to verify a contract. This optimization Finally, the section marked d) informs the user of the error that therefore improves the debugging process for the user by winnow- no rule contains a Female element. All elements of the contract ing away all rules that can not change the satisfaction of a contract, must be present in the transformation for successful verification, and allowing the user to concentrate on the essential rules. otherwise the user must modify the contract or transformation such that the element exists. 3.1 Procedure The analysis process begins by examining all rules in the transfor- 3.3 Fixing Input Errors mation to determine if any rule produces the elements and links During our verification research, we noticed that our case studies in a particular contract. As well, we ensure that all backward links suffered from typos/inconsistencies, which meant that a number between input and output elements (denoting dependencies) in the of contracts could never be satisfied. For example, a contract for transformation’s rules can be satisfied by earlier rules. the mbeddr case study (presented in the thesis of Oakes [10]) con- This element-matching allows our analysis to check if there tained ReferenceExpression and GlobalRefExpr elements instead of exists an element or link in a contract or a rule that cannot be the correct ReferenceExpr and GlobalVarRef elements. satisfied in the transformation. In this case, even before the contract In this section, we wish to emphasize how crucial it is to detect prover executes we know that there is an error with the contract or or prevent these simple errors as early as possible in the verification the transformation such that the validation process will fail. When process. These errors can potentially consume a large portion of this occurs, the user is alerted to the precise missing element or debugging time, while not addressing the “interesting” reasons for link in the rule or contract so that it may be fixed. verification failure. The source of these errors was the manual nature of the Eclipse- 3.2 Example based editing environment used to initially create the transforma- Consider an intentional error in the FourMembers contract pre- tions and contracts [8]. In the current version of the visual editor, sented in Figure 3. Instead of having Woman elements in the Output the user is able to type in any name for rule elements without any graph (lower half) of this contract, assume that these are Female validation against the transformation meta-models. elements in the erroneous version. This represents the contract More recently, we have developed an editor plugin2 for the Meta builder unintentionally using an old meta-model or making a typo. Programming System (MPS) editor 3 . MPS is a language workbench When the contract prover is determining which rules the con- for the rapid creation and use of domain-specific languages (DSLs), tract depends on, the output in Figure 4 will be produced. In the which can ease the development of software [17]. section marked a), the analysis indicates that the link from the 2 The plugin is available from within the MPS plugin repository under the name Community element to the Female element cannot be found in the DSLTrans, or at the repository site https://github.com/mbeddr/language_verification. transformation. This indicates that no path condition will exist 3 https://www.jetbrains.com/MPS As part of our verification research, we created the language con- caused our pruning technique to remove all path conditions con- structs necessary to build DSLTrans transformations and contracts. taining that particular rule. This technique removes path conditions The explicit modelling of languages in MPS allows for desirable if they violate the output meta-model with respect to containment features during modelling activities, such as auto-completion and links. For example, a path condition containing Female elements in type checking in the projectional editor [5]. the output model not properly contained by a Community element For example, when creating DSLTrans rules or contracts, ele- would be removed. Careful use of this technique is required, as it ments and their attributes in the rule must be typed by the input may remove counter-examples to contracts [10]. or output meta-models of the transformation. We (and others [19]) The current implementation for the rule reachability analysis in- note that this deep integration of languages allows for quick and volves checking all path conditions periodically to determine which accurate creation of code/transformations, with fewer errors than rules they abstract. If a rule appears in no path condition, then it a manual method. either did not execute in that layer, or it has been removed by the pruning technique. An error is raised informing the user which rule did not execute, as well as the dependency information generated in the first stage of analysis (Section 3). This (rudimentary) informa- tion allows the user to debug and understand the execution of the rule, before further layers in the transformation are symbolically executed. 5 DEBUGGING STAGE 3: REPORTING The last stage of fault detection and localization is the reporting of results to the user at the end of contract validation. Our aim is to assist the user in understanding why a particular contract has been or has not been satisfied by presenting the rules and rule elements that the contract requires. This allows the user to ensure that their Figure 5: Auto-complete during rule construction in the intention for the contract matches the verification result, and if not, Meta-Programming System (MPS) editor. where modifications should be made. In the contract verification step of the SyVOLT tool, we collect two sets of path conditions for each contract. The first set (success) is Figure 5 demonstrates the creation of the Father2Man rule in where the contract is satisfied, and the second set (fail) is where the the textual editor, where the rule’s MatchModel includes a Parent contract is not satisfied. The tool examines these sets and provides element and a Family element. Note that the user is in the process the following information: of adding an attribute to the Family, and the auto-complete pop-up • rulessuccess - Rules found in all successful path conditions indicates that the Family concept includes the name and lastName • rulesfail - Rules found in all failed path conditions, and not as valid attributes, as is specified in the input meta-model. Thus, present in rulessuccess all elements and attributes in the transformation and the contracts • The precise elements and links that the contract requires are typed according to the input and output languages, prevent- from the set of rules rulessuccess ing typos or inconsistencies before they can affect the verification • The contract is also tested against a failed path condition process. – The elements and links that could not be found on this path condition are reported 4 DEBUGGING STAGE 2: MONITORING – The user can use this information and a visualization of The second stage of fault detection and localization in the SyVOLT the path condition to better understand the failure of the is performed during the path condition generation process itself. contract, as in Figure 8 on the facing page As the state-space for rule execution is constructed, the user is This comprehensive information allows the user to precisely informed if a rule has not been symbolically executed4 . determine how the contract is succeeding or failing, and have as- A rule not symbolically executing may indicate one of three surance that the result is as intended. issues with the transformation which should be reported to the user to investigate. The first case is where the required dependencies 5.1 Example for the rule were not present in the transformation. This may occur if a backward link specifies a dependency not satisfied by any other We will present the Neg_SchoolOrdFac contract in Figure 6a as an rules. The second case is where the user has not indicated that a example for the information reported when a contract has counter- rule should symbolically execute enough times, as specified by a example path conditions. dependency analysis [10]. Note that for this contract we expect counter-examples to be Finally, the third case is that there may be an undesired inter- found. This contract represents the statement ‘Every School in the action between the transformation and its meta-model that has input model will produce an Ordinary Facility’. The rule dfacilities- ...OrdinaryFacility which performs this production is displayed in 4 Note that the work of Selim [12] defined this check as a series of rule reachability Figure 6b. However, the transformation also contains the dfacilities- contracts. ...SpecialFacility rule, which matches over a School element with successful path conditions. This is correct, as this rule must symbol- ically execute for the contract’s pre- and post- condition to match. As well, the dfacilities...SpecialFacility rule is common to all of the failed path conditions. This is sensible as this rule produces path conditions where the School element in the contract pre-condition is found, but the OrdinaryFacility element is not. Note that the analysis does not report rules that are both in the successful and failed path conditions to assist in narrowing down causes of success (a) An example contract for analysing success/failure results. or failure. The last two analyses precisely identify why the contract fails on the path conditions. Based on the dependency analysis performed in Section 3, the contract prover has a record of which elements and links the contract depends on for each rule. The analysis marked c) specifies that the contract depends on the School and OrdinaryFa- cility elements produced by the dfacilities...OrdinaryFacility rule. On the line marked d), a path condition is selected from the failed set of path conditions to examine further. A matching is performed with extra debugging information which indicates on the line marked e) that the School - OrdinaryFacility traceability link could not be found in the path condition. Match0 Match10 Daughter2 Woman Neighborhood2 Family3 Family14 District (b) Rule needed for contract success. Apply1 daughters Match19 registeredIn Figure 6: Contract and rule examples for result analysis. Apply11 Child Neighborhood a special Service to produce a Special Facility element. Thus, the family goesTo schools contract is expected to fail on path conditions that include the d...SpecFacPerson dfacilities...SpecialFacility rule. School For the Neg_SchoolOrdFac contract, as seen in Figure 7 on the line marked a), the contract prover indicates that there are six path students special conditions where this contract holds, and three path conditions where it does not. Service Apply20 a) Name: Neg_SchoolOrdFac Num Succeeded Path Conditions: 6 District Num Failed Path Conditions: 3 b) Explaining contract result: Good rules: (Rules in success set and not failure set) facilities dfacilities...OrdinaryFacilityPerson Bad rules: (Rules common to all in failure set) dfacilities...SpecialFacilityPerson SpecialFacility c) Contract requires elements from successful rules of type: School members OrdinaryFacility d) Examining failed path condition: Woman Daughter2Woman-Neigh2District-dfacilities...SpecialFacilityPerson e) Elements of contract that fail on this path condition: Could not find links of type: Figure 8: An unintuitive visualization of a path condition OrdinaryFacility - trace_link - School that fails to satisfy the SchoolOrdFac contract. Figure 7: Result analysis for the Neg_SchoolOrdFac contract. 5.1.1 Visualization. Figure 8 shows a visualization for the failed path condition mentioned in part d) from Figure 7. This information The contract result analysis indicates in the section marked is presented for the user to understand how the contract fails to b) that the dfacilities...OrdinaryFacility rule is common to all the match on the path condition. However, it is difficult to comprehend as it presents a technical, graph-based representation. In compar- lack sufficiently powerful debugging mechanisms, hindering de- ison, Figure 2 on page 2 shows a hand-made (but more natural) velopment. For future work, we are interested in developing and visualization for a different path condition. promoting reusable libraries for graph-matching visualization and Another critique of this visualization is the inability to see the debugging in concert with the ModelVerse [16] and AToMPM [13] structure which would allow the contract to be satisfied. For ex- projects. ample, the Neg_SchoolOrdFac requires a School element connected Developing a systematic approach to developing contracts is also to a Service element through an ordinary link, not the special link a goal of our research, requiring user experiments to determine how shown in a pale yellow oval in the middle of Figure 8. users build contracts and what debugging information they require. In future work, we intend to improve our visualization tech- As well, an important task is to transfer our contract verification and niques by creating MPS plugins for visual viewers and editors of debugging techniques from the DSLTrans model transformation transformations, contracts, and path conditions. language to others with more expressiveness. 6 RELATED WORK REFERENCES [1] Banafsheh Azizi, Bahman Zamani, and Shekoufeh Kolahdouz-Rahimi. 2017. Con- There is significant previous work in the general field of model tract verification of ETL transformations. In International Conference on Computer transformation verification [6, 12]. Our present work focuses on and Knowledge Engineering. IEEE, 154–160. [2] Bruno Barroca, Levi Lúcio, Vasco Amaral, Roberto Félix, and Vasco Sousa. 2011. how to relate the result of contract verification to the transforma- DSLTrans: A Turing Incomplete Transformation Language. In International Con- tion. ference on Software Language Engineering. Springer Berlin Heidelberg, 296–305. The work of Burgueneo et al. [3] compares the elements in Tracts [3] Loli Burgueno, Javier Troya, Manuel Wimmer, and Antonio Vallecillo. 2015. Static Fault Localization in Model Transformations. IEEE Transactions on Software to the rules in the transformation. These tracts define a set of Engineering 41, 5 (2015), 490–506. constraints on the source and target meta-models, a set of source- [4] Jesús Sánchez Cuadrado, Esther Guerra, and Juan de Lara. 2017. Static analysis target constraints, and a tract test suite. The intention is to suggest of model transformations. IEEE Transactions on Software Engineering 43, 9 (2017), 868–897. to the user which rules are causing constraints to fail by matching [5] Martin Fowler. 2008. Projectional Editing. https://martinfowler.com/bliki/ the classes and associations in the rules and constraints. ProjectionalEditing.html. [6] Esther Guerra, Juan De Lara, Manuel Wimmer, Gerti Kappel, Angelika Kusel, Cuadrado et al. [4] discuss a technique for statically analyzing Werner Retschitzegger, Johannes Schönböck, and Wieland. Schwinger. 2013. ATL transformations. Their technique uses type inference and other Automated Verification of Model Transformations based on Visual Contracts. analyses to determine potential problems in the transformation. Automated Software Engineering 20, 1 (2013), 5–46. [7] Maris Jukšs, Clark Verbrugge, and Hans Vangheluwe. 2017. Transformations From this, OCL constraints are generated and used to produce Debugging Transformations. In MDEbug: Debugging in Model-Driven Engineering “witness” input models which precisely target the error. at International Conference on Model Driven Engineering Languages and Systems. The thesis of Amstel [14] tackles the issue of evaluating the qual- [8] Levi Lúcio, Bentley Oakes, Cláudio Gomes, Gehan Selim, Juergen Dingel, James Cordy, and Hans Vangheluwe. 2015. SyVOLT: Full Model Transformation Verifi- ity of a model transformation. User studies are performed to rate cation Using Contracts.. In International Conference on Model Driven Engineering transformations based on qualities such as re-usability, complete- Languages and Systems. 24–27. [9] Levi Lúcio, Bentley Oakes, and Hans Vangheluwe. 2014. A technique for symboli- ness, and conciseness. These qualitative facets of the transformation cally verifying properties of graph-based model transformations. Technical Report are then correlated with quantitative metrics, such as the number SOCS-TR-2014.1. McGill University. of rules or variables in the transformation, to provide a guide for [10] Bentley Oakes. 2018. A Symbolic Execution-Based Approach to Model Transforma- tion Verification Using Structural Contracts. Ph.D. Dissertation. McGill University. the transformation designer to build intuitive transformations. [11] Bentley Oakes, Javier Troya, Levi Lúcio, and Manuel Wimmer. 2016. Full contract verification for ATL using symbolic execution. Software and Systems Modeling (2016), 1–35. 7 CONCLUSION [12] Gehan Selim. 2015. Formal Verification of Graph-Based Model Transformations. In this paper, we have discussed three analyses implemented in the Ph.D. Dissertation. Queen’s University. [13] Eugene Syriani, Hans Vangheluwe, Raphael Mannadiar, Conner Hansen, Simon SyVOLT tool to detect and report errors in the input transforma- Van Mierlo, and Huseyin Ergin. 2013. AToMPM: A web-based modeling environ- tion and contract to the user so that these errors can be fixed and ment. In International Conference on Model Driven Engineering Languages and Systems. 21–25. successful verification can be achieved. [14] Marinus Franciscus van Amstel. 2012. Assessing and improving the quality of The checks and analyses detailed in this paper arose organically model transformations. Ph.D. Dissertation. Technische Universiteit Eindhoven. out of the development of the contract verification tool, and have [15] Simon Van Mierlo. 2015. Explicitly Modelling Model Debugging Environments.. In ACM Student Research Competition at the International Conference on Model been quite successful in detecting errors as well as giving insight Driven Engineering Languages and Systems. 24–29. into the behaviour of the contracts and transformations [10]. In [16] Simon Van Mierlo, Bruno Barroca, Hans Vangheluwe, Eugene Syriani, and the future, we aim to improve these techniques to allow for more Thomas Kühne. 2014. Multi-level modelling in the Modelverse.. In International Conference on Model Driven Engineering Languages and Systems. 83–92. precise detection, visualization, and correction of errors. [17] Simon Van Mierlo, Yentl Van Tendeloo, Bart Meyers, and Hans Vangheluwe. 2017. An especially crucial feature which is lacking in SyVOLT is the Domain-specific Modelling For Human–computer Interaction. In The Hand- book of Formal Methods in Human-Computer Interaction. Springer International visualization of transformation execution, both before and after the Publishing, 435–463. application of rules as well as the actual matching and rewriting [18] Daniel Varró, Szilvia Varró-Gyapai, Hartmut Ehrig, Ulrike Prange, and Gabriele steps of each rule [7, 15]. Implementing these techniques would Taentzer. 2006. Termination Analysis Of Model Transformations By Petri Nets. In International Conference on Graph Transformation (2006), Vol. 4178. Springer, assist with two key questions we encountered during the develop- 260–274. ment of SyVOLT: why is this rule/contract not matching, when it [19] Markus Voelter, Arie van Deursen, Bernd Kolb, and Stephan Eberle. 2015. Using should? and why is this rule/contract matching, when it shouldn’t? C language extensions for developing embedded software: A case study. In ACM SIGPLAN Notices, Vol. 50. ACM, 655–674. We note that these debugging questions are relatively simple, and yet the igraph and T-Core libraries used in the SyVOLT tool