Stepping with SeaLion

Size: px
Start display at page:

Download "Stepping with SeaLion"

Transcription

1 Stepping with SeaLion April 26, 2013 Contents 1 Introduction Stepping Terminology in a Nut Shell Set-up The Toy Problem The Toy Program Debugging by Stepping Starting Stepping The SeaLion Stepping Perspective The First Steps Getting Stuck and Backtracking Stratification of Aggregates Jumping Truth Assignment Finding the First Bug with Filtering Fixing the Second Bug Introduction SeaLion [7] [ref also the iclp13 paper and other tutorials!!!] is an IDE for ASP [3, 4] realised as a plugin of the Eclipse platform [1]. This tutorial describes how to use the SeaLion s primary debugging mechanism, the Stepping framework. After a brief introduction and description how to set up SeaLion, we will lead you step by step through an example debugging session. You TODO 1

2 can find more technical details in [6] that introduces Stepping for normal logic programs, in [8] that lifts the framework to DL-programs and in [5] that describes the full version implemented in SeaLion. 1.1 Stepping Terminology in a Nut Shell In the imperative programming, stepping through a program is the most common debugging method. At each step you can inspect the content of variables to understand what the program actually does. This method is simple and straightforward, because the control flow of imperative programs is fixed. In the case of ASP it is not so simple, because in the declarative paradigm there is no such thing as a control flow. SeaLion solves this problem by letting the user choose which direction should the search for an answer set proceed. Briefly, a process of stepping tries to monotonically build up an interpretation by, in each step, adding atoms derived by a rule that is active under the interpretation obtained in the previous step. Practically, a stepping state S consists of the set of rules P S already considered active, the intermediate interpretation I S of atoms already considered true, the set of atoms I S already considered false and the set of unfounded sets Υ S. (We will not concern ourselves with these in this tutorial. See [2, 8, 5] for more details.) At a step from S to its successor S, the user chooses a rule r active under I S that will be added to P S and form P S. The user also has to choose which atoms from r are considered true and which false, such that r stays active and satisfied by I S. The ones considered true added to I S form I S and the ones considered false added to I S form I S. The sets I S and I S must stay disjoint in any state S to forbid deactivation of r. A process of stepping is called computation. Each answer set of the program can be reached by some computation and each computation either reaches some answer set or gets stuck. A computation that will inevitably get stuck is called failed. 1.2 Set-up If you want to follow this tutorial step by step, please install SeaLion as described on the SeaLion Website, but choose the package titled SeaLion Package (includes all non-experimental plugins). When installed, change Context Type Preferences in Window Preferences SeaLion for Gringo File to Gringo Clasp (all AS) in order to obtain all answer sets of a program when launched. 2

3 1.3 The Toy Problem We will be debugging program that is meant to solve Nurikabe puzzles. Nurikabe is a grid of cells, some of which contain natural numbers. The goal is to colour the cells such that (i) each cell is either black or white, (ii) cells with numbers are white, (iii) there are no 2x2 blocks of black cells, (iv) all black cells are transitively connected, and (v) each maximal group of white cells that are transitively connected must contain exactly one cell with a number; this number must be the number of cells in the group, where two cells are connected if they are of the same colour and share a border. For example, this is a puzzle instance, its solution and two wrong solutions violating the condition (iii) and conditions (v): 1.4 The Toy Program Start a new SeaLion project in the menu File New Project... and then SeaLion SeaLion Project. 3

4 Name it stepping tutorial. Then right click on the project in the Project Explorer and create a new file in New File. 4

5 Name it nurikabe.lp. Open the file and insert the following code into it. % INPUT % % Having a grid of cells, some of which contain natural numbers, row(1..4). col(1..4). number(c(3,2), 3). number(c(4,4), 1). % DEFINE % cell(c(y,x)) :- row(y), col(x). maxcol(x) :- col(x), not col(x+1). maxrow(y) :- row(y), not row(y+1). 5

6 mincol(x) :- col(x), not col(x-1). minrow(y) :- row(y), not row(y-1). adjacent(c(y,x), c(y-1,x)) :- cell(c(y,x)), not minrow(y). adjacent(c(y,x), c(y,x+1)) :- cell(c(y,x)), not maxcol(x). adjacent(c(y,x), c(y+1,x)) :- cell(c(y,x)), not minrow(y). adjacent(c(y,x), c(y,x-1)) :- cell(c(y,x)), not mincol(x). % GENERATE % % (i) each cell is either black or white, {white(c) : cell(c)}. black(c) :- cell(c), not white(c). % CHECK % % (ii) cells with numbers are white, :- black(c), number(c,_). % (iii) there are no 2x2 blocks of black cells, :- black(c(y,x)), black(c(y+1,x)), black(c(y,x+1)), black(c(y+1,x+1)). % (iv) all black cells are transitively connected, black_reach(c1, C2) :- black(c1), black(c2), adjacent(c1, C2). black_reach(c1, C3) :- black_reach(c1, C2), black(c3), adjacent(c2, C3). :- black(c1), black(c2), not black_reach(c1, C2). % (v) each maximal group of white cells that are transitively connected % must contain exactly one cell with a number; % this number must be the number of cells in the group, group(c, C) :- number(c, _). group(c1, C2) :- group(c3, C2), adjacent(c3, C1), white(c1). :- number(c1, N), not N{group(C2, C1) : cell(c2)}n. in_group(c) :- group(c, _). :- white(c), not in_group(c). 1{group(C1, C2) : number(c2, _)}1 :- white(c1). The code can be downloaded from [move to more official place] here. Briefly, the program encodes a puzzle instance with facts of predicates row/1 and col/1 that enumerate row and column numbers, and atoms of form number(c(y,x),n), indicating that the cell c(y,x) contains number N. The output of the program is encoded by predicates black/1 and white/1 specifying the colouring of each cell. The DEFINE part defines all the cells and their adjacency. An output is first guessed in the GENERATE part and then checked by the constraints in the CHECK part. The encoding of the first two constraints is straightforward, but the encoding of the other two needs auxiliary definitions of reachability and white groups. Prepare a launch configuration by choosing Run Configurations... from Run As in the pop-up menu of the file, or in the pop-up menu under the Run As... button in the toolbar. TODO 6

