VDM-10 Language Manual

VDM-10 Language Manual

Overture Technical Report Series No. TR-001 May 2020 VDM-10 Language Manual by Peter Gorm Larsen Kenneth Lausdahl Nick Battle John Fitzgerald Sune Wolff Shin Sahara Marcel Verhoef Peter W. V. Tran-Jørgensen Tomohiro Oda Paul Chisholm Overture – Open-source Tools for Formal Modelling VDM-10 Language Manual Document history Month Year Version Version of Overture.exe Comment April 2010 0.2 May 2010 1 0.2 February 2011 2 1.0.0 July 2012 3 1.2.2 April 2013 4 2.0.0 March 2014 5 2.0.4 Includes RMs #16, #17, #18, #20 November 2014 6 2.1.2 Includes RMs #25, #26, #29 August 2015 7 2.3.0 Includes RMs #27 April 2016 8 2.3.4 Review inputs from Paul Chisholm September 2016 9 2.4.0 RMs #35, #36 May 2017 10 2.5.0 RM #39 Feb 2018 11 2.6.0 Includes RM #42 May 2020 12 2.7.4 Includes RM #44,#47,#48 ii Contents 1 Introduction 1 1.1 The VDM Specification Language (VDM-SL) . .1 1.2 The VDM++ Language . .1 1.3 The VDM Real Time Language (VDM-RT) . .2 1.4 Purpose of The Document . .2 1.5 Structure of the Document . .2 2 Concrete Syntax Notation 3 3 Data Type Definitions 5 3.1 Basic Data Types . .5 3.1.1 The Boolean Type . .6 3.1.2 The Numeric Types . .8 3.1.3 The Character Type . 11 3.1.4 The Quote Type . 11 3.1.5 The Token Type . 12 3.2 Compound Types . 12 3.2.1 Set Types . 13 3.2.2 Sequence Types . 15 3.2.3 Map Types . 18 3.2.4 Product Types . 22 3.2.5 Composite Types . 23 3.2.6 Union and Optional Types . 26 3.2.7 The Object Reference Type (VDM++ and VDM-RT) . 28 3.2.8 Function Types . 29 3.3 Invariants . 31 3.4 Equality . 32 3.5 Order . 35 4 Algorithm Definitions 39 iii VDM-10 Language Manual 5 Function Definitions 41 5.1 Polymorphic Functions . 47 5.2 Higher Order Functions . 49 6 Expressions 51 6.1 Let Expressions . 51 6.2 The Define Expression . 54 6.3 Unary and Binary Expressions . 55 6.4 Conditional Expressions . 56 6.5 Quantified Expressions . 58 6.6 The Iota Expression . 60 6.7 Set Expressions . 61 6.8 Sequence Expressions . 63 6.9 Map Expressions . 65 6.10 Tuple Constructor Expressions . 66 6.11 Record Expressions . 66 6.12 Apply Expressions . 68 6.13 The New Expression (VDM++ and VDM-RT) . 69 6.14 The Self Expression (VDM++ and VDM-RT) . 70 6.15 The Threadid Expression (VDM++ and VDM-RT) . 71 6.16 The Lambda Expression . 72 6.17 Narrow Expressions . 73 6.18 Is Expressions . 76 6.19 Base Class Membership (VDM++ and VDM-RT) . 76 6.20 Class Membership . 77 6.21 Same Base Class Membership (VDM++ and VDM-RT) . 77 6.22 Same Class Membership (VDM++ and VDM-RT) . 78 6.23 History Expressions (VDM++ and VDM-RT) . 78 6.24 The Time Expression (VDM-RT) . 80 6.25 Literals and Names . 80 6.26 The Undefined Expression . 82 6.27 The Precondition Expression . 83 7 Patterns 85 7.1 Object Pattern (VDM++ and VDM-RT) . 90 8 Bindings 93 9 Value (Constant) Definitions 95 10 Declaration of Modifiable State Components 97 10.1 Instance Variables (VDM++ and VDM-RT) . 97 10.2 The State Definition (VDM-SL) . 99 iv CONTENTS 11 Operation Definitions 101 11.1 Constructors (VDM++ and VDM-RT) . 108 12 Statements 109 12.1 Let Statements . 109 12.2 The Define Statement . 111 12.3 The Block Statement . 112 12.4 The Assignment Statement . 113 12.5 Conditional Statements . 117 12.6 For-Loop Statements . 119 12.7 The While-Loop Statement . 121 12.8 The Nondeterministic Statement . 122 12.9 The Call Statement . 124 12.10The Return Statement . 127 12.11Exception Handling Statements . 127 12.12The Error Statement . 130 12.13The Identity Statement . 131 12.14Start and Start List Statements (VDM++ and VDM-RT) . 132 12.15Stop and Stop List Statements (VDM++ and VDM-RT) . 133 12.16The Specification Statement . 134 12.17The Duration Statement (VDM-RT) . 135 12.18The Cycles Statement (VDM-RT) . 137 13 Top-level Specification in VDM 139 13.1 Top-level Specification in VDM-SL . 139 13.1.1 A Flat Specification . 139 13.1.2 A Structured Specification . 141 13.2 Top-level Specification in VDM++ and VDM-RT . 148 13.3 System (VDM-RT) . 148 13.3.1 Classes . 151 13.3.2 Inheritance . 153 13.3.3 Interface and Availability of Class Members . 155 14 Synchronization Constraints (VDM++ and VDM-RT) 161 14.1 Permission Predicates . 162 14.1.1 History guards . 163 14.1.2 The object state guard . 164 14.1.3 Queue condition guards . 165 14.1.4 Evaluation of Guards . 166 14.2 Inheritance of Synchronization Constraints . 166 14.2.1 Mutex constraints . 166 v VDM-10 Language Manual 15 Threads (VDM++ and VDM-RT) 169 15.1 Periodic Thread Definitions (VDM-RT) . 169 15.2 Sporadic Thread Definitions (VDM-RT) . 172 15.3 Procedural Thread Definitions (VDM++ and VDM-RT) . 173 16 Trace Definitions 177 A The Syntax of the VDM Languages 185 A.1 VDM-SL Document . 185 A.1.1 Modules . 185 A.2 VDM++ and VDM-RT Document . 187 A.3 System (VDM-RT) . 187 A.3.1 Classes . 187 A.4 Definitions . 187 A.4.1 Type Definitions . ..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    241 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us