A Study of Semantics, Types and Languages for Databases and Object-Oriented Programming

Total Page:16

File Type:pdf, Size:1020Kb

A Study of Semantics, Types and Languages for Databases and Object-Oriented Programming University of Pennsylvania ScholarlyCommons Technical Reports (CIS) Department of Computer & Information Science October 1989 A Study of Semantics, Types and Languages for Databases and Object-Oriented Programming Atsushi Ohori University of Pennsylvania Follow this and additional works at: https://repository.upenn.edu/cis_reports Recommended Citation Atsushi Ohori, "A Study of Semantics, Types and Languages for Databases and Object-Oriented Programming", . October 1989. University of Pennsylvania Department of Computer and Information Science Technical Report No. MS-CIS-89-60. This paper is posted at ScholarlyCommons. https://repository.upenn.edu/cis_reports/852 For more information, please contact [email protected]. A Study of Semantics, Types and Languages for Databases and Object-Oriented Programming Abstract The purpose of this thesis is to investigate a type system for databases and object-oriented programming and to design a statically typed programming language for these applications. Such a language should ideally have a static type system that supports: polymorphism and static type inference, rich data structures and operations to represent various data models for databases including the relational model and more recent complex object models, central features of object-oriented programming including user definable class hierarchies, multiple inheritance, and data abstraction, the notion of extents and object-identities for object-oriented databases. Without a proper formalism, it is not obvious that the construction of such a type system is possible. This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features. The specific contributions of this thesis include: A simple semantics for ML polymorphism and axiomatization of the equational theory of ML. A uniform generalization of the relational model to arbitrary complex database objects that are constructed by labeled records, labeled variants, finite sets and ecursivr e definition. A framework for semantics of types for complex database objects. The notion of conditional typing schemes that extends Milner's typing scheme for ML to a wide range of complex structures and operations. A formulation of the notion of classes and inheritance in an ML style static type system. The notion of views that enable us to represent object-oriented databases in an ML style static type system. A proposal of a polymorphic programming language, Machiavelli, for databases and object-oriented programming with static type inference. In addition to the above technical contributions, a prototype implementation of Machiavelli that embodies most of the features presented in this thesis has been done in Standard ML of New Jersey. Comments University of Pennsylvania Department of Computer and Information Science Technical Report No. MS- CIS-89-60. This technical report is available at ScholarlyCommons: https://repository.upenn.edu/cis_reports/852 A Study On Semantics, Types, and Languages For Databases and Object-Oriented Programming MS-CIS-89-60 LOGIC & COMPUTATION 15 At sushi 0hori Department of Computer and Information Science School of Engineering and Applied Science University of Pennsylvania Philadelphia, PA 19104 October 1989 ACKNOWLEDGMENTS: This research was supported in part by grants NSF IRI86-10617, ARO DAA6-29-84-K-0061, ONR N0001488-K-0634 and OK1 Electric Industry Co., Japan A STUDY OF SEMANTICS , TYPES AND LANGUAGES FOR DATABASES AND OB JECT-ORIENTED PROGRAMMING ATSUSHI OHORI A DISSERTATION in Computer and Information Science Presented to the Faculties of the University of Pennsylvania in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy. 1969 Peter Buneman Val Breazu-Tannen Co-supervisor of Dissertation Co-supervisor of Dissertation Jean Gallier ..- .,., . Graduate Group Chairpers~q . - r * I .vs @ COPYRIGHT ATSUSHI OHORI 1989 A STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI CO-SUPERVISORS : PETER BUNEMAN AND VAL BREAZU-TANNEN The purpose of this thesis is to investigate a type system for databases and object-oriented programming and to design a statically typed programming language for these applications. Such a language should ideally have a static type system that supports: polymorphism and static type inference, rich data structures and operations to represent various data models for databases including the relational model and more recent complex object models, central features of object-oriented programming including user definable class hierarchies, multiple inheritance, and data abstraction, the notion of extents and object-identities for object-oriented databases. Without a proper formalism, it is not obvious that the construction of such a type system is possible. This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features. The specific contributions of this thesis include: A simple semantics for hlL polymorphism and axiomatization of the equational theory of ML. A uniform generalization of the relational model to arbitrary complex database objects that are constructed by labeled records, labeled variants, finite sets and recursive definition. A framework for semantics of types for complex database objects. The notion of conditional typing schemes that extends Milner's typing scheme for hlL to a wide range of complex structures and operations. A formulation of the notion of classes and inheritance in an ML style static type system. The notion of views that enable us to represent object-oriented databases in an ML style static type system. A proposal of a polymorphic programming language, Machiavelli, for databases and object- oriented programming with static type inference. In addition to the above technical contributions, a prototype implementation of Machiavelli that embodies most of the features presented in this thesis has been done in Standard ML of New Jersey. ACKNOWLEDGEMENTS - I am indebted to my co-adviser Peter Buneman. He originally introduced me the area of types and semantics for database programming languages and recommended me to undertake the doctoral study. Without his enthusiastic encouragement, this dissertation would have never existed. Special thanks are also to my co-adviser Val Breazu-Tannen for his guiding me the are of syntax and semantics of types for programming languages and for his encouragements. Moreover, their constructive criticism and our continuous discussion directly contribute to the work. I am grateful to my external commitee members Tomasz Imielinski and John Mitchell for very useful discussion at several opportune moments and many helpful comments. I am as grateful to the other members of my thesis committee. Jean Callier, Aravind Joshi, and Dale Miller for their interest in my work and their invaluable comments. Many thanks are also to Luca Cardelli, Carl Gunter, Richard Hull. David MacQueen, hiitchell Wand and Aaron Watters for very helpful discussions and suggestions. Moreover Mitchell \.%'and made several constructive criticism on the draft paper on which a part of chapter 5 is based. I am grateful to OK1 Electric Industry Co., Japan. They granted my leave of absence for the study at University of Pennsylvania and provided financial support. Among them, special thanks are to Kenji Tateoka, Eiji Nohara, and Toshiyuki Matsumoto who gave me assistance and support at critical moments. Finally my special gratitude goes to my wife Hiroko. Without her, the endevour of graduate study would have been arid and trying experience. Contents ... Abstract 111 Acknowledgements iv 1 Introduction 1 1.1 Motivations and Purposes ................................. 1 1.2 Organization of Thesis ................................... 4 2 Mathematical Preliminaries 8 2.1 Basic Notions and Notations ............................... 8 2.2 Labeled Trees ........................................ 10 2.2.1 Definitions and Basic Properties ......................... 10 2.2.2 Substitutions and Unifications on Trees ..................... 15 2.2.3 Regular Trees .................................... 16 3 Analysis of ML : its Syntax and Semantics 22 3.1 Introduction ......................................... 22 3.1.1 Milner's original semantics ............................ 24 3.1.2 Damas-Milner type inference system and Mitchell-Harper's analysis ..... 25 3.1.3 A simple framework for ML polymorphism ................... 29 3.2 The Language Core-ML .................................. 30 3.2.1 Raw terms. types and type-schemes ....................... 30 3.2.2 Typings. typing schemes and terms of Core-ML ................. 33 3.2.3 Type Inference Problem .............................. 35 3.2.4 Relation to Darnas-Milner System ........................38 3.2.5 Equational theoriesofCore.ML .......................... 43 3.3 Semantics of Core-ML ................................... 44 3.3.1 Explicitly-typed language TA and its semantics ................. 44 3.3.2 Relationship between TA and Core-ML ..................... 46 3.3.3 Semantics of Core-ML ............................... 49 3.4 Soundness and Completeness of Core-ML Theories ................... 50 3.5 Extensions of Core-ML ................................... 52 3.6 Full Abstraction of ML ................................... 57 4 Database Domains 6 0 4.1 Introduction ......................................... 60 4.1.1 Data Structures for Database Objects .....................
Recommended publications
  • Presentation on Ocaml Internals
    OCaml Internals Implementation of an ML descendant Theophile Ranquet Ecole Pour l’Informatique et les Techniques Avancées SRS 2014 [email protected] November 14, 2013 2 of 113 Table of Contents Variants and subtyping System F Variants Type oddities worth noting Polymorphic variants Cyclic types Subtyping Weak types Implementation details α ! β Compilers Functional programming Values Why functional programming ? Allocation and garbage Combinatory logic : SKI collection The Curry-Howard Compiling correspondence Type inference OCaml and recursion 3 of 113 Variants A tagged union (also called variant, disjoint union, sum type, or algebraic data type) holds a value which may be one of several types, but only one at a time. This is very similar to the logical disjunction, in intuitionistic logic (by the Curry-Howard correspondance). 4 of 113 Variants are very convenient to represent data structures, and implement algorithms on these : 1 d a t a t y p e tree= Leaf 2 | Node of(int ∗ t r e e ∗ t r e e) 3 4 Node(5, Node(1,Leaf,Leaf), Node(3, Leaf, Node(4, Leaf, Leaf))) 5 1 3 4 1 fun countNodes(Leaf)=0 2 | countNodes(Node(int,left,right)) = 3 1 + countNodes(left)+ countNodes(right) 5 of 113 1 t y p e basic_color= 2 | Black| Red| Green| Yellow 3 | Blue| Magenta| Cyan| White 4 t y p e weight= Regular| Bold 5 t y p e color= 6 | Basic of basic_color ∗ w e i g h t 7 | RGB of int ∗ i n t ∗ i n t 8 | Gray of int 9 1 l e t color_to_int= function 2 | Basic(basic_color,weight) −> 3 l e t base= match weight with Bold −> 8 | Regular −> 0 in 4 base+ basic_color_to_int basic_color 5 | RGB(r,g,b) −> 16 +b+g ∗ 6 +r ∗ 36 6 | Grayi −> 232 +i 7 6 of 113 The limit of variants Say we want to handle a color representation with an alpha channel, but just for color_to_int (this implies we do not want to redefine our color type, this would be a hassle elsewhere).
    [Show full text]
  • Programming-With-Actuate-Basic.Pdf
    Programming with Actuate Basic This documentation has been created for software version 11.0.5. It is also valid for subsequent software versions as long as no new document version is shipped with the product or is published at https://knowledge.opentext.com. Open Text Corporation 275 Frank Tompa Drive, Waterloo, Ontario, Canada, N2L 0A1 Tel: +1-519-888-7111 Toll Free Canada/USA: 1-800-499-6544 International: +800-4996-5440 Fax: +1-519-888-0677 Support: https://support.opentext.com For more information, visit https://www.opentext.com Copyright © 2017 Actuate. All Rights Reserved. Trademarks owned by Actuate “OpenText” is a trademark of Open Text. Disclaimer No Warranties and Limitation of Liability Every effort has been made to ensure the accuracy of the features and techniques presented in this publication. However, Open Text Corporation and its affiliates accept no responsibility and offer no warranty whether expressed or implied, for the accuracy of this publication. Document No. 170215-2-130331 February 15, 2017 Contents About Programming with Actuate Basic. .xi Part 1 Working with Actuate Basic Chapter 1 Introducing Actuate Basic . 3 About Actuate Basic . 4 Programming with Actuate Basic . 4 Understanding code elements . 5 About statements . 5 About expressions . 6 About operators . 7 Using an arithmetic operator . 7 Using a comparison operator . 8 Using logical operators . 8 Using the concatenation operator . 9 Adhering to coding conventions . 9 Commenting code . 10 Breaking up a long statement . 10 Adhering to naming rules . 10 Using the code examples . .11 Chapter 2 Understanding variables and data types . 13 About variables . 14 Declaring a variable .
    [Show full text]
  • Generic Programming in OCAML
    Generic Programming in OCAML Florent Balestrieri Michel Mauny ENSTA-ParisTech, Université Paris-Saclay Inria Paris [email protected] [email protected] We present a library for generic programming in OCAML, adapting some techniques borrowed from other functional languages. The library makes use of three recent additions to OCAML: generalised abstract datatypes are essential to reflect types, extensible variants allow this reflection to be open for new additions, and extension points provide syntactic sugar and generate boiler plate code that simplify the use of the library. The building blocks of the library can be used to support many approachesto generic programmingthrough the concept of view. Generic traversals are implemented on top of the library and provide powerful combinators to write concise definitions of recursive functions over complex tree types. Our case study is a type-safe deserialisation function that respects type abstraction. 1 Introduction Typed functional programming languages come with rich type systems guaranteeing strong safety prop- erties for the programs. However, the restrictions imposed by types, necessary to banish wrong programs, may prevent us from generalizing over some particular programming patterns, thus leading to boilerplate code and duplicated logic. Generic programming allows us to recover the loss of flexibility by adding an extra expressive layer to the language. The purpose of this article is to describe the user interface and explain the implementation of a generic programming library1 for the language OCAML. We illustrate its usefulness with an implementation of a type-safe deserialisation function. 1.1 A Motivating Example Algebraic datatypes are very suitable for capturing structured data, in particular trees.
    [Show full text]
  • 2 Defining Variables
    2 Defining Variables Variables Dim Statement Option Explicit Variable Names Standard Naming Conventions Data Types and Dim Examples Byte Boolean Integer Long Currency Single Double Date String (for variable-length strings) String * length (for fixed-length strings) Object Variant user-defined type object type AutoComplete Indenting Code Indenting several lines of code Removing an indent TypeName Function Arrays Option Base Statement Array Examples Objective: Understand variables and Data Types; AutoComplete; indent code; Option Explicit and Option Base statements 2-2 Crystal's Introduction to Programming With Excel : Variables Variables When you are writing programs, you want to be able to keep track of values in code so you can use them later. For instance, let's say you want to write a program to ask the user their name. You can create a variable to hold the name and prompt the user for its value. "Declaring variables" means that you are going to tell Excel what variables you are going to use and (optionally, but suggested) what type of data those variables are going to have. To declare a variable will be used in the program code, the Dim (dimension) statement is used. Dim Statement Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . The most common form of the Dim statement is: Dim varname As type The following statement declares a variable named mName as a string, which means a sequence of characters. Dim mUserName As String If you don't declare your variable, Excel will automatically create it the first time you use it in your code.
    [Show full text]
  • Using Vbscript with Indusoft Web Studio
    Using VBScript with InduSoft Web Studio © InduSoft 2006 Table of Contents About VBScript..............................................................................................................................................4 VBScript Limitations in IWS.........................................................................................................................6 The Microsoft Visual Basic Family...............................................................................................................6 Differences between VBScript and VBA ......................................................................................................7 VBScript Hosting Environments ...................................................................................................................8 VBScript Language Overview .......................................................................................................................9 VBScript Functionality ..............................................................................................................................9 VBScript Elements.....................................................................................................................................9 Variable Data Types and Subtypes ..........................................................................................................10 Data Subtype Identification......................................................................................................................10 Data
    [Show full text]
  • Siebel VB Language Reference
    Siebel VB Language Reference Version 7.7 March 2004 Siebel Systems, Inc., 2207 Bridgepointe Parkway, San Mateo, CA 94404 Copyright © 2004 Siebel Systems, Inc. All rights reserved. Printed in the United States of America No part of this publication may be stored in a retrieval system, transmitted, or reproduced in any way, including but not limited to photocopy, photographic, magnetic, or other record, without the prior agreement and written permission of Siebel Systems, Inc. Siebel, the Siebel logo, TrickleSync, Universal Agent, and other Siebel names referenced herein are trademarks of Siebel Systems, Inc., and may be registered in certain jurisdictions. Other product names, designations, logos, and symbols may be trademarks or registered trademarks of their respective owners. PRODUCT MODULES AND OPTIONS. This guide contains descriptions of modules that are optional and for which you may not have purchased a license. Siebel’s Sample Database also includes data related to these optional modules. As a result, your software implementation may differ from descriptions in this guide. To find out more about the modules your organization has purchased, see your corporate purchasing agent or your Siebel sales representative. U.S. GOVERNMENT RESTRICTED RIGHTS. Programs, Ancillary Programs and Documentation, delivered subject to the Department of Defense Federal Acquisition Regulation Supplement, are “commercial computer software” as set forth in DFARS 227.7202, Commercial Computer Software and Commercial Computer Software Documentation, and as such, any use, duplication and disclosure of the Programs, Ancillary Programs and Documentation shall be subject to the restrictions contained in the applicable Siebel license agreement. All other use, duplication and disclosure of the Programs, Ancillary Programs and Documentation by the U.S.
    [Show full text]
  • Type Systems.Fm
    Type Systems Luca Cardelli Microsoft Research 1 Introduction The fundamental purpose of a type system is to prevent the occurrence of execution errors dur- ing the running of a program. This informal statement motivates the study of type systems, but requires clarification. Its accuracy depends, first of all, on the rather subtle issue of what consti- tutes an execution error, which we will discuss in detail. Even when that is settled, the absence of execution errors is a nontrivial property. When such a property holds for all of the program runs that can be expressed within a programming language, we say that the language is type sound. It turns out that a fair amount of careful analysis is required to avoid false and embar- rassing claims of type soundness for programming languages. As a consequence, the classifica- tion, description, and study of type systems has emerged as a formal discipline. The formalization of type systems requires the development of precise notations and defi- nitions, and the detailed proof of formal properties that give confidence in the appropriateness of the definitions. Sometimes the discipline becomes rather abstract. One should always remem- ber, though, that the basic motivation is pragmatic: the abstractions have arisen out of necessity and can usually be related directly to concrete intuitions. Moreover, formal techniques need not be applied in full in order to be useful and influential. A knowledge of the main principles of type systems can help in avoiding obvious and not so obvious pitfalls, and can inspire regularity and orthogonality in language design. When properly developed, type systems provide conceptual tools with which to judge the adequacy of important aspects of language definitions.
    [Show full text]
  • Explanation of Vbscript for Use in HP Quicktest Professional (QTP) Index
    Explanation of VBScript for use in HP QuickTest Professional (QTP) Index Sec. Contents Page 1 VBScript in QTP 2 2 VBScript Data Type 2 3 VBScript Variable 3 4 VBScript Arrays 4 5 VBScript Constants 4 6 VBScript Functions & Subroutines 7 7 Arguments in Procedures 10 8 VBScript Conditional Statements 11 9 VBScript Looping Statements 13 10 VBScript Classes 17 11 VBScript - Property Let, Property Get, Property Set 20 12 Example of VBScript - Property Let, Property Get, Property Set 23 http://www.softwaretestinggenius.com Page 1 of 23 Explanation of VBScript for use in HP QuickTest Professional (QTP) 1) VBScript in QTP Scripting language for QuickTest Professional (QTP) is VBScript. VBScript (short form of Visual Basic Scripting Edition) is a lively scripting language interpreted via Microsoft's Windows Script Host. VBScript has many powerful functions and provides excellent support for variables, data types, and error handling. Two script engines can interpret VBScript- VBScript.dll, which is invoked by asp.dll is used in web environment and Wscript.exe & Cscript.exe in Windows GUI environment using Windows Script Host (WSH). We typically, use VBScript within WSH to automate systems administration tasks. WSH is the system module that transforms a VBScript file into a Windows executable file. Wscript.exe is used to display output and receive input in Windows GUI format such as dialog and input boxes. Cscript.exe is used in a command-line environment. When VBScript source code is contained in standalone files, they have the file extension .Vbs. 2) VBScript Data Type VBScript has only one data type called a Variant that can store any type of value.
    [Show full text]
  • Basicscript 2.25 Language Reference
    BasicScript 2.25 Language Reference May 2, 1996 Information in this document is subject to change without notice. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of Summit Software Company. Copyright © 1992–1996 Summit Software Company. All rights reserved. BasicScript is a registered trademark of Summit Software Company. All other trademarks are the property of their respective holders. iii Contents Introduction ...........................................................................................................................1 Language Summary ..............................................................................................................3 A-Z Reference ......................................................................................................................25 Index ...................................................................................................................................561 Summit Software Confidential Filename: lr.TOC Template: UGtemp.FM5 Page: iii of iv Printed: 5/2/96 iv BasicScript 2.2 Language Reference Summit Software Confidential Filename: lr.TOC Template: UGtemp.FM5 Page: iv of iv Printed: 5/2/96 Introduction This manual provides a complete reference for the BasicScript 2.25 scripting language. It contains the following: • The Language Summary provides you with a list of all functions, statements, and methods in the BasicScript language. These items are
    [Show full text]
  • A Extending Type Inference to Variational Programs
    A Extending Type Inference to Variational Programs SHENG CHEN, MARTIN ERWIG, and ERIC WALKINGSHAW, Oregon State University Through the use of conditional compilation and related tools, many software projects can be used to generate a huge number of related programs. The problem of typing such variational software is very difficult. The brute-force strategy of generating all variants and typing each one individually is (1) usually infeasible for efficiency reasons and (2) produces results that do not map well to the underlying variational program. Recent research has focused mainly on the first problem and addressed only the problem of type checking. In this work we tackle the more general problem of variational type inference. We begin by introducing the variational lambda calculus (VLC) as a formal foundation for research on typing variational programs. We define a type system for VLC in which VLC expressions can have variational types, and a variational type inference algorithm for inferring these types. We show that the type system is correct by proving that the typing of expressions is preserved over the process of variation elimination, which eventually results in a plain lambda calculus expression and its corresponding type. We also consider the extension of VLC with sum types, a necessary feature for supporting variational data types, and demonstrate that the previous theoretical results also hold under this extension. The inference algorithm is an extension of algorithm W . We replace the standard unification algorithm with an equational unification algorithm for variational types. We show that the unification problem is decidable and unitary, and that the type inference algorithm computes principal types.
    [Show full text]
  • Siebel VB Language Reference Version 8.0 December 2006
    Siebel VB Language Reference Version 8.0 December 2006 Copyright © 2005, 2006, Oracle. All rights reserved. The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited. The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error- free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose. PRODUCT MODULES AND OPTIONS. This guide contains descriptions of modules that are optional and for which you may not have purchased a license. Siebel’s Sample Database also includes data related to these optional modules. As a result, your software implementation may differ from descriptions in this guide. To find out more about the modules your organization has purchased, see your corporate purchasing agent or your Siebel sales representative. If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS. Programs, software, databases, and related documentation and technical data delivered to U.S.
    [Show full text]
  • Dependent Types for Low-Level Programming
    Dependent Types for Low-Level Programming Jeremy Paul Condit Matthew Thomas Harren Zachary Ryan Anderson David Gay George Necula Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2006-129 http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-129.html October 13, 2006 Copyright © 2006, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Acknowledgement Many thanks to Feng Zhou, Ilya Bagrak, Bill McCloskey, Rob Ennals, and Eric Brewer for their contributions to Deputy. This material is based upon work supported by the National Science Foundation under Grant Nos.~CCR-0326577, CCF-0524784, and CNS-0509544, as well as gifts from Intel Corporation. Dependent Types for Low-Level Programming Jeremy Condit Matthew Harren Zachary Anderson David Gay† George C. Necula University of California, Berkeley †Intel Research, Berkeley {jcondit, matth, zra, necula}@cs.berkeley.edu [email protected] Abstract guage, and we propose the use of run-time checks where static We describe the key principles of a flexible dependent type sys- checking is not sufficient. This hybrid type-checking strategy tem for low-level imperative languages. Two major contributions has also been proposed recently by Flanagan [10].
    [Show full text]