7 Choose SeaLion in the list on the left, then click New launch configuration. Name it nurikabe and add our source code file to the Input Program Files. 7

8 All the other attributes should be set automatically. So just click the buttons Apply and Run just to find out that the program has no answer set. 2 Debugging by Stepping Generally, a bug in an answer-set program is detected when, for a particular input, the actual output differs from the intended output. This means that either (1) an intended answer set is missing from the actual output, or (2) the actual output contains an unintended answer set. A good stepping strategy in the first case is trying to reach one of the missing answer sets and see why the computation gets stuck. In the second case it is sensible to lead the stepping towards one of the unintended answer sets and observe where the computation should but does not get stuck. 8

9 Out toy program has no answer set while we expect exactly one for the exactly one solution of the puzzle instance in the program s input. This is a subcase of (1), where all intended answer sets are missing. So let us try the first strategy. 2.1 Starting Stepping You can start to step through a program by running its usual launch configuration in the debug mode. Simply choose Debug Configurations... from Debug As in the pop-up menu of the file or in the pop-up menu under the Debug As... button in the toolbar. Select the launch configuration nurikabe we defined before and click Debug. 2.2 The SeaLion Stepping Perspective The GUI of Eclipse switches to the SeaLion Stepping perspective. 9

10 [Draw the labels into the picture.] The perspective displays the source code of the program in a source editor (a). Rules with active instances are highlighted in the editor. Upon clicking on such a rule, its active instances are displayed in the Active Instances view (b). After choosing one of the instances, you need to decide in the Truth Assignment view (c) whether the atoms in it are assigned to I S or I S. While a rule selected for some step must remain active and satisfied under I S of the next state S, this assignment is usually fixed for simple rules. In such cases, SeaLion automatically assigns the atoms and enables the STEP button. Upon clicking the button, the next state is computed and displayed in the State view (d). Finally, the Computation view (e) shows all actions taken during a stepping in the form of a tree and allows for navigating between the states resulting from these actions, i.e. you can return to a previous state and start a new branch in the tree from there, while all the old branches remain intact. TODO 2.3 The First Steps Click on the first fact of the program in the source editor and the Active Instance view displays its active instances. Select the second one. Truth assignment of the atoms in this fact is fixes, so the Truth Assignment view automatically enables the STEP button. Click it. Congratulations! You have just performed your first step. The State view now displays the active instance of the fact added to P S (a), the atoms from it added to I S (b), empty I S (c) and only one empty set in Υ (d). 2.4 Getting Stuck and Backtracking Adding row(2) to I S activated further rules in the program. Select the first one of them and step through its active instance. 10

11 Now P S contains {row(2)., maxrow(2) :- row(2), not row(3).}, I S contains {row(2), maxrow(2)} and I S contains {row(3)}. Select the first fact again and its active instance row(3).. You can see that it is not possible to add it to P S, because that would add atom row(3) to I S which must stay disjoint with I S. 11

12 While row(1..4). is a fact, row(3). will always be its active instance. Even if we continue stepping, we will be never able to add this active instance to P S, because we cannot remove its atom from I S. That means we cannot reach any answer set from this state. Detecting when the computation becomes failed will point to the bug later on, but this time it happened because we made a step that does not lead to our intended answer set. So we backtrack one step by double-clicking on the previous node in the Computation view. Even though we did not detect the bug yet, you can see from this little detour why maxrow(4) is the only instance of maxrow(x) in any answer set. 2.5 Stratification of Aggregates Back on the right track, if you try to select the choice rule in the GENERATE section, SeaLion will write a warning 12

13 This is because the grounding of the choice rule depends on complete interpretation of cell/1, i.e. there is one atom of white/1 in the instance of the choice rule for each atom of cell/1 that is true. While we did not add any atom of cell/1 to I S yet, the only active instance of the choice rule is an empty choice rule {}.. If we added this instance to P S and then added some atoms of cell/1 to I S, the grounding of the choice rule would change and {}. would be a rule in P S that is not an active instance of any rule in our program. SeaLion detects such cases and prevents us from getting into inconsistent states by forbidding adding rules with active instances that may change. 2.6 Jumping In order to reach out intended answer set we need to step through all the facts of the input and all the rules in the DEFINE part. This is tedious and cumbersome. SeaLion offers the jumping feature for such cases. It allows us to jump through a number of rules into a state that would be reached after stepping through all these rules. Select text of all the facts of the input and click the Add Rules for Jump button in the Jump view. This adds the rules into the set of rules selected for jump displayed by the Jump view. You can remove all the rules from this set by clicking the Clear Rules for Jump button. Do not do it now, but add also the following five rules 13

14 and click the Jump button. You will get to the state where all active instances of the selected rules are in P S, the atoms they infer are in I S, and the negated atoms from these instances are added to I S. We want to do even less clicking, so select all the rules defining adjacent/2 and click Direct Jump on the toolbar or in the Stepping menu. 14

15 This simply directly jumps through the selected rules. Note that decisions for jumping are taken nondeterministically (technically, they depend on the first answer set that is generated in a SeaLion internal answer-set computation), e.g. if guessing rules are chosen for jumping, we cannot be sure in what state will the jump end up. If you want to determine some of the guessed values, you can step through the corresponding instances of the guessing rules before jumping. We will to do this next. 2.7 Truth Assignment Now we are going to step through the GENERATE part in a way that generates our intended answer set. So select the choice rule (no warning is issued as all the atoms of grid/1 are already in I S ). It has only one active instance, but the truth assignment of its atoms is not fixed. We have to put the atoms white(c(2,2)), white(c(2,3)), white(c(3,2)) and white(c(4,4)) to the positive column and the rest to the negative column. You can do this with drag&drop or using the arrow keys. 15

