Issued by the WP1 Team. Prepared by. Georg Lehrenfeld, Paderborn University
|
|
- Arnold Miller
- 5 years ago
- Views:
Transcription
1 ESPRIT Project in Condence ESPRIT Project 2072 ECIP2 European CAD Integration Project Issued by the WP1 Team Prepared by Georg Lehrenfeld, Paderborn University Wolfgang Mueller, Cadlab Translation of EXPRESS to a Logical Programming Language Deliverable R-C A ECIP2/PU/013-2 August 24, 1992 (c) Copyright 1992 Bull S.A., International Computer Ltd, Siemens Nixdorf Informationssysteme AG, Nederlandse Philips Bedrijven B.V., Racal-Redac Ltd., Siemens AG, Thomson-CSF, Universitaet-GH Paderborn. This document and the information contained herein may not be copied, used or disclosed in whole or in part except with prior written permission of the partners as listed above. The copyright and the foregoing restriction on copying, use and disclosure extend to all media in which this information may beembodied, including magnetic storage, computer print-out, visual display, etc.. The document is supplied without liability for errors or omissions.
2 Title of Deliverable Translation of EXPRESS to a Logical Programming Language Deliverable No. R:C A Brief Description In this report a translation from STEP and EXPRESS to Prolog is given in order to get executable STEP/EXPRESS models. Partner(s) Responsible Cadlab - Paderborn University Estimated work content 1 man-month Date August 24, 1992 Workpackage Name of Review Comments Partner reviewer
3 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS... 1 Abstract Considering ISO two substandards are dened. Part 11 de- nes the EXPRESS language [1] whereas part 21 denes the STEP Exchange structure [2], a format to exchange instances of product data. In this report a method is described to translate EXPRESS as well as STEP denitions to a logical programming language, namely Prolog. This translation is the rst step towards the generation of executable models out of EXPRESS models so that instances can be checked against the according conceptual model. The method to translate EXPRESS and STEP to Prolog was developed with respect to generate readable code so that even users that have no Prolog knowledge may still keep the overview over the produced code. The programming language Prolog has been chosen since on the one hand Prolog is a language for rapid prototyping and on the other hand the main checks that have to be done by a model checker are solved best by using Prolog.
4 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS... 2 Contents 1 Introduction 3 2 Introduction to Prolog 4 3 Translating the STEP Exchange Structure Translation Rules : : : : : : : : : : : : : : : : : : : : : : : : : : : Examples : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 4 Translating the EXPRESS Language Translation Rules : : : : : : : : : : : : : : : : : : : : : : : : : : : Examples : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : Aggregate Types : : : : : : : : : : : : : : : : : : : : : : : Types : : : : : : : : : : : : : : : : : : : : : : : : : : : : : Entities : : : : : : : : : : : : : : : : : : : : : : : : : : : : Super/Subtype Relationships : : : : : : : : : : : : : : : : Rules : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : Complete Example : : : : : : : : : : : : : : : : : : : : : : 11 5 Conclusion 12
5 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Introduction The purpose of this report is to develop a technique to check conceptual models by their instances. The work was done with respect to the former results of WP1 [3] that have been achieved until 1990 Within the present context of WP1 this means to validate instances dened by the STEP Exchange Structure (ISO )[2] towards the according conceptual model dened by the EXPRESS language (ISO )[1]. This is, to check the consistency among instances and the completeness and the consistency of the conceptual model itself. A model checker supports the prototyping of conceptual models so that the models may be easily improved and enhanced. For further introduction the reader is referred to [2], [1], [4], and [5]. In order to achieve an executable specication out of the EXPRESS specication we translate both the EXPRESS language model and the product models to C-Prolog. We took C-Prolog since the C-Prolog interpreter is public domain software. The portation of the generated C-Prolog code to other Prolog dialects might be no problem. Running the generated code on an IF/Prolog 1 interpreter for instance means only to change the identiers of two predened predicates. We havechosen Prolog in general since we found that a lot of problems occurring during the validation are solved best by the use of a logic programming language. This is, because most of the properties that have tobechecked relate to the checking of set inclusions and logical relationships. Furthermore Prolog eases the implementation by the processing of symbolic data and meta programming. Using Prolog for prototyping means to focus the interest on the checking process rather than on the implementation. The mapping to Prolog we describe herein is in most parts nearly a most simple one to one mapping, so that the produced code is even readable by an user who has no knowledge about Prolog. The translation from EXPRESS to Prolog is in general only a restructuring of the EXPRESS model whereas the translation from STEP to Prolog is in most cases only a very simple one to one mapping exchanging single symbols only. This means, that cross-compilers for both of the two languages to Prolog are most easy to implement. The translation to Prolog is developed with respect to further implementation of a model checker that has to be implemented processing the mapped code and to give error reports for each consistency fail. In order to make the translated code understandable for non-prolog experts a brief introduction to Prolog will be given in the next chapter. In the further two chapters the mapping from STEP and EXPRESS to Prolog will be given by detailed examples. However, the process concerning the consistency check, i.e. to identify what properties have to be checked on the EXPRESS and STEP models, are not covered by this deliverable. It will be described in a further deliverable giving detailed examples [5]. 1 IF/Prolog is a Trademark of InterFace Computer GmbH
6 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Introduction to Prolog The basic data structure of Prolog is a term. A term may be either an atom, an integer, a variable, a list, or a predicate. An atom is either a sequence of characters starting by alower case letter or any string included by the character " ' ".For example, tom and 'TOM' are atoms but TOM is not an atom. An integer is any sequence of digits, e.g. 123 and 007 are integers. A variable is a sequence of characters starting by an upper case letter or an underline. For example, Tom and tom are variables. A predicate has the following form: functor(term 1,..., Term n ), where functor has to be an atom. A list is an enumeration of terms separated by a comma included by brackets: [Term 1,..., Term n ]. A Prolog program is a nite set of Horn Clauses. A Horn Clause is also called a rule in Prolog and has the following form: H :, B 1 ; :::; B n : H is called the head of the rule and the B i are called the body goals - or just body - of the rule. H and the B i both have to be predicates. A rule with no body goals is called a fact: H:. To initiate a computation the user has to specify a question to the Prolog system. This question only species the body goals that have to be fullled. This is, a rule with no head: :- B. Note, that several Prolog interpreters got a question mode where the ':-' is automatically given by the ssystem, if the user is permitted to enter a new question. In some systems the ':-' then is replaced by '?,'. If the user enters a question the system tries to proof this question applying the given rules and facts by unication and backtracking.
7 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Translating the STEP Exchange Structure In this section rst a translation of the basic STEP terms is given before the general translation rules are explained. Thereafter we will give some examples how to apply these rules. 3.1 Translation Rules Since STEP is structured in a very simple way translating basic STEP terms to Prolog nearly means to exchange single symbols as it is shown by the following table. STEP Prolog Integer Real real(9.432) String 'ABC' 'ABC' Boolean.F.,.T. e F e, e T e, Logical.F.,.T.,.U. e F e, e T e, e U e Binary "2EC" binary('2ec') Enumerations.BLONDE. e BLONDE e Optional value $ Instance Id #3 id(3) Name abcd abcd List (a1, A2, a3) [a1, a2, a3] Delimiter ;. For the translation of the general format each STEP instance is translated to one Prolog fact. The most practical way to save the instance identier is to take it as a rst argument in each Prolog fact. Scoped instances are simply represented by one fact containing a list of the particular instances. Inherited attributes are represented in STEP by so-called external and internal mappings. Applying an internal mapping means that the attributes of an entity are concatenated to the inherited attributes recursively. This is, how inheritance of ONEOF relationships should be represented. Applying an external mapping means that inherited attributes are represented as instances of the entity type they are inherited from but not indicated by a separate instance identier. The externally mapped inherited attributes are then gathered in a set indicated by one unique identier only, e.g. #34 = ( PERSON(... ) FEMALE(... )); External mappings are applied if the subtypes are related by AND and ANDOR.
8 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS... 6 The general translation rules can be summerised by the following table. Instance! Prolog fact Instance identier! rst argument of the Prolog fact Attribute list! Prolog list Scoped instance! Prolog fact External mapping! same instance identier 3.2 Examples The above translation rules are explained by the following examples. By rst two instances (#2, #4) a simple mapping of attribute values is shown. The translation of instance #6 explains the translation of scoped instances whereas instance #100 explains how external mappings may be represented in Prolog. STEP Prolog #2=MALE('W.P.',(11,10,60), male(2,'w.p.',[11,10,60],.white.,(#4)); e white e, [id(4)]). #4=MALE('Phil',(25,5,89),$,()); male(4,'phil',[25,5,89],, []). #6 =&SCOPE entity1(6, scope(export([61]), #61=ENTITYA('A1',$,()); [entitya(61,'a1',,[]), #62=ENTITYB('B2',$,()); entityb(62,'b2',,[]), #63=ENTITYC('C3',$,()); entityc(63,'c3',,[]) ENDSCOPE /#61/ ]), ENTITY1(#61,#62,#63); id(61), id(62), id(63)). #100=( FIRST('ABC',25) First(100, 'ABC',25). SECOND('DEF', 27)); Second(100, 'DEF',27).
9 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Translating the EXPRESS Language 4.1 Translation Rules In this section we describe how to translate EXPRESS denitions to Prolog. The most problematical part translating full EXPRESS denitions to Prolog is denitely the translation of executable EXPRESS statements. These are, function/procedure declarations as well as the statements that are dened in the local and global rules. The problem is that obviously not a simple mapping can be applied to translate imperative statements to a logical programming language whereas the declarative parts as well as some predened EXPRESS predicates are much more easier to translate as it will be shown by an example in section Base types are translated by a simple one to one mapping to Prolog. The EX- PRESS keyword 'optional' is simply translated to a Prolog predicate as it is shown by the following table. EXPRESS Prolog Base types string string integer integer real real boolean boolean logical logical boolean boolean binary binary Dened types mytypeidentier mytypeidentier Optional optional optional (... ) Aggregates and enumerations are translated to predicates over the lower/upper bound and the according type name or the enumerations of the type names, respectively. Each type denition is mapped to one Prolog fact. Each EXPRESS entity denition is separately mapped to two Prolog predicates. One predicate is gathered in a list called list of ids whereas the other one is gathered in a second list: list of types. The rst predicate preceded by the entity type name is an enumeration of the attribute identier in the same sequence as they are dened in the EXPRESS entity denition. The second predicate represents the according enumeration of the attribute types. To each entity predicate an additional rst argument has to be added in order to keep the instance identier for checking purpose applying a checking program. The instance identier is of type integer. Therefore the rst argument of each entity predicate that is inserted in list of types is integer. For each entity one additional Prolog fact named supertype rule is generated to describe the supertype relationship. The general translation rules are summerised by the following table.
10 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS... 8 Dened type! one Prolog fact Entities! gathered in 2 lists Subtype relationship! one Prolog fact for each entity 4.2 Examples Aggregate Types Each aggregate type is translated to a corresponding predicate. The rst two arguments represent the lower and upper bound. The third argument denotes the type. EXPRESS Prolog OPTIONAL ARRAY[1:3] OF REAL optional(array(1,3, real)) LIST[0:5] OF ARRAY[1:3] OF INTEGER SET[1:3] OF point list(0,5,array(1,3,integer)) set(1,3, entity(point)) BAG[0:?] OF bag type bag(0,'?', bag type) Types Enumeration and select types are mapped to one predicate each. In principle this is nearly a one to one mapping. In the last row of the following example the translation of a full EXPRESS type denition is shown. The rst argument represents the name of the type the second argument denotes the type it is composed of. EXPRESS Prolog ENUMERATION OF (blonde, enum([e blonde e, brown, e brown e, black) e black e]) SELECT(type1, type2) select([type1, type2]) TYPE date=array[1:3] OF INTEGER; END TYPE; type(date,array(1,3,integer)) Entities As already described above each entity denition is separated by attribute types and attribute identiers in the sequence as the attributes appear in the EX- PRESS denition. The separated denitions are collected in two lists in two
11 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS... 9 dierent Prolog facts: list of ids and list of types. To ease the implementation of a STEP/EXPRESS checker an additional predicate is added to each entity predicate to keep instance identiers. Therefore the rst argument of each predicate in list of ids is id and in list of types is integer. EXPRESS Prolog ENTITY entity1; list of ids( type11 : OPTIONAL INTEGER; [entity1(id,type11,type12), type12 : entity3; entity2(id,type2), entity3(id,type3) ]). ENTITY entity2; list of types( type2 : SET[0:?] OF entity1; [entity1(integer, optional(integer), entity(entity3)), ENTITY entity3; entity2(integer,set(0,'?', type3 : my type; entity(entity1))), entity3(integer,my type) ]) Super/Subtype Relationships For each entity one additional Prolog fact named supertype rule has to be generated to describe the supertype relationship. The rst argument represents the identier the rule refers to. An additional predicate indicates whether there may exist instances of this entity type (abstract) or not. The second argument denotes the according subtypes and how the instances are related (oneof, and, andor). If there does not exist any subtypes the second parameter is simply set to nil. EXPRESS ENTITY root ABSTRACT SUPERTYPE OF (ONEOF(sub1, sub2)); ENTITY sub1 SUBTYPE OF (root); ENTITY sub2 SUBTYPE OF (root); Prolog supertype rule(entity(abstract(root)), oneof(entity(sub1), entity(sub2))). supertype rule(entity(sub1), nil). supertype rule(entity(sub2), nil).
12 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Rules Since translating the executable parts (local/global rules, derived attributes) of EXPRESS means already to implement the checker we only give a brief example in this section to indicate that the translation to Prolog makes sense for the logical parts within the executable statements. In the following example a local rule dening only logical relationships between attributes is translated to Prolog. This example shows that in this case the code produced from EXPRESS rules is not easy to understand for non-prolog experts though it is only a simple EXPRESS example and there is a direct relationship between the EXPRESS and the Prolog code as it is indicated by underlining. This example also shows that the problem of the mapping of executable parts of EXPRESS needs further investigation if some general translation rules should be developed. The rst Prolog rule retrieves a list L of all instances of entity type female. All instances in L are checked one by one by the rule check w1 list then. The predicate arg(3,inst,arg1) gets the third eld of the instance (maiden name) in variable Arg1 whereas arg(2,inst,arg1) gets the second eld (husband) of the instance. The logical relationship (NOT EXISTS(maiden name) OR ( EXISTS(maiden name) AND EXISTS(husband))) is simply described by the following Prolog part: (var(arg1);(not(var(arg1)),..., not(var(arg2)))) The logical OR is translated to the Prolog ; whereas the logical AND is translated to a comma. EXPRESS Prolog ENTITY female; check w1:- findall(female(a,b,c), female(a,b,c), w1: ( NOT EXISTS(maiden name) L), OR check w1 list(l). (EXISTS(maiden name) AND check w1 list([]). EXISTS(husband)) check w1 list([inst Ls]):- ); arg(3,inst,arg1), (var(arg1); (not(var(arg1)), arg(2,inst,arg2), not(var(arg2))), check w1 list(ls).
13 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Complete Example In order to get an overview over the complexity of the generated Prolog code we lastly give a translation of a complete example. EXPRESS Prolog TYPE supertype rule(entity(person), hair type = ENUMERATION OF oneof(entity(male), (blonde,black); entity(female))). END TYPE; supertype rule(entity(female),nil). supertype rule(entity(male),nil). ENTITY person SUPERTYPE OF type(hair type, (ONEOF(male,female)); enum([e blonde e, name: STRING; e black e])). birth date: ARRAY[1:3]OF INTEGER; hair: hair type; list of ids([ children: SET [0:?] of person; person(id,name, birth date, hair, ENTITY male children), SUBTYPE OF (person); female(id,maiden name), wife: OPTIONAL female; male(id,wife) ]). list of types([ ENTITY female person(integer,string, SUBTYPE OF (person); array(1,3,integer), maiden name: OPTIONAL STRING; hair type, set(0,'?',entity(person))), female(integer, optional(string)), male(integer, optional(entity(female))) ]).
14 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS Conclusion The main purpose of this paper was to show how to generate executable specications out of STEP/EXPRESS models that can be processed by further tools. In order to get a rst quick implementation Prolog has been taken as an ideal language for prototyping. The method to translate STEP/EXPRESS to Prolog shows that a most natural mapping to a logical programming language can be performed. This translation can even be done manually without having detailed Prolog expertise. Nevertheless, the implementation of tools to generate the Prolog code would not be very costly. On this base an implementation of the two cross-compilers to translate EXPRESS as well as STEP models would probably take less than 1 manmonth provided that an EXPRESS compiler front-end is already available. First experiments have shown that it would be easy to implement the main parts of an EXPRESS/STEP checker based on the generated code. Note, that the processing of all the executable parts of EXPRESS is not solved by the translation provided in this report. The major disadvantage building up a Prolog system is on the one hand the runtime and on the other hand the required main memory processing huge sets of data. First tests have shown that the C-Prolog interpreter required about 60MB (!) main memory to load STEP instances. Nevertheless, this is a way toachieve a rst executable model that can be directly processed working well for some important checks suitable for small amount of data. Based on this rst implementation the process of checking STEP/EXPRESS models can be studied in detail and validated if the dened EXPRESS model fullls the requirements. References [1] ISO 10303, EXPRESS Language Reference Manual, Release Draft, Document N 14, ISO TC184/SC4/WG5/P3, April 29, [2] ISO CD , Product Data Representation and Exchange - Part 21: Clear Text Encoding of the Exchange Structure, ISO TC184/SC4/WG5, March 25, [3] ECIP.PH.104(3), A Guide to the ECIP Conceptual Model of Electronic Products and Product Design Process, ECIP2 Workpackage 1, July 17, [4] ECIP2/CADLAB-UNIHAGEN/D , Comparison of Concepts of the existing ECIP notation with EXPRESS, ECIP2 Workpackage 1, February 28, 1991.
15 ECIP2/PU/013-2 Esprit in Condence Translation of EXPRESS [5] R:C C, Validation of EXPRESS Models, ECIP2 Workpackage 1, (to be delivered in March, 1993).
ESPRIT Project 2072 ECIP2. Issued by the WP1 Team. Prepared by. Georg Lehrenfeld, Paderborn University, Norbert Wiechers, Cadlab
ESPRIT Project 2072 ECIP2 European CAD Integration Project Issued by the WP1 Team Prepared by Wolfgang Mueller, Cadlab, Georg Lehrenfeld, Paderborn University, Norbert Wiechers, Cadlab Validation of EXPRESS
More informationESPRIT Project 2072 ECIP2
ESPRIT Project in Condence ESPRIT Project 2072 ECIP2 European CAD Integration Project Prepared by Wolfgang Mueller (Cadlab), Gerhard Scholz (University of Hagen) Comparison of Concepts of the existing
More informationUsing STEP in exchange of digital product information.
Using STEP in exchange of digital product information. Authors Department of Electro-Technology Faculty of Electrical Engineering Czech Technical University in Prague Technická 2, 166 27 PRAHA 6, Dejvice
More informationAn Editor for the Rapid Prototyping of. Cadlab, Fuerstenalle 11, Paderborn, Germany
s3 s1 s2 s3 s23 s5 An Editor for the Rapid Prototyping of EXPRESS-G Models R. Zhao, W. Mueller, H.-J. Kaufmann, Th. Kern, F. Buijs Cadlab, Fuerstenalle 11, 33102 Paderborn, Germany 1 Introduction The new
More informationsuch internal data dependencies can be formally specied. A possible approach to specify
Chapter 6 Specication and generation of valid data unit instantiations In this chapter, we discuss the problem of generating valid data unit instantiations. As valid data unit instantiations must adhere
More informationSoftware Paradigms (Lesson 6) Logic Programming
Software Paradigms (Lesson 6) Logic Programming Table of Contents 1 Introduction... 2 2 Facts... 3 3 Predicates (Structured Terms)... 4 3.1 General Structures... 4 3.2 Predicates (Syntax)... 4 3.3 Simple
More informationAlgorithmic "imperative" language
Algorithmic "imperative" language Undergraduate years Epita November 2014 The aim of this document is to introduce breiy the "imperative algorithmic" language used in the courses and tutorials during the
More informationAnnex A (Informative) Collected syntax The nonterminal symbols pointer-type, program, signed-number, simple-type, special-symbol, and structured-type
Pascal ISO 7185:1990 This online copy of the unextended Pascal standard is provided only as an aid to standardization. In the case of dierences between this online version and the printed version, the
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationBriefly describe the purpose of the lexical and syntax analysis phases in a compiler.
Name: Midterm Exam PID: This is a closed-book exam; you may not use any tools besides a pen. You have 75 minutes to answer all questions. There are a total of 75 points available. Please write legibly;
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
More informationCompiler Techniques MN1 The nano-c Language
Compiler Techniques MN1 The nano-c Language February 8, 2005 1 Overview nano-c is a small subset of C, corresponding to a typical imperative, procedural language. The following sections describe in more
More informationPROLOG. First simple Prolog Program. Basic elements of Prolog. Clause. NSSICT/CH/Nov., 2012.
PROLOG Prolog is a programming language for symbolic, n-numeric computations. It is specially well suited for solving problems that involve objects and relation between objects. First simple Prolog Program
More informationThe S-Expression Design Language (SEDL) James C. Corbett. September 1, Introduction. 2 Origins of SEDL 2. 3 The Language SEDL 2.
The S-Expression Design Language (SEDL) James C. Corbett September 1, 1993 Contents 1 Introduction 1 2 Origins of SEDL 2 3 The Language SEDL 2 3.1 Scopes : : : : : : : : : : : : : : : : : : : : : : : :
More informationGenerating Continuation Passing Style Code for the Co-op Language
Generating Continuation Passing Style Code for the Co-op Language Mark Laarakkers University of Twente Faculty: Computer Science Chair: Software engineering Graduation committee: dr.ing. C.M. Bockisch
More informationConstruction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract
Construction of Application Generators Using Eli Uwe Kastens, University of Paderborn, FRG Abstract Application generators are a powerful means for reuse of software design. They produce special purpose
More informationCS109A ML Notes for the Week of 1/16/96. Using ML. ML can be used as an interactive language. We. shall use a version running under UNIX, called
CS109A ML Notes for the Week of 1/16/96 Using ML ML can be used as an interactive language. We shall use a version running under UNIX, called SML/NJ or \Standard ML of New Jersey." You can get SML/NJ by
More informationDerived from PROgramming in LOGic (1972) Prolog and LISP - two most popular AI languages. Prolog programs based on predicate logic using Horn clauses
Prolog Programming Derived from PROgramming in LOGic (1972) Good at expressing logical relationships between concepts Prolog and LISP - two most popular AI languages Execution of a Prolog program is a
More informationK Reference Card. Complete example
K Reference Card Complete example package examples.example1 annotation doc : String class Date class Person { name : String age : Int ssnr : Int @doc("employee inherits from Person") class Employee extends
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationMeta-Model Guided Error Correction for UML Models
Final Thesis Meta-Model Guided Error Correction for UML Models by Fredrik Bäckström and Anders Ivarsson LITH-IDA-EX--06/079--SE 2006-12-13 Final Thesis Meta-Model Guided Error Correction for UML Models
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationIncremental Flow Analysis. Andreas Krall and Thomas Berger. Institut fur Computersprachen. Technische Universitat Wien. Argentinierstrae 8
Incremental Flow Analysis Andreas Krall and Thomas Berger Institut fur Computersprachen Technische Universitat Wien Argentinierstrae 8 A-1040 Wien fandi,tbg@mips.complang.tuwien.ac.at Abstract Abstract
More informationReverse Engineering with a CASE Tool. Bret Johnson. Research advisors: Spencer Rugaber and Rich LeBlanc. October 6, Abstract
Reverse Engineering with a CASE Tool Bret Johnson Research advisors: Spencer Rugaber and Rich LeBlanc October 6, 994 Abstract We examine using a CASE tool, Interactive Development Environment's Software
More informationLearning Language. Reference Manual. George Liao (gkl2104) Joseanibal Colon Ramos (jc2373) Stephen Robinson (sar2120) Huabiao Xu(hx2104)
Learning Language Reference Manual 1 George Liao (gkl2104) Joseanibal Colon Ramos (jc2373) Stephen Robinson (sar2120) Huabiao Xu(hx2104) A. Introduction Learning Language is a programming language designed
More informationOperators (2A) Young Won Lim 10/2/13
Operators (2A) Copyright (c) 2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version
More informationLogic Programming Paradigm
Logic Programming Paradigm Sample Courseware Logic Programming Paradigm Logic programming offers a formalism for specifying a computation in terms of logical relations between entities. A logic program
More informationDRAFT for FINAL VERSION. Accepted for CACSD'97, Gent, Belgium, April 1997 IMPLEMENTATION ASPECTS OF THE PLC STANDARD IEC
DRAFT for FINAL VERSION. Accepted for CACSD'97, Gent, Belgium, 28-3 April 1997 IMPLEMENTATION ASPECTS OF THE PLC STANDARD IEC 1131-3 Martin hman Stefan Johansson Karl-Erik rzen Department of Automatic
More informationChapter 11 Object and Object- Relational Databases
Chapter 11 Object and Object- Relational Databases Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 11 Outline Overview of Object Database Concepts Object-Relational
More informationRecursion, Structures, and Lists
Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 4 04/10/04 30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists 1 The central ideas of Prolog
More informationITT8060: Advanced Programming (in F#)
based on slides by Michael R. Hansen ITT8060: Advanced Programming (in F#) Lecture 2: Identifiers, values, expressions, functions and types Juhan Ernits Department of Software Science, Tallinn University
More informationThe PCAT Programming Language Reference Manual
The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language
More informationGGPerf: A Perfect Hash Function Generator Jiejun KONG June 30, 1997
GGPerf: A Perfect Hash Function Generator Jiejun KONG June 30, 1997 Contents 1 Introduction................................. 1 1.1 Minimal Perfect Hash Function................ 1 1.2 Generators and Scripting....................
More informationProlog. Reading: Sethi, Chapter 11. Overview. Predicate Calculus. Substitution and Unication. Introduction to Prolog. Prolog Inference Rules
Prolog Reading: Sethi, Chapter 11. Overview Predicate Calculus Substitution and Unication Introduction to Prolog Prolog Inference Rules Programming in Prolog - Recursion - List Processing - Arithmetic
More informationISO. International Organization for Standardization. ISO/IEC JTC 1/SC 32 Data Management and Interchange WG4 SQL/MM. Secretariat: USA (ANSI)
ISO/IEC JTC 1/SC 32 N 0736 ISO/IEC JTC 1/SC 32/WG 4 SQL/MM:VIE-006 January, 2002 ISO International Organization for Standardization ISO/IEC JTC 1/SC 32 Data Management and Interchange WG4 SQL/MM Secretariat:
More informationRequirements document for an automated teller machine. network
Requirements document for an automated teller machine network August 5, 1996 Contents 1 Introduction 2 1.1 Purpose : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2 1.2 Scope
More informationExtending Jython. with SIM, SPARQL and SQL
Extending Jython with SIM, SPARQL and SQL 1 Outline of topics Interesting features of Python and Jython Relational and semantic data models and query languages, triple stores, RDF Extending the Jython
More information12th European Simulation Multiconference, Manchester, Uk, Discrete Event Simulation in Interactive Scientic and
12th European Simulation Multiconference, Manchester, Uk, 1998 1 Discrete Event Simulation in Interactive Scientic and Technical Computing Environments T. Pawletta, Wismar University, Germany W. Drewelow,
More informationSmall Lisp Reference Manual. Extracted from Appendix B of Symbolic Computing with Lisp. Prentice Hall, 1992.
Small Lisp Reference Manual Robert D. Cameron Anthony H. Dixon Extracted from Appendix B of Symbolic Computing with Lisp. Prentice Hall, 1992. 1 Lexical Structure A Small Lisp program consists of a stream
More informationWhat are Operators? - 1. Operators. What are Operators? - 2. Properties. » Position» Precedence class» associativity. » x + y * z. » +(x, *(y, z)).
What are Operators? - 1 Functors Introduce operators to improve the readability of programs Operators syntactic sugar Based on Clocksin & Mellish Sections 2.3, 5.5 O-1 O-2 The arithmetic expression:» x
More informationperform. If more storage is required, more can be added without having to modify the processor (provided that the extra memory is still addressable).
How to Make Zuse's Z3 a Universal Computer Raul Rojas January 14, 1998 Abstract The computing machine Z3, built by Konrad Zuse between 1938 and 1941, could only execute xed sequences of oating-point arithmetical
More informationWelcome to Teach Yourself Acknowledgments Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p.
Welcome to Teach Yourself p. viii Acknowledgments p. xv Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p. 6 Standard C++: A Programming Language and a Library p. 8
More information11/6/17. Functional programming. FP Foundations, Scheme (2) LISP Data Types. LISP Data Types. LISP Data Types. Scheme. LISP: John McCarthy 1958 MIT
Functional programming FP Foundations, Scheme (2 In Text: Chapter 15 LISP: John McCarthy 1958 MIT List Processing => Symbolic Manipulation First functional programming language Every version after the
More informationForward declaration of enumerations
Doc. no.: N2499=08-0009 Date: 2008-01-09 Project: Programming Language C++ Reply to: Alberto Ganesh Barbati Forward declaration of enumerations 1 Introduction In C++03 every declaration
More informationModern Programming Languages. Lecture LISP Programming Language An Introduction
Modern Programming Languages Lecture 18-21 LISP Programming Language An Introduction 72 Functional Programming Paradigm and LISP Functional programming is a style of programming that emphasizes the evaluation
More informationImplementação de Linguagens 2016/2017
Implementação de Linguagens Ricardo Rocha DCC-FCUP, Universidade do Porto ricroc @ dcc.fc.up.pt Ricardo Rocha DCC-FCUP 1 Logic Programming Logic programming languages, together with functional programming
More informationOverview. Introduction. Introduction XML XML. Lecture 16 Introduction to XML. Boriana Koleva Room: C54
Overview Lecture 16 Introduction to XML Boriana Koleva Room: C54 Email: bnk@cs.nott.ac.uk Introduction The Syntax of XML XML Document Structure Document Type Definitions Introduction Introduction SGML
More informationFreePascal changes: user documentation
FreePascal changes: user documentation Table of Contents Jochem Berndsen February 2007 1Introduction...1 2Accepted syntax...2 Declarations...2 Statements...3 Class invariants...3 3Semantics...3 Definitions,
More informationperspective, logic programs do have a notion of control ow, and the in terms of the central control ow the program embodies.
Projections of Logic Programs Using Symbol Mappings Ashish Jain Department of Computer Engineering and Science Case Western Reserve University Cleveland, OH 44106 USA email: jain@ces.cwru.edu Abstract
More informationPart 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 informationWeiss Chapter 1 terminology (parenthesized numbers are page numbers)
Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement
More informationDesign and Implementation of an RDF Triple Store
Design and Implementation of an RDF Triple Store Ching-Long Yeh and Ruei-Feng Lin Department of Computer Science and Engineering Tatung University 40 Chungshan N. Rd., Sec. 3 Taipei, 04 Taiwan E-mail:
More informationKeyNote: Trust Management for Public-Key. 180 Park Avenue. Florham Park, NJ USA.
KeyNote: Trust Management for Public-Key Infrastructures Matt Blaze 1 Joan Feigenbaum 1 Angelos D. Keromytis 2 1 AT&T Labs { Research 180 Park Avenue Florham Park, NJ 07932 USA fmab,jfg@research.att.com
More informationAPI-MODULE Emps; FROM CompanyDb IMPORT Employee, Project, Department, String; TYPE EmpType/Employee = [name: String; project: {Project}; dept: DeptTyp
Generating queries from complex type denitions Manfred A. Jeusfeld Informatik V, RWTH Aachen, D-52056 Aachen jeusfeld@informatik.rwth-aachen.de Abstract Many information systems are implemented as application
More information1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.
1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered
More informationCPSC 3740 Programming Languages University of Lethbridge. Data Types
Data Types A data type defines a collection of data values and a set of predefined operations on those values Some languages allow user to define additional types Useful for error detection through type
More informationOn the Finiteness of the Recursive Chromatic Number
On the Finiteness of the Recursive Chromatic Number William I Gasarch Andrew C.Y. Lee Abstract A recursive graph is a graph whose vertex and edges sets are recursive. A highly recursive graph is a recursive
More informationProgramming Languages Third Edition
Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand
More informationLecture 33 April 4, Unied Modelling Language. ECE155: Engineering Design with Embedded Systems Winter Patrick Lam version 1
ECE155: Engineering Design with Embedded Systems Winter 2013 Lecture 33 April 4, 2013 Patrick Lam version 1 Unied Modelling Language The Unied Modelling Language (UML) is a language for specifying and
More informationPace University. Fundamental Concepts of CS121 1
Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction
More informationIEEE LANGUAGE REFERENCE MANUAL Std P1076a /D3
LANGUAGE REFERENCE MANUAL Std P1076a-1999 2000/D3 Clause 10 Scope and visibility The rules defining the scope of declarations and the rules defining which identifiers are visible at various points in the
More informationProlog (cont d) Remark. Using multiple clauses. Intelligent Systems and HCI D7023E
Intelligent Systems and HCI D703E Lecture : More Prolog Paweł Pietrzak Prolog (cont d) 1 Remark The recent version of SWI- Prolog displays true and false rather than and no Using multiple clauses Different
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages
More information9/7/17. Outline. Name, Scope and Binding. Names. Introduction. Names (continued) Names (continued) In Text: Chapter 5
Outline Name, Scope and Binding In Text: Chapter 5 Names Variable Binding Type bindings, type conversion Storage bindings and lifetime Scope Lifetime vs. Scope Referencing Environments N. Meng, S. Arthur
More informationDependent Object Types - A foundation for Scala's type system
Dependent Object Types - A foundation for Scala's type system Draft of January 14, 2010 Do Not Distrubute Martin Odersky, Georey Alan Washburn EPFL Abstract. 1 Introduction This paper presents a proposal
More informationRelational Databases
Relational Databases Jan Chomicki University at Buffalo Jan Chomicki () Relational databases 1 / 49 Plan of the course 1 Relational databases 2 Relational database design 3 Conceptual database design 4
More informationCommon LISP-Introduction
Common LISP-Introduction 1. The primary data structure in LISP is called the s-expression (symbolic expression). There are two basic types of s-expressions: atoms and lists. 2. The LISP language is normally
More informationIBM Rational Rhapsody TestConductor Add On. Code Coverage Limitations
IBM Rational Rhapsody TestConductor Add On Code Coverage Limitations 1 Rhapsody IBM Rational Rhapsody TestConductor Add On Code Coverage Limitations Release 2.7.1 2 License Agreement No part of this publication
More informationSprite an animation manipulation language Language Reference Manual
Sprite an animation manipulation language Language Reference Manual Team Leader Dave Smith Team Members Dan Benamy John Morales Monica Ranadive Table of Contents A. Introduction...3 B. Lexical Conventions...3
More informationLogic Languages. Hwansoo Han
Logic Languages Hwansoo Han Logic Programming Based on first-order predicate calculus Operators Conjunction, disjunction, negation, implication Universal and existential quantifiers E A x for all x...
More informationFunctional programming with Common Lisp
Functional programming with Common Lisp Dr. C. Constantinides Department of Computer Science and Software Engineering Concordia University Montreal, Canada August 11, 2016 1 / 81 Expressions and functions
More informationExpressions that talk about themselves. Maarten Fokkinga, University of Twente, dept. INF, Version of May 6, 1994
Expressions that talk about themselves Maarten Fokkinga, University of Twente, dept. INF, fokkinga@cs.utwente.nl Version of May 6, 1994 Introduction Self-reference occurs frequently in theoretical investigations
More informationContents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix
PGJC4_JSE8_OCA.book Page ix Monday, June 20, 2016 2:31 PM Contents Figures Tables Examples Foreword Preface xix xxi xxiii xxvii xxix 1 Basics of Java Programming 1 1.1 Introduction 2 1.2 Classes 2 Declaring
More informationThe Compositional C++ Language. Denition. Abstract. This document gives a concise denition of the syntax and semantics
The Compositional C++ Language Denition Peter Carlin Mani Chandy Carl Kesselman March 12, 1993 Revision 0.95 3/12/93, Comments welcome. Abstract This document gives a concise denition of the syntax and
More informationThe Typed Racket Guide
The Typed Racket Guide Version 5.3.6 Sam Tobin-Hochstadt and Vincent St-Amour August 9, 2013 Typed Racket is a family of languages, each of which enforce
More informationOperators (2A) Young Won Lim 10/5/13
Operators (2A) Copyright (c) 2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version
More informationINTERNATIONAL TELECOMMUNICATION UNION
INTERNATIONAL TELECOMMUNICATION UNION ITU-T X.681 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (07/2002) SERIES X: DATA NETWORKS AND OPEN SYSTEM COMMUNICATIONS OSI networking and system aspects Abstract
More informationCSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter p. 1/27
CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter 2.1-2.7 p. 1/27 CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer
More informationPreface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS
Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...
More informationStructure of Abstract Syntax trees for Colored Nets in PNML
Structure of Abstract Syntax trees for Colored Nets in PNML F. Kordon & L. Petrucci Fabrice.Kordon@lip6.fr Laure.Petrucci@lipn.univ-paris13.fr version 0.2 (draft) June 26, 2004 Abstract Formalising the
More informationThe Programming Language Core
The Programming Language Core Wolfgang Schreiner Research Institute for Symbolic Computation (RISC-Linz) Johannes Kepler University, A-4040 Linz, Austria Wolfgang.Schreiner@risc.uni-linz.ac.at http://www.risc.uni-linz.ac.at/people/schreine
More informationC-LANGUAGE CURRICULAM
C-LANGUAGE CURRICULAM Duration: 2 Months. 1. Introducing C 1.1 History of C Origin Standardization C-Based Languages 1.2 Strengths and Weaknesses Of C Strengths Weaknesses Effective Use of C 2. C Fundamentals
More informationIntroduction to LISP. York University Department of Computer Science and Engineering. York University- CSE V.
Introduction to LISP York University Department of Computer Science and Engineering York University- CSE 3401- V. Movahedi 11_LISP 1 Introduction to LISP Evaluation and arguments S- expressions Lists Numbers
More informationResearch Report AI A Numerical Equation Solver in Prolog Michael A. Covington Artificial Intelligence Programs The University of Georgia
Research Report AI 1989 02 A Numerical Equation Solver in Prolog Michael A. Covington Artificial Intelligence Programs The University of Georgia Athens, Georgia 30602 U.S.A. A Numerical Equation Solver
More informationStating the obvious, people and computers do not speak the same language.
3.4 SYSTEM SOFTWARE 3.4.3 TRANSLATION SOFTWARE INTRODUCTION Stating the obvious, people and computers do not speak the same language. People have to write programs in order to instruct a computer what
More informationThe DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data.
Managing Data Data storage tool must provide the following features: Data definition (data structuring) Data entry (to add new data) Data editing (to change existing data) Querying (a means of extracting
More informationManaging ANSA Objects with OSI Network Management Tools. on the joint ISO-ITU `Reference Model for Open Distributed. to OSI managers.
Managing ANSA Objects with OSI Network Tools Guy Genilloud Computer Engineering Department EPFL-DI-LIT Swiss Federal Institute of Technology CH-1015 Lausanne, SWITZERLAND Marc Polizzi Computer Engineering
More informationOverview of the Ruby Language. By Ron Haley
Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,
More informationTowards a Semantic Web Modeling Language
Towards a Semantic Web Modeling Language Draft Christoph Wernhard Persist AG Rheinstr. 7c 14513 Teltow Tel: 03328/3477-0 wernhard@persistag.com May 25, 2000 1 Introduction The Semantic Web [2] requires
More informationTyped Racket: Racket with Static Types
Typed Racket: Racket with Static Types Version 5.0.2 Sam Tobin-Hochstadt November 6, 2010 Typed Racket is a family of languages, each of which enforce that programs written in the language obey a type
More informationCOMPUTER SCIENCE TRIPOS
CST.2011.3.1 COMPUTER SCIENCE TRIPOS Part IB Monday 6 June 2011 1.30 to 4.30 COMPUTER SCIENCE Paper 3 Answer five questions. Submit the answers in five separate bundles, each with its own cover sheet.
More informationProgram Design in PVS. Eindhoven University of Technology. Abstract. Hoare triples (precondition, program, postcondition) have
Program Design in PVS Jozef Hooman Dept. of Computing Science Eindhoven University of Technology P.O. Box 513, 5600 MB Eindhoven, The Netherlands e-mail: wsinjh@win.tue.nl Abstract. Hoare triples (precondition,
More informationOMA Device Management Tree and Description Serialization
OMA Device Management Tree and Description Serialization Approved 1.2 09 Feb 2007 Open Mobile Alliance OMA-TS-DM_TNDS-V1_2-20070209-A OMA-TS-DM_TNDS-V1_2-20070209-A Page 2 (19) Use of this document is
More informationHow Actuate Reports Process Adhoc Parameter Values and Expressions
How Actuate Reports Process Adhoc Parameter Values and Expressions By Chris Geiss chris_geiss@yahoo.com How Actuate Reports Process Adhoc Parameter Values and Expressions By Chris Geiss (chris_geiss@yahoo.com)
More informationInter-language reflection: A conceptual model and its implementation
Computer Languages, Systems & Structures 32 (2006) 109 124 www.elsevier.com/locate/cl Inter-language reflection: A conceptual model and its implementation Kris Gybels a,, Roel Wuyts b, Stéphane Ducasse
More informationWeek 7 Prolog overview
Week 7 Prolog overview A language designed for A.I. Logic programming paradigm Programmer specifies relationships among possible data values. User poses queries. What data value(s) will make this predicate
More informationEMBEDDED SYSTEMS PROGRAMMING Language Basics
EMBEDDED SYSTEMS PROGRAMMING 2015-16 Language Basics "The tower of Babel" by Pieter Bruegel the Elder Kunsthistorisches Museum, Vienna (PROGRAMMING) LANGUAGES ABOUT THE LANGUAGES C (1972) Designed to replace
More informationThe SPL Programming Language Reference Manual
The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming
More information