Verification of Imperative Programs in Theorema
|
|
|
- Thomasine Barton
- 10 years ago
- Views:
Transcription
1 Verification of Imperative Programs in Theorema Laura Ildikó Kovács, Nikolaj Popov, Tudor Jebelean 1 Research Institute for Symbolic Computation, Johannes Kepler University, A-4040 Linz, Austria Institute e-austria Timişoara, Romania {lkovacs,npopov,jebelean}@risc.uni-linz.ac.at Abstract. We present the design and the implementation of a prototype verification condition generator for imperative programs. The generator is part of the Theorema system, a computer aided mathematical assistant which offers automated reasoning and computer algebra facilities. We use Hoare Logic and the weakest precondition strategy, but in addition we propose a novel method for analyzing loop constructs by aid of algebraic computations: combinatorial summation and equational elimination. The verification conditions and the termination term for programs containing loops and procedure calls are generated fully automatically, in a form which can be immediately used by the automatic provers of Theorema in order to check whether they hold. Introduction Program verification (and verification of informational systems in general will probably play an important role in the development of information technologies (IT, because, as IT products become more sophisticated, their reliability is more difficult to insure by artizanal means, and as IT products become more present in all aspects of human activity, their un-reliability has more dramatic negative effects. In this paper we present our practical approach to program verification in the frame of the Theorema system. The Theorema group is active since 10 years in the area of computer aided mathematics, with main emphasis on automated reasoning, and it is building the Theorema system ( an integrated environment for mathematical explorations [3]. In particular, the Theorema system offers several provers in natural style, which imitate the heuristics used by human provers (combining proving, computing, and solving, use of computer algebra, special sequent calculus, domain specific provers, induction, use of metavariables, etc.. 1 The program verification project is supported by BMBWK (Austrian Ministry of Education, Science, and Culture, BMWA (Austrian Ministry of Economy and Work and by MEC (Romanian Ministry of Education and Research in the frame of the e-austria Timisoara project. The Theorema system is supported by FWF (Austrian National Science Foundation SFB project P1302. Workshop on Formal Methods, SEEFM'03 Proceedings of the 1st South-East European November 2003, Thessaloniki, Greece 140
2 Algorithms can be expressed in Theorema using the language of predicate logic with equalities interpreted as rewrite rules (which leads to an elegant functional programming style. However, the system also contains an analyzer and an interpretor for an imperative language containing the essential necessary constructs [7]. The Theorema system is particularly appropriate for program verification, because it allows the work with both logical formulae and with the description of algorithms in the same uniform frame, and also delivers the proofs in a natural language and using natural style inferences. Moreover, the system is implemented on top of the computer algebra system Mathematica [12], thus it has access to a wealth of powerful computing and solving algorithms. The approach to program verification presented here is Hoare Logic [6, 9]. Program correctness is expressed by Hoare triples {P }S{Q}, where S is a program and P and Q are assertions (logical formulae. The precondition P has to be satisfied by the input values to the program (routine and the postcondition Q is satisfied by the input values and the result[s] of the program (output values. The program S is a finite sequence of statements. By using the so called weakest precondition strategy, one starts backwards from the postcondition and generates at each statement the weakest logical formula which is necessary for the postcondition to hold (some additional conditions may be generated on the way e.g. for While loops. We improved the verification condition generator and the interpretor implemented in Theorema by [7], by a more sophisticated handling of loops, and by extending the verification of function calls in order to handle more practical situations, including recursive calls. The main original contribution of our work is the use of algebraic algorithms for the analysis of algorithms: finding loop invariants, checking of termination, estimation of the time complexity. This is of course limited to programs which operate over certain domains (e.g. numbers, but they are completely automatic, and these type of programs are very interesting in practice. Current attempts at solving these problems are based on a logical approach (see e. g.[4] or [5] Chapt. 16 for some heuristics, which is much more difficult, although more general. Our approach is practical and experimental. Of course there are (and have been many systems which solve [partially] this problem (see e.g. [2, 1], the PVS Specification and Verification System the Sunrise verification condition generator The purpose of our work is to have a practical system for experiments, which, in conjunction with the rest of the Theorema system allows us to examine test cases and to obtain more insight into the problem. 1 Basic Language Constructs in Theorema Specifications, invariants, and conjectures can be expressed in the logical language of Theorema, which is practically identical to the mathematical language used by mathematicians and engineers: higher-order predicate logic, including 141
3 the two-dimensional notations. Moreover, Theorema allows the introduction of ones own notations and symbols and even creating new graphical symbols [10]. The system provides few simple and intuitive commands for creating and manipulating mathematical knowledge, including its organization into mathematical theories, as well as proving, computing, and solving with respect to a certain theory. During the last few years, such domain specific knowledge bases have been developed in the system. For the handling of imperative programs, the system provides the commands Program, Specification, and Execute. We illustrate these and the syntax of the imperative language through a simple example: Specif ication[ Division, Div[ x, y, rem, quo], P re ((x 0 (y > 0, P ost ((quo y + rem = x (0 rem < y] P rogram[ Division, Div[ x, y, rem, quo], quo := 0; rem := x; W HILE[y rem, rem := rem y; quo := quo + 1, Invariant ((quo y + rem = x (0 rem, T erminationt erm rem], Specif ication Specif ication[ Division ]] Both the specification and the description of a routine indicate the the parameters and their nature (input, output, input-output. The argument Specif ication of P rogram is optional, as are the arguments Invariant and T erminationt erm of W HILE. In the program text we differentiate between assignment := and logical equality =. After entering the previous commands into the Theorema system, one can enter: Execute[Div[20, 3, rem, quo]], which will have the effect of assigning to rem and quo the appropriate values 2 and 6. 2 Generation of the Verification Conditions Continuing the example above, one may introduce the command: V CG[P rogram[ Division ]] 142
4 and then one obtains: Lemma(Division : for any : x, y, rem, quo (W HILE.Inv + T erm ((quo y + rem = x 0 rem y rem (rem = T 1 ( ( (quo + 1 y + (rem y = x 0 (rem y (rem y < T 1 (W HILE.F inal ((quo y + rem = x 0 rem (y rem (quo y + rem = x 0 rem rem < y (W HILE.T erm ( (quo y + rem = x 0 rem y rem rem 0 (Init x 0 y > 0 (0 y + x = x 0 x Division is the label of the lemma, and W HILE.T erm, etc. are the labels of the individual formulae. Using this labels one can further make reference to these formulae, for instance one can call a Theorema prover in order to check whether they hold: P rove[lemma[ Division ]] The program V CG generates the verification conditions using Hoare Logic and the weakest precondition strategy in the classical way. For instance, the conditions for W HILE are generated using the rule: {P} while C do S endwhile {Q}, is correct if: (Init P I (WHILE.Term (I C T 0 (WHILE.Inv+Term {I C (T= T 1 } S {I (T < T 1 } (WHILE.Final (I C Q where I is a Loop-Invariant, T is a Termination Term and T 1 is a new variable. Another interesting situation for program verification is the generation of verification conditions for f unction calls. Consider a simple example in Theorema 143
5 which uses the maximum of two numbers: (*the specification of the function Max* Specification[ Max, m = Max[ x, y], P re (IsInteger[x] IsInteger[y], P ost (m = x x y (m = y y > x] (*the specification of the program and the source code* Specification[ Calculus, Calc[ a, b, y, x], P re (IsInteger[a] IsInteger[b], ( P ost (x (y + a (x (y + b ] P rogram[ Calculus, Calc[ a, b, y, x], x := y + Max[a, b]] In a previous version of VCG, expressions containing function calls were not handled differently than other expressions in a program. Thus the function symbols occurring in the calls were simply inserted into verification conditions, as in the example: VCG[Program["Calculus"],Specification["Calculus"]] Lemma(Calculus : forany : a, b, y, x (Init IsInteger[a] IsInteger[b] y + Max[a, b] y + a y + Max[a, b] y + b An automatic prover will need additional information about the function Max (the specification of the function. It may be better to use the following verification rule for function calls: {P X T, U A A,b (Q X T, U A, F (T, U b V U A, c b } c = F(T, U {V} where: 144
6 P and Q are the pre- and post-condition of the function F, X and U denote the sequences of formal input and transient parameters respectively, T and U denote the sequences of actual input terms and transient variables respectively, A is a sequence of new variables (one for each transient parameter in U b is a new variable. Thus, the information from the specification of the function is inserted into the lemmas. When a prover starts to prove the lemma it does not have to search in the knowledge base for additional information. For instance, the previous example will look as follows: VCG[Program["Calculus"],Specification["Calculus"]] Lemma(Calculus : for any : a, b, y, x (Init IsInteger[a] IsInteger[b] ( IsInteger[a] IsInteger[b] x1 ((x1 = a a b (x1 = b b > a y + x1 y + a y + x1 y + b The verification of programs with procedure (function calls is conceived hierarchically: the properties of the called objects have to be proven separately. 3. Generation of Loop Invariants We are developing a method based on recurrence equation solvers that provides the possibility of proving automatically correctness of programs which have loops, without asking the user to give necessary annotations (i.e. invariants, termination terms. A hidden problem in the theoretical treatment of the invariant is the fact that in most practical situations it will also contain information about other parts of the program, which is not related to the respective loop. We are separating the specific information from the non-specific one by an analysis of the free variables and other characteristics which are easy to detect automatically. Consider the Division program presented in section 1. If the user does not specify the loop invariant, then we find it as follows: From the body of the loop, we obtain the following recursion equations: quo 0 := 0; quo k+1 quo k = 1 rem 0 := x; rem k+1 rem k = y 145
7 , These recursive equations are solved by the Gosper-Zeilberger algorithm (see e. g. [8]. Namely, we use the Paule-Schorn [11] implementation in Mathematica which is already embedded in the Theorema system. We obtain the explicit equations: quo 0 := 0; quo k := quo 0 + k rem 0 := x; rem k := rem 0 k y. From these equations we eliminate k by calling the appropriate routine from Mathematica, and we obtain the invariant: rem = x quo y Some additional information which should be embedded in the loop invariant, namely conditions on the output parameters is extracted from the condition and the postcondition of the loop. Hence, for the considered example, the produced verification conditions using the generated loop invariant are exactly the same as the ones presented in section 2. In the case of F or loop, the generation of the loop invariant is done in the same manner, but we use additionally the explicit equation for the counter of the F or loop: counter k := counter 0 + k steps. Note also that by using the explicit expressions of the recursively modified variables, it is relatively easy to analyze the termination of the loop. For instance, in the division example, checking whether the loop terminates reduces to solving the inequality: y > rem k that is: which gives: y > (x ky k x/y. This shows that the loop terminates, but also gives the number of iterations. Conclusions and Further Work Combined with a practically oriented version of the theoretical frame of Hoare- Logic, Theorema provides readable arguments for the correctness of programs, as well as useful hints for debugging. Moreover, it is apparent that the use of algebraic computations (summation methods, variable elimination is a promising approach to analysis of loops. 146
8 Another necessary continuation of this work is the analysis of programs containing recursive calls. We are currently investigating the theoretical framework and we are designing the methods for extracting the verification conditions this type of programs. References [1] ***. PStndfor Pascal Verifier - User Manual. Computer Science Department, Stanford University, [2] J. Barnes. High Integrity Software - The Spark Approach to Safety and Security. Addison-Wesley, [3] B. Buchberger et al. The theorema project: A progress report. In M. Kerber and M. Kohlhase, editors, Calculemus 2000: Integration of Symbolic Computation and Mechanized Reasoning. A. K. Peters, Natick, Massatchussets, [4] G. Futschek. Programmentwicklung und Verifikation. Springer, [5] D. Gries. The Science of Programming. Springer, [6] C. A. R. Hoare. An axiomatic basis for computer programming. Comm. ACM, 12, [7] M. Kirchner. Program verification with the mathematical software system theorema. Technical Report 99-16, RISC-Linz, Austria, PhD Thesis. [8] D. E. Knuth. The Art of Computer Programming, volume 2 / Seminumerical Algorithms. Addison-Wesley, 2nd edition, [9] B. Buchberger; F. Lichtenberger. Mathematics for Computer Science I - The Method of Mathematics. (German.. Springer, Berlin, Heidelberg, New York, 315 pages, 2nd edition, (First Edition [10] K. Nakagawa. Logico-grafic symbols in theorema. In LMCS 02 (Logic, Mathematics, and Computer Science: Interactions, RISC-Linz technical report [11] P. Paule; M. Schorn. A Mathematica version of Zeilberger s algorithm for proving binomial coefficient identities - A description how to use it. Technical Report 93-36, RISC-Linz Report Series, [12] S. Wolfram. The Mathematica Book, 3rd ed. Wolfram Media / Cambridge University Press,
Automated Theorem Proving - summary of lecture 1
Automated Theorem Proving - summary of lecture 1 1 Introduction Automated Theorem Proving (ATP) deals with the development of computer programs that show that some statement is a logical consequence of
How To Write A Program Verification And Programming Book
Jose Bacelar Almeida Maria Joao Frade Jorge Sousa Pinto Simao Melo de Sousa Rigorous Software Development An Introduction to Program Verification & Springer Contents 1 Introduction 1 1.1 A Formal Approach
Chair of Software Engineering. Software Verification. Assertion Inference. Carlo A. Furia
Chair of Software Engineering Software Verification Assertion Inference Carlo A. Furia Proving Programs Automatically The Program Verification problem: Given: a program P and a specification S = [Pre,
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
AUTOMATED PROOF OF GEOMETRY THEOREMS INVOLVING ORDER RELATION IN THE FRAME OF THE THEOREMA PROJECT
KNOWLEDGE ENGINEERING: PRINCIPLES AND TECHNIQUES Proceedings of the International Conference on Knowledge Engineering, Principles and Techniques, KEPT2007 Cluj-Napoca (Romania), June 6 8, 2007, pp. 307
Rigorous Software Engineering Hoare Logic and Design by Contracts
Rigorous Software Engineering Hoare Logic and Design by Contracts Simão Melo de Sousa RELEASE (UBI), LIACC (Porto) Computer Science Department University of Beira Interior, Portugal 2010-2011 S. Melo de
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers
Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers TIMOTHY S. GEGG-HARRISON Winona State University Although computer scientists understand the importance of discrete
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE
International Journal of Computer ScienceandCommunication Vol. 2, No. 1, January-June2011, pp. 153-157 PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE Neeraj Kumar Singhania University,
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Algorithms are the threads that tie together most of the subfields of computer science.
Algorithms Algorithms 1 Algorithms are the threads that tie together most of the subfields of computer science. Something magically beautiful happens when a sequence of commands and decisions is able to
A Framework for the Semantics of Behavioral Contracts
A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK [email protected] Abstract. Contracts have proved a powerful concept
Is Sometime Ever Better Than Alway?
Is Sometime Ever Better Than Alway? DAVID GRIES Cornell University The "intermittent assertion" method for proving programs correct is explained and compared with the conventional method. Simple conventional
Verifying Specifications with Proof Scores in CafeOBJ
Verifying Specifications with Proof Scores in CafeOBJ FUTATSUGI, Kokichi 二 木 厚 吉 Chair of Language Design Graduate School of Information Science Japan Advanced Institute of Science and Technology (JAIST)
Theorema 2.0 : A Graphical User Interface for a Mathematical Assistant System
Theorema 2.0 : A Graphical User Interface for a Mathematical Assistant System Wolfgang Windsteiger RISC, JKU Linz 4232 Hagenberg, Austria [email protected] www.risc.jku.at/home/wwindste/
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
Formal Verification of Software
Formal Verification of Software Sabine Broda Department of Computer Science/FCUP 12 de Novembro de 2014 Sabine Broda (DCC-FCUP) Formal Verification of Software 12 de Novembro de 2014 1 / 26 Formal Verification
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java Jesús Mauricio Chimento 1, Wolfgang Ahrendt 1, Gordon J. Pace 2, and Gerardo Schneider 3 1 Chalmers University of Technology, Sweden.
Lecture Notes on Polynomials
Lecture Notes on Polynomials Arne Jensen Department of Mathematical Sciences Aalborg University c 008 Introduction These lecture notes give a very short introduction to polynomials with real and complex
Math 55: Discrete Mathematics
Math 55: Discrete Mathematics UC Berkeley, Fall 2011 Homework # 5, due Wednesday, February 22 5.1.4 Let P (n) be the statement that 1 3 + 2 3 + + n 3 = (n(n + 1)/2) 2 for the positive integer n. a) What
A Propositional Dynamic Logic for CCS Programs
A Propositional Dynamic Logic for CCS Programs Mario R. F. Benevides and L. Menasché Schechter {mario,luis}@cos.ufrj.br Abstract This work presents a Propositional Dynamic Logic in which the programs are
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
CHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
3 Extending the Refinement Calculus
Building BSP Programs Using the Refinement Calculus D.B. Skillicorn? Department of Computing and Information Science Queen s University, Kingston, Canada [email protected] Abstract. We extend the
FPGA Implementation of an Extended Binary GCD Algorithm for Systolic Reduction of Rational Numbers
FPGA Implementation of an Extended Binary GCD Algorithm for Systolic Reduction of Rational Numbers Bogdan Mătăsaru and Tudor Jebelean RISC-Linz, A 4040 Linz, Austria email: [email protected]
CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing
CS Master Level Courses and Areas The graduate courses offered may change over time, in response to new developments in computer science and the interests of faculty and students; the list of graduate
Probability Using Dice
Using Dice One Page Overview By Robert B. Brown, The Ohio State University Topics: Levels:, Statistics Grades 5 8 Problem: What are the probabilities of rolling various sums with two dice? How can you
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT?
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainly
Summary Last Lecture. Automated Reasoning. Outline of the Lecture. Definition sequent calculus. Theorem (Normalisation and Strong Normalisation)
Summary Summary Last Lecture sequent calculus Automated Reasoning Georg Moser Institute of Computer Science @ UIBK Winter 013 (Normalisation and Strong Normalisation) let Π be a proof in minimal logic
3. Mathematical Induction
3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)
Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
Theory of Automated Reasoning An Introduction. Antti-Juhani Kaijanaho
Theory of Automated Reasoning An Introduction Antti-Juhani Kaijanaho Intended as compulsory reading for the Spring 2004 course on Automated Reasononing at Department of Mathematical Information Technology,
Foundational Proof Certificates
An application of proof theory to computer science INRIA-Saclay & LIX, École Polytechnique CUSO Winter School, Proof and Computation 30 January 2013 Can we standardize, communicate, and trust formal proofs?
WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math
Textbook Correlation WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math Following Directions Unit FIRST QUARTER AND SECOND QUARTER Logic Unit
Lecture Notes on Linear Search
Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 29, 2013 1 Introduction One of the fundamental and recurring problems in computer science is
Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2
CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2 Proofs Intuitively, the concept of proof should already be familiar We all like to assert things, and few of us
Functional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
Certified Computer Algebra on top of an Interactive Theorem Prover
Certified Computer Algebra on top of an Interactive Theorem Prover Cezary Kaliszyk and Freek Wiedijk {cek,freek}@cs.ru.nl Institute for Computing and Information Sciences, Radboud University Nijmegen,
Termination Checking: Comparing Structural Recursion and Sized Types by Examples
Termination Checking: Comparing Structural Recursion and Sized Types by Examples David Thibodeau Decemer 3, 2011 Abstract Termination is an important property for programs and is necessary for formal proofs
Introduction. Appendix D Mathematical Induction D1
Appendix D Mathematical Induction D D Mathematical Induction Use mathematical induction to prove a formula. Find a sum of powers of integers. Find a formula for a finite sum. Use finite differences to
Notes from Week 1: Algorithms for sequential prediction
CS 683 Learning, Games, and Electronic Markets Spring 2007 Notes from Week 1: Algorithms for sequential prediction Instructor: Robert Kleinberg 22-26 Jan 2007 1 Introduction In this course we will be looking
Formal Engineering for Industrial Software Development
Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3
Institut für Parallele und Verteilte Systeme. Abteilung Anwendersoftware. Universität Stuttgart Universitätsstraße 38 D-70569 Stuttgart
Institut für Parallele und Verteilte Systeme Abteilung Anwendersoftware Universität Stuttgart Universitätsstraße 38 D-70569 Stuttgart Diplomarbeit Nr. 3243 Development and Evaluation of a Framework for
Automated Program Behavior Analysis
Automated Program Behavior Analysis Stacy Prowell [email protected] March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is
PRIME FACTORS OF CONSECUTIVE INTEGERS
PRIME FACTORS OF CONSECUTIVE INTEGERS MARK BAUER AND MICHAEL A. BENNETT Abstract. This note contains a new algorithm for computing a function f(k) introduced by Erdős to measure the minimal gap size in
Integrating MBD and CBD Workflows for Automotive Control Software
Integrating MBD and CBD Workflows for Automotive Control Software V. B. Singh, Ajinkya Bhave, Dhvinay P V, Dilli Atturu Siemens Industry Software (India) Private Limited., SKCL Central Square - 1, Guindy
Stochastic Inventory Control
Chapter 3 Stochastic Inventory Control 1 In this chapter, we consider in much greater details certain dynamic inventory control problems of the type already encountered in section 1.3. In addition to the
MCS 563 Spring 2014 Analytic Symbolic Computation Wednesday 9 April. Hilbert Polynomials
Hilbert Polynomials For a monomial ideal, we derive the dimension counting the monomials in the complement, arriving at the notion of the Hilbert polynomial. The first half of the note is derived from
Undergraduate Notes in Mathematics. Arkansas Tech University Department of Mathematics
Undergraduate Notes in Mathematics Arkansas Tech University Department of Mathematics An Introductory Single Variable Real Analysis: A Learning Approach through Problem Solving Marcel B. Finan c All Rights
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Language-oriented Software Development and Rewriting Logic
Language-oriented Software Development and Rewriting Logic Christiano Braga [email protected] http://www.ic.uff.br/ cbraga Universidade Federal Fluminense (UFF) Language-oriented Software Development and
Collatz Sequence. Fibbonacci Sequence. n is even; Recurrence Relation: a n+1 = a n + a n 1.
Fibonacci Roulette In this game you will be constructing a recurrence relation, that is, a sequence of numbers where you find the next number by looking at the previous numbers in the sequence. Your job
CHAPTER II THE LIMIT OF A SEQUENCE OF NUMBERS DEFINITION OF THE NUMBER e.
CHAPTER II THE LIMIT OF A SEQUENCE OF NUMBERS DEFINITION OF THE NUMBER e. This chapter contains the beginnings of the most important, and probably the most subtle, notion in mathematical analysis, i.e.,
F. ABTAHI and M. ZARRIN. (Communicated by J. Goldstein)
Journal of Algerian Mathematical Society Vol. 1, pp. 1 6 1 CONCERNING THE l p -CONJECTURE FOR DISCRETE SEMIGROUPS F. ABTAHI and M. ZARRIN (Communicated by J. Goldstein) Abstract. For 2 < p
CS510 Software Engineering
CS510 Software Engineering Propositional Logic Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se
Random vs. Structure-Based Testing of Answer-Set Programs: An Experimental Comparison
Random vs. Structure-Based Testing of Answer-Set Programs: An Experimental Comparison Tomi Janhunen 1, Ilkka Niemelä 1, Johannes Oetsch 2, Jörg Pührer 2, and Hans Tompits 2 1 Aalto University, Department
Catalan Numbers. Thomas A. Dowling, Department of Mathematics, Ohio State Uni- versity.
7 Catalan Numbers Thomas A. Dowling, Department of Mathematics, Ohio State Uni- Author: versity. Prerequisites: The prerequisites for this chapter are recursive definitions, basic counting principles,
The ProB Animator and Model Checker for B
The ProB Animator and Model Checker for B A Tool Description Michael Leuschel and Michael Butler Department of Electronics and Computer Science University of Southampton Highfield, Southampton, SO17 1BJ,
Reverse Literate Programming
Reverse Literate Programming Markus Knasmüller Johannes Kepler University Linz Altenbergerstraße 39 Linz, 4040, Austria Tel. +43 732 2468 7133 Fax +43 732 2468 7138 Internet [email protected]
NEW YORK STATE TEACHER CERTIFICATION EXAMINATIONS
NEW YORK STATE TEACHER CERTIFICATION EXAMINATIONS TEST DESIGN AND FRAMEWORK September 2014 Authorized for Distribution by the New York State Education Department This test design and framework document
Jieh Hsiang Department of Computer Science State University of New York Stony brook, NY 11794
ASSOCIATIVE-COMMUTATIVE REWRITING* Nachum Dershowitz University of Illinois Urbana, IL 61801 N. Alan Josephson University of Illinois Urbana, IL 01801 Jieh Hsiang State University of New York Stony brook,
MEng, BSc Applied Computer Science
School of Computing FACULTY OF ENGINEERING MEng, BSc Applied Computer Science Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give a machine instructions
Mathematics Cognitive Domains Framework: TIMSS 2003 Developmental Project Fourth and Eighth Grades
Appendix A Mathematics Cognitive Domains Framework: TIMSS 2003 Developmental Project Fourth and Eighth Grades To respond correctly to TIMSS test items, students need to be familiar with the mathematics
Chapter 4 Software Lifecycle and Performance Analysis
Chapter 4 Software Lifecycle and Performance Analysis This chapter is aimed at illustrating performance modeling and analysis issues within the software lifecycle. After having introduced software and
Structure of Presentation. Stages in Teaching Formal Methods. Motivation (1) Motivation (2) The Scope of Formal Methods (1)
Stages in Teaching Formal Methods A. J. Cowling Structure of Presentation Introduction to Issues Motivation for this work. Analysis of the Role of Formal Methods Define their scope; Review their treatment
Algebra Unpacked Content For the new Common Core standards that will be effective in all North Carolina schools in the 2012-13 school year.
This document is designed to help North Carolina educators teach the Common Core (Standard Course of Study). NCDPI staff are continually updating and improving these tools to better serve teachers. Algebra
Relations: their uses in programming and computational specifications
PEPS Relations, 15 December 2008 1/27 Relations: their uses in programming and computational specifications Dale Miller INRIA - Saclay & LIX, Ecole Polytechnique 1. Logic and computation Outline 2. Comparing
Second Order Differential Equations with Hypergeometric Solutions of Degree Three
Second Order Differential Equations with Hypergeometric Solutions of Degree Three Vijay Jung Kunwar, Mark van Hoeij Department of Mathematics, Florida State University Tallahassee, FL 0-07, USA vkunwar@mathfsuedu,
FACTORING LARGE NUMBERS, A GREAT WAY TO SPEND A BIRTHDAY
FACTORING LARGE NUMBERS, A GREAT WAY TO SPEND A BIRTHDAY LINDSEY R. BOSKO I would like to acknowledge the assistance of Dr. Michael Singer. His guidance and feedback were instrumental in completing this
Continued Fractions and the Euclidean Algorithm
Continued Fractions and the Euclidean Algorithm Lecture notes prepared for MATH 326, Spring 997 Department of Mathematics and Statistics University at Albany William F Hammond Table of Contents Introduction
Peter V. Homeier and David F. Martin. [email protected] and [email protected]
A Mechanically Veried Verication Condition Generator Peter V. Homeier and David F. Martin Computer Science Department, University of California, Los Angeles 90024 USA [email protected] and [email protected]
Kolmogorov Complexity and the Incompressibility Method
Kolmogorov Complexity and the Incompressibility Method Holger Arnold 1. Introduction. What makes one object more complex than another? Kolmogorov complexity, or program-size complexity, provides one of
Unified Static and Runtime Verification of Object-Oriented Software
Unified Static and Runtime Verification of Object-Oriented Software Wolfgang Ahrendt 1, Mauricio Chimento 1, Gerardo Schneider 2, Gordon J. Pace 3 1 Chalmers University of Technology, Gothenburg, Sweden
So let us begin our quest to find the holy grail of real analysis.
1 Section 5.2 The Complete Ordered Field: Purpose of Section We present an axiomatic description of the real numbers as a complete ordered field. The axioms which describe the arithmetic of the real numbers
FACTORING POLYNOMIALS IN THE RING OF FORMAL POWER SERIES OVER Z
FACTORING POLYNOMIALS IN THE RING OF FORMAL POWER SERIES OVER Z DANIEL BIRMAJER, JUAN B GIL, AND MICHAEL WEINER Abstract We consider polynomials with integer coefficients and discuss their factorization
Mathematics (MAT) MAT 061 Basic Euclidean Geometry 3 Hours. MAT 051 Pre-Algebra 4 Hours
MAT 051 Pre-Algebra Mathematics (MAT) MAT 051 is designed as a review of the basic operations of arithmetic and an introduction to algebra. The student must earn a grade of C or in order to enroll in MAT
DELAWARE MATHEMATICS CONTENT STANDARDS GRADES 9-10. PAGE(S) WHERE TAUGHT (If submission is not a book, cite appropriate location(s))
Prentice Hall University of Chicago School Mathematics Project: Advanced Algebra 2002 Delaware Mathematics Content Standards (Grades 9-10) STANDARD #1 Students will develop their ability to SOLVE PROBLEMS
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
MEng, BSc Computer Science with Artificial Intelligence
School of Computing FACULTY OF ENGINEERING MEng, BSc Computer Science with Artificial Intelligence Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give
A Tool for Generating Partition Schedules of Multiprocessor Systems
A Tool for Generating Partition Schedules of Multiprocessor Systems Hans-Joachim Goltz and Norbert Pieth Fraunhofer FIRST, Berlin, Germany {hans-joachim.goltz,nobert.pieth}@first.fraunhofer.de Abstract.
Runtime Verification of Computer Programs and its Application in Programming Education
Runtime Verification of Computer Programs its Application in Programming Education Magdalina V. Todorova, Petar R. Armyanov Abstract The paper presents a technique for runtime program verification its
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques Sean Thorpe 1, Indrajit Ray 2, and Tyrone Grandison 3 1 Faculty of Engineering and Computing,
Overview. Essential Questions. Precalculus, Quarter 4, Unit 4.5 Build Arithmetic and Geometric Sequences and Series
Sequences and Series Overview Number of instruction days: 4 6 (1 day = 53 minutes) Content to Be Learned Write arithmetic and geometric sequences both recursively and with an explicit formula, use them
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving Alessandro Armando 1,2 and Silvio Ranise 2, 1 DIST, Università degli Studi di Genova, Italia 2 Security
Boogie: A Modular Reusable Verifier for Object-Oriented Programs
Boogie: A Modular Reusable Verifier for Object-Oriented Programs M. Barnett, B.E. Chang, R. DeLine, B. Jacobs, K.R.M. Leino Lorenzo Baesso ETH Zurich Motivation Abstract Domains Modular Architecture Automatic