16 When the decision column is empty, the STEP button is enables. Please note that this does not happen generally, if there were some bounds of the choice rule, the number of atoms in the positive column would have to be within these bounds. Generally, the STEP button is enables when the selected active instance is active and satisfied after the choice. Finally, click the STEP button and arrive to the state where all the cells we want white/1 are in I S. Now you can simply jump through the other rule in the GENERATE part, because the outcome is determined by the previous step. 2.8 Finding the First Bug with Filtering At this point, the output predicates in I S specify the only correct solution of out puzzle instance. We know this stepping will not lead to any answer set, because the program has none. Thus we want to find out why we will get stuck. Let us start with inspecting each constraint. The first two are inactive and will not activate, because all their atoms are already derived. The constraint encoding condition (iv) is active, while no black_reach/2 is in I S yet. After we jump through the two rules defining the black reachability, the constraint should deactivate. 16

17 But it does not. You can see the instances of this constraint that stayed active in the Active Instances view. Let us focus on the first one: :- black(c(1,1)), black(c(2,1)), not black_reach(c(1,1),c(2,1)). Only way to deactivate this instance is to derive black_reach(c(1,1),c(2,1)). While c(1,1) and c(2,1) are adjacent, the rule that should derive this atom is the first rule defining the black reachability. So let us backtrack before jumping through it and inspect its active instances. It has many instances, but we want to see only the one that derives our missing atom. You can filter the instances by typing variable=value pairs separated by dot into the filters text input on the top of the Active Instances view. Type C1=c(1, 1).. 17

18 You can see that the active instance deriving black_reach(c(1,1),c(2,1)) is missing. The only possible reason for this is that adjacent(c(1,1),c(2,1)) was not derived, because the interpretation of black/1 is already fixed. Let us backtrack before adding atoms of adjacent/2 and inspect the rules deriving them. The third rule is responsible of deriving adjacent(c(1,1),c(2,1)) and after having a look on its active instances you can probably see that there is something strange. The variable Y is never substituted by 1. This points to the mistake in the boundary atom not minrow(y) which is supposed to be not maxrow(y). If you rewrite the atom while stepping, SeaLion warns that the state may be inconsistent. 18

19 So we rather stop the stepping by clicking Stop Stepping on the toolbar or in the Stepping menu and launch the program to make sure that the bug is gone. 2.9 Fixing the Second Bug The good news is that the program has an answer set. The bad news is that it has too many answer sets. While we expect only one for the only solution of the puzzle instance, this is case (2) of the ASP output difference. Thus we will step towards an answer set corresponding to one of the wrong solutions and concentrate on the part of the program that was supposed to forbid this answer set. Let us pick the following wrong solution: 19

20 We can see that this solution violates the condition (v), so the bug is probably in the program part encoding this condition. We want to examine just this part, so we will jump through the rest of the program, which we suppose is correct. Start the stepping as before and jump through all the input facts and the DEFINE part. Step through the choice rule and assign its atoms to generate the wrong solution. jump through the other rule in the GENERATE part. 20

21 You may, but do not need to, jump through the rules defining the black reachability, because the part encoding the condition (v) does not depend on them. Now we fixed the interpretation of the output predicates to encode our wrong solution, so if the program was correct, the constraints in the part (v) would stay active. But we know that this computation leads to an answer set, so it is possible to deactivate all the constraints. We will find the bug, if we find out how are the constraints that should stay active deactivated. The part (v) first defines the white groups by atoms group(g,c) saying that the cell C belongs to the group G. The first rule of the part says that the groups are identified by the cells with numbers. The second rule adds all the white cells white-reachable from a cell with a number to the group of the number cell. Jumping through these two rules is meant to be the only way to deactivate the constraints of this part. Jump through them, just to find out that the constraints are not deactivated! How are the constraints deactivated then? The first constraint is a little bit too complicated, so let us start from the second one. It ensures that each white cell is in some group. (We see that 21

22 this is not true in the wrong solution we are reaching.) Jump through the projecting rule in_group(c) :- group(c, _). and have a look at the active instances of the constraint. We fixed the interpretation of white/1 and the projecting rule is the only one defining in_group/1, so this constraint is deactivated by some other rule deriving atoms of group/2. After the search for such a rule in the program, you can see that the last rule does so. This rule was supposed to encode that each white cell must belong to exactly one group, but the programmer got confused and encoded that each white cell belongs to exactly one group. The difference is that the former is a restriction and should be encoded as a constraint, but the latter is a definition encoded by a rule that actually derives atoms of group/2. You can continue stepping and reach the unintended answer set, but you would not gain much more information. It is better idea to stop stepping, correct the last rule into the constraint :- white(c1), not 1{group(C1, C2) : number(c2, _)}1. and run the program to see that it finally gives the correct output. [A little about unfounded sets. a b. a :- b. b :- a.] TODO References [1] Eclipse Project [2] Wolfgang Faber. Unfounded sets for disjunctive logic programs with arbitrary aggregates. In Proceedings of the 8th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR 2005), volume 3662 of Lecture Notes in Computer Science, pages Springer, [3] M. Gelfond and N. Leone. Logic programming and knowledge representation - The A-Prolog perspective. Artificial Intelligence, 138(1-2):3 38, [4] M. Gelfond and V. Lifschitz. The stable model semantics for logic programming. In Proceedings of the 5th Logic Programming Symposium, pages , Association for Logic Programming, MIT Press, Cambridge, Mass,

23 [5] J. Oetsch, J. Pührer, P. Skočovský, and H. Tompits. Stepping in answer-set programming: Handling disjunctions and aggregates, In preparation. [6] J. Oetsch, J. Pührer, and H. Tompits. Stepping through an answer-set program. In Proceedings of the 11th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR 2011), volume 6645 of Lecture Notes in Computer Science, pages Springer, [7] Johannes Oetsch, Jörg Pührer, and Hans Tompits. The SeaLion has landed: An IDE for answer-set programming Preliminary report. In Proceedings of the 19th International Conference on Applications of Declarative Programming and Knowledge Management and the 25th Workshop on Logic Programming (INAP 2011/WLP 2011), pages , [8] Johannes Oetsch, Jörg Pührer, and Hans Tompits. Stepwise debugging of description-logic programs. In Esra Erdem, Joohyung Lee, Yuliya Lierler, and David Pearce, editors, Correct Reasoning - Essays on Logic-Based AI in Honour of Vladimir Lifschitz, volume 7265 of Lecture Notes in Computer Science, pages Springer,

Debugging Answer-Set Programs with Ouroboros Extending the SeaLion Plugin

Debugging Answer-Set Programs with Ouroboros Extending the SeaLion Plugin Debugging Answer-Set Programs with Ouroboros Extending the SeaLion Plugin Melanie Frühstück 1, Jörg Pührer 2, and Gerhard Friedrich 1 1 Siemens AG Österreich, Corporate Technology, Vienna, Austria melanie.fruehstueck@siemens.com

More information

Answer Sets and the Language of Answer Set Programming. Vladimir Lifschitz

Answer Sets and the Language of Answer Set Programming. Vladimir Lifschitz Answer Sets and the Language of Answer Set Programming Vladimir Lifschitz Answer set programming is a declarative programming paradigm based on the answer set semantics of logic programs. This introductory

More information

Extending ASPIDE with User-defined Plugins

Extending ASPIDE with User-defined Plugins Extending ASPIDE with User-defined Plugins Onofrio Febbraro 1, Nicola Leone 2, Kristian Reale 2, and Francesco Ricca 2 1 DLVSystem s.r.l. - P.zza Vermicelli, Polo Tecnologico, 87036 Rende, Italy febbraro@dlvsystem.com

More information

Essential Gringo (Draft)

Essential Gringo (Draft) Essential Gringo (Draft) Vladimir Lifschitz, University of Texas 1 Introduction The designers of the Abstract Gringo language AG [Gebser et al., 2015a] aimed at creating a relatively simple mathematical

More information

Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming

Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming Johannes Oetsch, Jörg Pührer, and Hans Tompits Institut für Informationssysteme 184/3,

More information

Exploiting Unfounded Sets for HEX-Program Evaluation

Exploiting Unfounded Sets for HEX-Program Evaluation Exploiting Unfounded Sets for HEX-Program Evaluation Thomas Eiter, Michael Fink, Thomas Krennwallner, Christoph Redl, Peter Schller redl@kr.tuwien.ac.at September 27, 2012 Redl C. (TU Vienna) HEX-Programs

More information

A Model-Theoretic Counterpart of Loop Formulas

A Model-Theoretic Counterpart of Loop Formulas A Model-Theoretic Counterpart of Loop Formulas Joohyung Lee Department of Computer Sciences The University of Texas at Austin Austin, TX 78712, USA appsmurf@cs.utexas.edu Abstract In an important recent

More information

Choice Logic Programs and Nash Equilibria in Strategic Games

Choice Logic Programs and Nash Equilibria in Strategic Games Choice Logic Programs and Nash Equilibria in Strategic Games Marina De Vos and Dirk Vermeir Dept. of Computer Science Free University of Brussels, VUB Pleinlaan 2, Brussels 1050, Belgium Tel: +32 2 6293308

More information

Prolog and ASP Inference Under One Roof

Prolog and ASP Inference Under One Roof Prolog and ASP Inference Under One Roof Marcello Balduccini 1, Yuliya Lierler 2, and Peter Schüller 3 1 Eastman Kodak Company, USA marcello.balduccini@gmail.com 2 University of Nebraska at Omaha, USA ylierler@unomaha.edu

More information

An Algorithm for Computing Semi-Stable Semantics

An Algorithm for Computing Semi-Stable Semantics An Algorithm for Computing Semi-Stable Semantics Martin Caminada Department of Information and Computing Sciences, Utrecht University Technical Report UU-CS-2007-010 www.cs.uu.nl ISSN: 0924-3275 An Algorithm

More information

Computing Answer Sets of a Logic Program via-enumeration of SAT certificates

Computing Answer Sets of a Logic Program via-enumeration of SAT certificates Computing Answer Sets of a Logic Program via-enumeration of SAT certificates Yuliya Lierler and Marco Maratea Department of Computer Sciences, University of Texas, Austin, USA Dipartimento di Informatica,

More information

Systems integrating answer set programming and constraint programming

Systems integrating answer set programming and constraint programming Systems integrating answer set programming and constraint programming Michael Gelfond and Veena S. Mellarkod and Yuanlin Zhang {mgelfond,veena.s.mellarkod,yzhang}@cs.ttu.edu Texas Tech University, USA

More information

On Structural Analysis of Non-Ground Answer-Set Programs

On Structural Analysis of Non-Ground Answer-Set Programs Technical Communications of ICLP 2015. Copyright with the Authors. 1 On Structural Analysis of Non-Ground Answer-Set Programs BENJAMIN KIESL, 1 PETER SCHÜLLER, 2 and HANS TOMPITS 1 1 Institut für Informationssysteme,

More information

LANA: A Language for Annotating Answer-Set Programs

LANA: A Language for Annotating Answer-Set Programs LANA: A Language for Annotating Answer-Set Programs Marina De Vos 1, Doğa Gizem Kısa 2, Johannes Oetsch 3, Jörg Pührer 3, and Hans Tompits 3 1 Department of Computer Science, University of Bath, Bath,

More information

Handout on Answer Set Programming

Handout on Answer Set Programming Handout on Answer Set Programming Yuliya Lierler Univresity of Nebraska, Omaha Tell me and I forget. Show me and I remember. Involve me and I understand. (Chinese proverb) The Moore method is a deductive

More information

Nonmonotonic Databases and Epistemic Queries*

Nonmonotonic Databases and Epistemic Queries* Nonmonotonic Databases and Epistemic Queries* Vladimir Lifschitz Department of Computer Sciences and Department of Philosophy University of Texas at Austin Austin, TX 78712, U. S. A. Abstract The approach

More information

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example

More information

Debugging. CSE 2231 Supplement A Annatala Wolf

Debugging. CSE 2231 Supplement A Annatala Wolf Debugging CSE 2231 Supplement A Annatala Wolf Testing is not debugging! The purpose of testing is to detect the existence of errors, not to identify precisely where the errors came from. Error messages

More information

Aggregates in Recursion: Issues and Solutions

Aggregates in Recursion: Issues and Solutions Aggregates in Recursion: Issues and Solutions Alpen-Adria-Universität Klagenfurt RuleML Webinar, 2018-05-25 Outline 1 2 3 4 Coincidence Results Complexity Results : Aggregates Aggregates facilitate problem

More information

Linear Programming Terminology

Linear Programming Terminology Linear Programming Terminology The carpenter problem is an example of a linear program. T and B (the number of tables and bookcases to produce weekly) are decision variables. The profit function is an

More information

Conflict-driven ASP Solving with External Source Access

Conflict-driven ASP Solving with External Source Access Conflict-driven ASP Solving with External Source Access Thomas Eiter, Michael Fink, Thomas Krennwallner, Christoph Redl redl@krtuwienacat September 05, 2012 Redl C (TU Vienna) HEX-Programs September 05,

More information

Debugging ASP using ILP

Debugging ASP using ILP Technical Communications of ICLP 2015. Copyright with the Authors. 1 Debugging ASP using ILP TINGTING LI Institute for Security Science and Technology, Imperial College London, UK E-mail: tingting.li@imperial.ac.uk

More information

nfn2dlp: A Normal Form Nested Programs Compiler

nfn2dlp: A Normal Form Nested Programs Compiler nfn2dlp: A Normal Form Nested Programs Compiler Annamaria Bria, Wolfgang Faber, and Nicola Leone Department of Mathematics, University of Calabria, 87036 Rende (CS), Italy {a.bria,faber,leone}@mat.unical.it

More information

Recursive Aggregates in Disjunctive Logic Programs: Semantics and Complexity

Recursive Aggregates in Disjunctive Logic Programs: Semantics and Complexity Recursive Aggregates in Disjunctive Logic Programs: Semantics and Complexity Revised version as of September 5, 2005 Wolfgang Faber 1, Nicola Leone 2, and Gerald Pfeifer 1 1 Institut für Informationssysteme,

More information

Overview. Experiment Specifications. This tutorial will enable you to

Overview. Experiment Specifications. This tutorial will enable you to Defining a protocol in BioAssay Overview BioAssay provides an interface to store, manipulate, and retrieve biological assay data. The application allows users to define customized protocol tables representing

More information

1 Introduction and Examples

1 Introduction and Examples 1 Introduction and Examples Sequencing Problems Definition A sequencing problem is one that involves finding a sequence of steps that transforms an initial system state to a pre-defined goal state for

More information

JWASP: A New Java-Based ASP Solver

JWASP: A New Java-Based ASP Solver JWASP: A New Java-Based ASP Solver Mario Alviano, Carmine Dodaro, and Francesco Ricca Department of Mathematics and Computer Science, University of Calabria, 87036 Rende (CS), Italy {alviano,dodaro,ricca}@mat.unical.it

More information

A Backjumping Technique for Disjunctive Logic Programming

A Backjumping Technique for Disjunctive Logic Programming A Backjumping Technique for Disjunctive Logic Programming Wolfgang Faber, Nicola Leone, and Francesco Ricca Department of Mathematics University of Calabria 87030 Rende (CS), Italy faber,leone,ricca @mat.unical.it

More information

Answer Set Programming as SAT modulo Acyclicity

Answer Set Programming as SAT modulo Acyclicity Answer Set Programming as SAT modulo Acyclicity Martin Gebser, Tomi Janhunen, and Jussi Rintanen Helsinki Institute for Information Technology HIIT Department of Information and Computer Science Aalto

More information

16.410/413 Principles of Autonomy and Decision Making

16.410/413 Principles of Autonomy and Decision Making 16.410/413 Principles of Autonomy and Decision Making Lecture 17: The Simplex Method Emilio Frazzoli Aeronautics and Astronautics Massachusetts Institute of Technology November 10, 2010 Frazzoli (MIT)

More information

Operational Semantics

Operational Semantics 15-819K: Logic Programming Lecture 4 Operational Semantics Frank Pfenning September 7, 2006 In this lecture we begin in the quest to formally capture the operational semantics in order to prove properties

More information

Forcing in disjunctive logic programs

Forcing in disjunctive logic programs Forcing in disjunctive logic programs Marina De Vos Free University of Brussels, VUB marinadv@tinf1vubacbe Dirk Vermeir Free University of Brussels, VUB dvermeir@vubacbe Abstract We propose a semantics

More information

The Complexity of Camping

The Complexity of Camping The Complexity of Camping Marzio De Biasi marziodebiasi [at] gmail [dot] com July 2012 Version 0.04: a re-revised sketch of the proof Abstract We prove that the tents puzzle game is NP -complete using

More information

An Experimental CLP Platform for Integrity Constraints and Abduction

An Experimental CLP Platform for Integrity Constraints and Abduction An Experimental CLP Platform for Integrity Constraints and Abduction Slim Abdennadher and Henning Christiansen Computer Science Department, University of Munich Oettingenstr. 67, 80538 München, Germany

More information

A QUICK OVERVIEW OF THE OMNeT++ IDE

A QUICK OVERVIEW OF THE OMNeT++ IDE Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.

More information

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below. Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you

More information

LR Parsing E T + E T 1 T

LR Parsing E T + E T 1 T LR Parsing 1 Introduction Before reading this quick JFLAP tutorial on parsing please make sure to look at a reference on LL parsing to get an understanding of how the First and Follow sets are defined.

More information

Translation of Aggregate Programs to Normal Logic Programs

Translation of Aggregate Programs to Normal Logic Programs Translation of Aggregate rograms to Normal Logic rograms Nikolay elov arc Denecker and aurice Bruynooghe Dept. of Computer Science.U.Leuven Celestijnenlaan 00A B-3001 Heverlee Belgium E-mail: pelovmarcdmaurice

More information

Data Integration: Logic Query Languages

Data Integration: Logic Query Languages Data Integration: Logic Query Languages Jan Chomicki University at Buffalo Datalog Datalog A logic language Datalog programs consist of logical facts and rules Datalog is a subset of Prolog (no data structures)

More information

This Tutorial is for Word 2007 but 2003 instructions are included in [brackets] after of each step.

This Tutorial is for Word 2007 but 2003 instructions are included in [brackets] after of each step. This Tutorial is for Word 2007 but 2003 instructions are included in [brackets] after of each step. Table of Contents Get Organized... 1 Create the Home Page... 1 Save the Home Page as a Word Document...

More information

(Refer Slide Time: 02.06)

(Refer Slide Time: 02.06) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 27 Depth First Search (DFS) Today we are going to be talking

More information

15100 Fall 2005 Final Project

15100 Fall 2005 Final Project 15100 Fall 2005 Final Project Robby Findler & Jacob Matthews 1 Introduction to Sudoku Sudoku is a logic puzzle set on a nine by nine grid. The goal is to fill in the blank spaces in the puzzle with the

More information

VIDEAS: A Development Tool for Answer-Set Programs based on Model-Driven Engineering Technology

VIDEAS: A Development Tool for Answer-Set Programs based on Model-Driven Engineering Technology VIDEAS: A Development Tool for Answer-Set Programs based on Model-Driven Engineering Technology Johannes Oetsch 1, Jörg Pührer 1, Martina Seidl 2,3, Hans Tompits 1, and Patrick Zwickl 4 1 Technische Universität

More information

Debugging non-ground ASP programs with Choice Rules, Cardinality and Weight Constraints

Debugging non-ground ASP programs with Choice Rules, Cardinality and Weight Constraints Debugging non-ground ASP programs with Choice Rules, Cardinality and Weight Constraints Axel Polleres 1, Melanie Frühstück 1, Gottfried Schenner 1, and Gerhard Friedrich 2 1 Siemens AG Österreich, Siemensstraße

More information

Lisp legal move generators & search

Lisp legal move generators & search Lisp legal move generators & search objectives 1. development of legal move generators 2. experimentation with search 3. exposure to pattern matching 4. exposure to new Lisp forms The work described here

More information

Knowledge Representation for the Semantic Web Lecture 1: Introduction

Knowledge Representation for the Semantic Web Lecture 1: Introduction Knowledge Representation for the Semantic Web Lecture 1: Introduction Daria Stepanova Max Planck Institute for Informatics D5: Databases and Information Systems group WS 2017/18 1 / 32 Overview Organization

More information

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?

More information

Declarative Semantics for Revision Programming and Connections to Active Integrity Constraints

Declarative Semantics for Revision Programming and Connections to Active Integrity Constraints Declarative Semantics for Revision Programming and Connections to Active Integrity Constraints Luciano Caroprese 1 and Mirosław Truszczyński 2 1 Università della Calabria, 87030 Rende, Italy, caroprese@deis.unical.it

More information

Module Road Map. 7. Version Control with Subversion Introduction Terminology

Module Road Map. 7. Version Control with Subversion Introduction Terminology Module Road Map 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging 6. Testing with JUnit 7. Version Control with Subversion Introduction Terminology

More information

Introduction. A cell can contain any of the following:

Introduction. A cell can contain any of the following: Introduction A spreadsheet is a table consisting of Rows and Columns. Where a row and a column meet, the box is called a Cell. Each cell has an address consisting of the column name followed by the row

More information

MetScape User Manual

MetScape User Manual MetScape 2.3.2 User Manual A Plugin for Cytoscape National Center for Integrative Biomedical Informatics July 2012 2011 University of Michigan This work is supported by the National Center for Integrative

More information

Computer and Programming: Lab 1

Computer and Programming: Lab 1 01204111 Computer and Programming: Lab 1 Name ID Section Goals To get familiar with Wing IDE and learn common mistakes with programming in Python To practice using Python interactively through Python Shell

More information

Open a new Excel workbook and look for the Standard Toolbar.

Open a new Excel workbook and look for the Standard Toolbar. This activity shows how to use a spreadsheet to draw line graphs. Open a new Excel workbook and look for the Standard Toolbar. If it is not there, left click on View then Toolbars, then Standard to make

More information

An integrated Graphical User Interface for Debugging Answer Set Programs

An integrated Graphical User Interface for Debugging Answer Set Programs An integrated Graphical User Interface for Debugging Answer Set Programs Philip Gasteiger 1, Carmine Dodaro 2, Benjamin Musitsch 1, Kristian Reale 2, Francesco Ricca 2, and Konstantin Schekotihin 1 1 Alpen-Adria-Universität

More information

Multi-paradigm Declarative Languages

Multi-paradigm Declarative Languages Michael Hanus (CAU Kiel) Multi-paradigm Declarative Languages ICLP 2007 1 Multi-paradigm Declarative Languages Michael Hanus Christian-Albrechts-University of Kiel Programming Languages and Compiler Construction

More information

MTAT : Software Testing

MTAT : Software Testing MTAT.03.159: Software Testing Lecture 03: White-Box Testing (Textbook Ch. 5) Spring 2013 Dietmar Pfahl email: dietmar.pfahl@ut.ee Lecture Chapter 5 White-box testing techniques (Lab 3) Structure of Lecture

More information

Artificial Intelligence

Artificial Intelligence Torralba and Wahlster Artificial Intelligence Chapter 8: Constraint Satisfaction Problems, Part I 1/48 Artificial Intelligence 8. CSP, Part I: Basics, and Naïve Search What to Do When Your Problem is to

More information

Homework #6 (Constraint Satisfaction, Non-Deterministic Uncertainty and Adversarial Search) Out: 2/21/11 Due: 2/29/11 (at noon)

Homework #6 (Constraint Satisfaction, Non-Deterministic Uncertainty and Adversarial Search) Out: 2/21/11 Due: 2/29/11 (at noon) CS121 Introduction to Artificial Intelligence Winter 2011 Homework #6 (Constraint Satisfaction, Non-Deterministic Uncertainty and Adversarial Search) Out: 2/21/11 Due: 2/29/11 (at noon) How to complete

More information

ActiveBPEL Fundamentals

ActiveBPEL Fundamentals Unit 22: Simulation ActiveBPEL Fundamentals This is Unit #22 of the BPEL Fundamentals course. In past Units we ve looked at ActiveBPEL Designer, Workspaces and Projects, created the Process itself and

More information

Automata Theory for Reasoning about Actions

Automata Theory for Reasoning about Actions Automata Theory for Reasoning about Actions Eugenia Ternovskaia Department of Computer Science, University of Toronto Toronto, ON, Canada, M5S 3G4 eugenia@cs.toronto.edu Abstract In this paper, we show

More information

7 The Integrated Debugger

7 The Integrated Debugger 7 The Integrated Debugger Your skill set for writing programs would not be complete without knowing how to use a debugger. While a debugger is traditionally associated with finding bugs, it can also be

More information

Logic and Computation

Logic and Computation Logic and Computation From Conceptualization to Formalization Here's what we do when we build a formal model (or do a computation): 0. Identify a collection of objects/events in the real world. This is

More information

Lecture Notes on Liveness Analysis

Lecture Notes on Liveness Analysis Lecture Notes on Liveness Analysis 15-411: Compiler Design Frank Pfenning André Platzer Lecture 4 1 Introduction We will see different kinds of program analyses in the course, most of them for the purpose

More information

Semantic Forcing in Disjunctive Logic Programs

Semantic Forcing in Disjunctive Logic Programs Semantic Forcing in Disjunctive Logic Programs Marina De Vos and Dirk Vermeir Dept of Computer Science Free University of Brussels, VUB Pleinlaan 2, Brussels 1050, Belgium Abstract We propose a semantics

More information

Part I Logic programming paradigm

Part I Logic programming paradigm Part I Logic programming paradigm 1 Logic programming and pure Prolog 1.1 Introduction 3 1.2 Syntax 4 1.3 The meaning of a program 7 1.4 Computing with equations 9 1.5 Prolog: the first steps 15 1.6 Two

More information

Example: Map coloring

Example: Map coloring Today s s lecture Local Search Lecture 7: Search - 6 Heuristic Repair CSP and 3-SAT Solving CSPs using Systematic Search. Victor Lesser CMPSCI 683 Fall 2004 The relationship between problem structure and

More information

Constraint (Logic) Programming

Constraint (Logic) Programming Constraint (Logic) Programming Roman Barták Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic bartak@ktiml.mff.cuni.cz Sudoku Combinatorial puzzle, whose goal is to enter

More information

Building and Running a Simple UML RT Model in RSARTE

Building and Running a Simple UML RT Model in RSARTE Building and Running a Simple UML RT Model in RSARTE Mattias Mohlin Senior Software Architect IBM In this tutorial we will learn how to use RSARTE for transforming a simple UML RT model into C++ code compiling

More information

An Abductive Framework for General Logic Programs and other Nonmonotonic Systems

An Abductive Framework for General Logic Programs and other Nonmonotonic Systems An Abductive Framework for General Logic Programs and other Nonmonotonic Systems Gerhard Brewka Kurt Konolige GMD, Postfach 12 40 SRI International 5205 Sankt Augustin, Germany 333 Ravenswood Ave Menlo

More information

External Propagators in WASP: Preliminary Report

External Propagators in WASP: Preliminary Report External Propagators in WASP: Preliminary Report Carmine Dodaro 1, Francesco Ricca 1, and Peter Schüller 2 1 Department of Mathematics and Computer Science University of Calabria, Italy {dodaro,ricca}@mat.unical.it

More information

Answer Set Programming

Answer Set Programming V. Answer Set Programming 1 Answer Set Programming Answer Set Programs Answer Set Semantics Implementation Techniques Using Answer Set Programming V. Answer Set Programming 2 Example ASP: 3-Coloring Problem:

More information

Finding a winning strategy in variations of Kayles

Finding a winning strategy in variations of Kayles Finding a winning strategy in variations of Kayles Simon Prins ICA-3582809 Utrecht University, The Netherlands July 15, 2015 Abstract Kayles is a two player game played on a graph. The game can be dened

More information

Lecture Notes on Memory Layout

Lecture Notes on Memory Layout Lecture Notes on Memory Layout 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 11 1 Introduction In order to understand how programs work, we can consider the functions,

More information

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 16 Cutting Plane Algorithm We shall continue the discussion on integer programming,

More information

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology.

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. Guide to and Hi everybody! In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. This guide focuses on two of those symbols: and. These symbols represent concepts

More information

Predicated Software Pipelining Technique for Loops with Conditions

Predicated Software Pipelining Technique for Loops with Conditions Predicated Software Pipelining Technique for Loops with Conditions Dragan Milicev and Zoran Jovanovic University of Belgrade E-mail: emiliced@ubbg.etf.bg.ac.yu Abstract An effort to formalize the process

More information

SAT-Based Answer Set Programming

SAT-Based Answer Set Programming SAT-Based Answer Set Programming Enrico Giunchiglia 1, Yuliya Lierler 2, and Marco Maratea 1 1 DIST - Università di Genova, Genova, Italy 2 Institut für Informatik, Erlangen-Nürnberg-Universität, Germany

More information

The DLV Java Wrapper

The DLV Java Wrapper The DLV Java Wrapper Francesco Ricca Department of Mathematics University of Calabria, 87030 Rende (CS), Italy ricca@mat.unical.it Abstract. Disjunctive logic programs are a powerful tool in knowledge

More information

Computer Science Technical Report

Computer Science Technical Report Computer Science Technical Report Feasibility of Stepwise Addition of Multitolerance to High Atomicity Programs Ali Ebnenasir and Sandeep S. Kulkarni Michigan Technological University Computer Science

More information

Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur. Lecture 13 Path Testing

Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur. Lecture 13 Path Testing Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 13 Path Testing Welcome to this session and we will discuss about path

More information

A Pearl on SAT Solving in Prolog (extended abstract)

A Pearl on SAT Solving in Prolog (extended abstract) A Pearl on SAT Solving in Prolog (extended abstract) Jacob M. Howe and Andy King 1 Introduction The Boolean satisfiability problem, SAT, is of continuing interest because a variety of problems are naturally

More information

ADD AND NAME WORKSHEETS

ADD AND NAME WORKSHEETS 1 INTERMEDIATE EXCEL While its primary function is to be a number cruncher, Excel is a versatile program that is used in a variety of ways. Because it easily organizes, manages, and displays information,

More information

1 Visible deviation from the specification or expected behavior for end-user is called: a) an error b) a fault c) a failure d) a defect e) a mistake

1 Visible deviation from the specification or expected behavior for end-user is called: a) an error b) a fault c) a failure d) a defect e) a mistake Sample ISTQB examination 1 Visible deviation from the specification or expected behavior for end-user is called: a) an error b) a fault c) a failure d) a defect e) a mistake 2 Regression testing should

More information

Interactive Tourist Map

Interactive Tourist Map Adobe Edge Animate Tutorial Mouse Events Interactive Tourist Map Lesson 1 Set up your project This lesson aims to teach you how to: Import images Set up the stage Place and size images Draw shapes Make

More information

Control Structures. Lecture 4 COP 3014 Fall September 18, 2017

Control Structures. Lecture 4 COP 3014 Fall September 18, 2017 Control Structures Lecture 4 COP 3014 Fall 2017 September 18, 2017 Control Flow Control flow refers to the specification of the order in which the individual statements, instructions or function calls

More information

An Evolution of Mathematical Tools

An Evolution of Mathematical Tools An Evolution of Mathematical Tools From Conceptualization to Formalization Here's what we do when we build a formal model (or do a computation): 0. Identify a collection of objects/events in the real world.

More information

tuprolog with exceptions

tuprolog with exceptions tuprolog with exceptions Enrico Denti December 16, 2010 Abstract This document describes the new support for ISO Prolog exceptions in tuprolog 2.2. Please notice that this document is not intended to replace

More information

(Refer Slide Time: 1:27)

(Refer Slide Time: 1:27) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data

More information

Lecture 9: Datalog with Negation

Lecture 9: Datalog with Negation CS 784: Foundations of Data Management Spring 2017 Instructor: Paris Koutris Lecture 9: Datalog with Negation In this lecture we will study the addition of negation to Datalog. We start with an example.

More information

CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM

CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM Introduction to the Assignment In this lab, you will finish the program to allow a user to solve Sudoku puzzles.

More information

Chapter Twelve. Systems Design and Development

Chapter Twelve. Systems Design and Development Chapter Twelve Systems Design and Development After reading this chapter, you should be able to: Describe the process of designing, programming, and debugging a computer program Explain why there are many

More information

EDSL Guide for Revit gbxml Files

EDSL Guide for Revit gbxml Files EDSL Guide for Revit gbxml Files Introduction This guide explains how to create a Revit model in such a way that it will create a good gbxml file. Many geometry issues with gbxml files can be fixed within

More information

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 18 All-Integer Dual Algorithm We continue the discussion on the all integer

More information

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn Problem Write and test a Scheme program to compute how many days are spanned by two given days. The program will include a procedure

More information

spock: A Debugging Support Tool for Logic Programs under the Answer-Set Semantics

spock: A Debugging Support Tool for Logic Programs under the Answer-Set Semantics spock: A Debugging Support Tool for Logic Programs under the Answer-Set Semantics Martin Gebser 1, Jörg Pührer 2, Torsten Schaub 1, Hans Tompits 2, and Stefan Woltran 2 1 Institut für Informatik, Universität

More information

Solo 4.6 Release Notes

Solo 4.6 Release Notes June9, 2017 (Updated to include Solo 4.6.4 changes) Solo 4.6 Release Notes This release contains a number of new features, as well as enhancements to the user interface and overall performance. Together

More information

CS 395T Computational Learning Theory. Scribe: Wei Tang

CS 395T Computational Learning Theory. Scribe: Wei Tang CS 395T Computational Learning Theory Lecture 1: September 5th, 2007 Lecturer: Adam Klivans Scribe: Wei Tang 1.1 Introduction Many tasks from real application domain can be described as a process of learning.

More information

Table Visualizer (TV)

Table Visualizer (TV) Table Visualizer (TV) Copyright 1997-2012 Ericsson AB. All Rights Reserved. Table Visualizer (TV) 2.1.4.9 November 27 2012 Copyright 1997-2012 Ericsson AB. All Rights Reserved. The contents of this file

More information

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture - 8 Consistency and Redundancy in Project networks In today s lecture

More information

Darshan Institute of Engineering & Technology for Diploma Studies

Darshan Institute of Engineering & Technology for Diploma Studies CODING Good software development organizations normally require their programmers to follow some welldefined and standard style of coding called coding standards. Most software development organizations

More information