1 Install & Run Dafny

Total Page:16

File Type:pdf, Size:1020Kb

1 Install & Run Dafny 15-414 Installing Dafny 1 Instructor: Matt Fredrikson TA: Ryan Wagner 1 Install & Run Dafny You will need to use the Dafny verifier and compiler to complete this assignment, which means that you will not be able to use Dafny's online interface. For this, you have two options: 1) use the virtual machine image provided by the course staff, or 2) install Dafny on your machine. Installing on Windows. Windows is the easiest platform to use with Dafny. Note that you can always use a Windows instance through Virtual Andrew, or by installing a virtual machine and using the Dreamspark account the university has provided you to download Windows. For more information on Virtual Andrew, visit: http://www.cmu.edu/computing/tes/computer-labs/software/virtualandrew/index.html For more information on Dreamspark, visit: https://www.cmu.edu/computing/software/all/dreamspark 1. Download the binary release archive from https://github.com/Microsoft/dafny/releases. Be sure to select the right file; it should be named Dafny.1.9.7.for.Windows.zip. 2. Right-click on the archive, select \Properties", and check the \Unblock" box at the bottom of the dialog. Click OK. 3. Open the archive file, and move its contents (which should be a folder named dafny) to a convenient location on your filesystem. 4. Open a command prompt, navigate to the dafny directory, and execute Dafny.exe. Installing on Linux or MacOS. Running Dafny on Linux or MacOS is possible, but requires installing the mono framework first if you do not already have it. 1. Determine whether you have Mono installed. To do this, open a prompt, and type mono -V. 2. If you don't have Mono installed, follow the instructions at http://www.mono-project.com/ docs/getting-started/install/. 3. Download the binary release archive from https://github.com/Microsoft/dafny/releases. Be sure to select the right file; it should be named Dafny.1.9.7.for.Mac.OSX.zip if you are using a Mac, or a similar filename for the Linux distribution that you use. 4. Unpack the archive file, and move its contents (which should be a folder named dafny) to a convenient location on your filesystem. 5. Add an alias for the command: alias dafny="mono /path/to/dafny/Dafny.exe". This will simplify running Dafny from the prompt. 6. Open a prompt, navigate to the dafny directory, and execute mono Dafny.exe. 1 15-414 Installing Dafny 2 All Platforms (after install). After running Dafny.exe, you should see the following text: *** Error: No input files were specified. Now create a file named test.dfy, and add the following code: 1 method Abs(x: int) returns (x': int) 2 ensures x' >= 0 3 ensures (x < 0 && x' == -1*x) || (x' ==x) 4 { 5 x' := x; 6 if(x' < 0) { x' := x' * -1; } 7 } and run: Dafny.exe test.dfy Note that if you are on Mac or Linux, you will need to prefix this command with mono. Make sure that test.dll appears in your working directory, and that you see the following output: Dafny program verifier version 1.9.7.30401, Copyright (c) 2003-2016, Microsoft . Dafny program verifier finished with 2 verified, 0 errors Compiled assembly into test.dll If you do not see this, contact the course staff as soon as possible. Optional: Syntax Highlighting. As an additional step to make development in Dafny more palatable, consider installing syntax highlighting for your preferred editor. There is currently support for the following editors: Emacs: To install support for Emacs, consult https://github.com/boogie-org/boogie-friends. Vim: To install support for Vim, see https://github.com/mlr-msft/vim-loves-dafny. Sublime Text 2: To install support for Sublime, see https://github.com/erggo/sublime-dafny. Visual Studio (Windows only): The Dafny extension for Visual Studio supports syntax high- lighting and incremental verification. Obtain Visual Studio 2012 (note: I have not tested with newer versions) from Dreamspark (see above for the link), install it, and when finished, run DafnyLanguageService.vsix from the Dafny binary distribution file. Dafny mode will become active when you open a file with extension .dfy in Visual Studio. 2.
Recommended publications
  • Ironpython in Action
    IronPytho IN ACTION Michael J. Foord Christian Muirhead FOREWORD BY JIM HUGUNIN MANNING IronPython in Action Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> IronPython in Action MICHAEL J. FOORD CHRISTIAN MUIRHEAD MANNING Greenwich (74° w. long.) Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. Sound View Court 3B fax: (609) 877-8256 Greenwich, CT 06830 email: [email protected] ©2009 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15% recycled and processed without the use of elemental chlorine.
    [Show full text]
  • Opening Presentation
    Mono Meeting. Miguel de Icaza [email protected] October 24, 2006 Mono, Novell and the Community. Mono would not exist without the community: • Individual contributors. • Companies using Mono. • Organizations using Mono. • Companies using parts of Mono. • Google Summer of Code. Introductions. 2 Goals of the Meeting. A chance to meet. • Most of the Novell/Mono team is here. • Many contributors are here. • Various breaks to talk. Talk to others! • Introduce yourself, ask questions. Talk to us! • Frank Rego, Mono's Product Manager is here. • Tell us what you need in Mono. • Tell us about how you use Mono. 3 Project Status Goals Originally: • Improve our development platform on Linux. As the community grew: • Expand to support Microsoft APIs. As Mono got more complete: • Provide a complete cross platform runtime. • Allow Windows developers to port to Linux. 5 Mono Stacks and Goals. MySMQySQLL//PPosstgtrgesrsess EvEovolluutitioonn# # ASP.NET Novell APIs: MMoozzillala Novell iFolder iFolder, LDAP, Identity ADO.NET ApAapchachee MMonoono DesktoGpTK#: GTK# OpNoevenlOl LfDfAiPce GCneomceil# Windows.Forms JavaJa vCa oCommpaatitbilbitiylity Google APIs Microsoft Compatibility Libraries Mono Libraries Mono Runtime (Implementation of ECMA #335) 6 Platforms, CIL, Code Generation. 7 API space Mono 1.0: July 2004 “T-Bone” Mono 1.2: November 2006 “Rump steak” Mono 1.2 bits. Reliability and C# 2.0, .NET 2.0 scalability: • Complete. • With VM support. • ZenWorks and iFolder • Some 2.0 API support. pushed Mono on the server. • IronPython works. • xsp 1.0: 8 request/second. • xsp 1.2: 250 Debugger: request/second. • x86 and x86-64 debugger. GUI • CLI-only, limited in scenarios (no xsp).
    [Show full text]
  • Visual Studio Code
    Visual Studio Code What is Visual Studio Code? Any programme / software that we see or use, works on the code that runs in the background. Traditionally coding used to done in the traditional editors or even in the basic editors like notepad ! These editors used to provide basic support to the coders. Some of them, so were so basic that it was very difficult in writing basic English level programmes in them. As the time-went by, some programming languages needed specific framework and support for further coding and development in it, which was not possible using these editors. VI Editor, Sublime Text Editor and Visual Studio Code are one of the many kinds of editors that came into existence. The most prominent and which supports almost every coding language is VISUAL STUDIO CODE. Visual Studio Code features let user modify the editor as per the usage, which means, user is able to download the libraries from the internet and integrate it with the code as per his requirements. Visual Studio Code Definition and understanding it Visual Studio Code is a code editor in layman’s terms. To define it, Visual Studio Code is, “a free-editor which helps the programmer to write a code, helps in debugging and corrects the code using the intelli- sense method ”. In normal terms, it facilitates user to write the code in easy manner. Many people say that it is half of an IDE and an editor; but the decision is upto to the coders. What Visual Studio Code can do Visual Studio Code has some very unique features.
    [Show full text]
  • Metadefender Core V4.12.2
    MetaDefender Core v4.12.2 © 2018 OPSWAT, Inc. All rights reserved. OPSWAT®, MetadefenderTM and the OPSWAT logo are trademarks of OPSWAT, Inc. All other trademarks, trade names, service marks, service names, and images mentioned and/or used herein belong to their respective owners. Table of Contents About This Guide 13 Key Features of Metadefender Core 14 1. Quick Start with Metadefender Core 15 1.1. Installation 15 Operating system invariant initial steps 15 Basic setup 16 1.1.1. Configuration wizard 16 1.2. License Activation 21 1.3. Scan Files with Metadefender Core 21 2. Installing or Upgrading Metadefender Core 22 2.1. Recommended System Requirements 22 System Requirements For Server 22 Browser Requirements for the Metadefender Core Management Console 24 2.2. Installing Metadefender 25 Installation 25 Installation notes 25 2.2.1. Installing Metadefender Core using command line 26 2.2.2. Installing Metadefender Core using the Install Wizard 27 2.3. Upgrading MetaDefender Core 27 Upgrading from MetaDefender Core 3.x 27 Upgrading from MetaDefender Core 4.x 28 2.4. Metadefender Core Licensing 28 2.4.1. Activating Metadefender Licenses 28 2.4.2. Checking Your Metadefender Core License 35 2.5. Performance and Load Estimation 36 What to know before reading the results: Some factors that affect performance 36 How test results are calculated 37 Test Reports 37 Performance Report - Multi-Scanning On Linux 37 Performance Report - Multi-Scanning On Windows 41 2.6. Special installation options 46 Use RAMDISK for the tempdirectory 46 3. Configuring Metadefender Core 50 3.1. Management Console 50 3.2.
    [Show full text]
  • Basic Guide: Using VIM Introduction: VI and VIM Are In-Terminal Text Editors That Come Standard with Pretty Much Every UNIX Op
    Basic Guide: Using VIM Introduction: VI and VIM are in-terminal text editors that come standard with pretty much every UNIX operating system. Our Astro computers have both. These editors are an alternative to using Emacs for editing and writing programs in python. VIM is essentially an extended version of VI, with more features, so for the remainder of this discussion I will be simply referring to VIM. (But if you ever do research and need to ssh onto another campus’s servers and they only have VI, 99% of what you know will still apply). There are advantages and disadvantages to using VIM, just like with any text editors. The main disadvantage of VIM is that it has a very steep learning curve, because it is operated via many keyboard shortcuts with somewhat obscure names like dd, dw, d}, p, u, :q!, etc. In addition, although VIM will do syntax highlighting for Python (ie, color code things based on what type of thing they are), it doesn’t have much intuitive support for writing long, extensive, and complex codes (though if you got comfortable enough you could conceivably do it). On the other hand, the advantage of VIM is once you learn how to use it, it is one of the most efficient ways of editing text. (Because of all the shortcuts, and efficient ways of opening and closing). It is perfectly reasonable to use a dedicated program like emacs, sublime, canopy, etc., for creating your code, and learning VIM as a way to edit your code on the fly as you try to run it.
    [Show full text]
  • PHP 7 Y Laravel
    PHP 7 y Laravel © All rights reserved. www.keepcoding.io 1. Introducción Nada suele ser tan malo como lo pintan © All rights reserved. www.keepcoding.io When people tell me PHP is not a real programming language http://thecodinglove.com/post/114654680296 © All rights reserved. www.keepcoding.io Quién soy • Alicia Rodríguez • Ingeniera industrial ICAI • Backend developer • @buzkall • buzkall.com http://buzkall.com © All rights reserved. www.keepcoding.io ¿Qué vamos a ver? • Instalación y desarrollo en local • PHP 7 • Laravel • Test unitarios • Cómo utilizar una API externa © All rights reserved. www.keepcoding.io ¿Qué sabremos al terminar? • PHP mola • Crear un proyecto de cero • Depurar y hacer test a nuestro código • Un poco de análisis técnico y bolsa © All rights reserved. www.keepcoding.io Seguridad Security is not a characteristic of a language as much as it is a characteristic of a developer Essential PHP Security. Chris Shiflett. O’Reilly © All rights reserved. www.keepcoding.io Popularidad en Stackoverflow http://stackoverflow.com/research/developer-survey-2016 © All rights reserved. www.keepcoding.io Popularidad en Github http://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/ © All rights reserved. www.keepcoding.io Frameworks por lenguaje https://hotframeworks.com/ © All rights reserved. www.keepcoding.io Su propia descripción • PHP is a popular general-purpose scripting language that is especially suited to web development. • Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. https://secure.php.net/ © All rights reserved. www.keepcoding.io Historia de PHP • Creado por Rasmus Lerdorf en 1995 como el conjunto de scripts "Personal Home Page Tools", referenciado como "PHP Tools”.
    [Show full text]
  • PHP Beyond the Web Shell Scripts, Desktop Software, System Daemons and More
    PHP Beyond the web Shell scripts, desktop software, system daemons and more Rob Aley This book is for sale at http://leanpub.com/php This version was published on 2013-11-25 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. ©2012 - 2013 Rob Aley Tweet This Book! Please help Rob Aley by spreading the word about this book on Twitter! The suggested hashtag for this book is #phpbeyondtheweb. Find out what other people are saying about the book by clicking on this link to search for this hashtag on Twitter: https://twitter.com/search?q=#phpbeyondtheweb Contents Welcome ............................................ i About the author ...................................... i Acknowledgements ..................................... ii 1 Introduction ........................................ 1 1.1 “Use PHP? We’re not building a website, you know!”. ............... 1 1.2 Are you new to PHP? ................................. 2 1.3 Reader prerequisites. Or, what this book isn’t .................... 3 1.4 An important note for Windows and Mac users ................... 3 1.5 About the sample code ................................ 4 1.6 External resources ................................... 4 1.7 Book formats/versions available, and access to updates ............... 5 1.8 English. The Real English. .............................. 5 2 Getting away from the Web - the basics ......................... 6 2.1 PHP without a web server .............................. 6 2.2 PHP versions - what’s yours? ............................. 7 2.3 A few good reasons NOT to do it in PHP ...................... 8 2.4 Thinking about security ...............................
    [Show full text]
  • Appendix a the Ten Commandments for Websites
    Appendix A The Ten Commandments for Websites Welcome to the appendixes! At this stage in your learning, you should have all the basic skills you require to build a high-quality website with insightful consideration given to aspects such as accessibility, search engine optimization, usability, and all the other concepts that web designers and developers think about on a daily basis. Hopefully with all the different elements covered in this book, you now have a solid understanding as to what goes into building a website (much more than code!). The main thing you should take from this book is that you don’t need to be an expert at everything but ensuring that you take the time to notice what’s out there and deciding what will best help your site are among the most important elements of the process. As you leave this book and go on to updating your website over time and perhaps learning new skills, always remember to be brave, take risks (through trial and error), and never feel that things are getting too hard. If you choose to learn skills that were only briefly mentioned in this book, like scripting, or to get involved in using content management systems and web software, go at a pace that you feel comfortable with. With that in mind, let’s go over the 10 most important messages I would personally recommend. After that, I’ll give you some useful resources like important websites for people learning to create for the Internet and handy software. Advice is something many professional designers and developers give out in spades after learning some harsh lessons from what their own bitter experiences.
    [Show full text]
  • Why and How to Migrate from .NET to .NET Core. - Oliver Ray, Managing Director @ Number8
    Why and How to Migrate from .NET to .NET Core. - Oliver Ray, Managing Director @ number8 There’s no time like the present when it comes to paying down technical debt, investing in high-value features, and keeping up with development house-keeping. These practices allow development velocity to skyrocket. And For most companies still utilizing .NET, migrating to .NET Core is the most impactful technical investment they can make right now. This transition will simplify your teams’ development cycles and have a measurable impact on your bottom-line. However, it can also include unforeseen complexities and dependencies, so it’s crucial that the planning and prep work is done throughly. Our team at number8 took the time to detail a few high-level benefits that every team should consider during this transition. So, let’s get started. Why migrate from .NET to .NET Core? .NET Core 1.0 was announced in 2014 and aimed to bring the .NET framework into the open source world. The ultimate goal of this initiative was to make .NET projects more portable to other platforms. With the explosion of commodity platforms like Linux and ARM64 processors, .NET had to become more open to survive. From it’s initial release .NET Core has continued to evolve to leverage a wide range of technologies that allow teams to develop systems in whatever way they see fit. A significant example of this forward thinking was early support for Docker containers and Kubernetes. Teams Start Planning everywhere are trying to rethink core enterprise Now applications to fully see the benefit of cloud tooling.
    [Show full text]
  • Crossplatform ASP.NET with Mono
    CrossPlatform ASP.NET with Mono Daniel López Ridruejo [email protected] About me Open source: Original author of mod_mono, Comanche, several Linux Howtos and the Teach Yourself Apache 2 book Company: founder of BitRock, multiplatform installers and management software About this presentation The .NET framework An overview of Mono, a multiplatform implementation of the .NET framework mod_mono : run ASP.NET on Linux using Apache and Mono The Microsoft .Net initiative Many things to many people, we are interested in a subset: the .NET framework Common Language Runtime execution environment Comprehensive set of class libraries As other technologies, greatly hyped. But is a solid technical foundation that stands on its own merits The .NET Framework .NET Highlights (1) Common Language Runtime : Provides garbage collection, resource management, threads, JIT support and so on. Somewhat similar to JVM Common Intermediate Language, multiple language support: C#, Java, Visual Basic, C++, JavaScript, Perl, Python, Eiffel, Fortran, Scheme, Pascal Cobol… They can interoperate and have access to full .NET capabilities. Similar to Java bytecode .NET Highlights (2) Comprehensive Class Library: XML, ASP.NET, Windows Forms, Web Services, ADO.NET Microsoft wants .NET to succeed in other platforms: standardization effort at ECMA, Rotor sample implementation. P/Invoke: Easy to incorporate and interoperate with existing code Attributes, delegates, XML everywhere Mono Project Open Source .NET framework implementation. Covers ECMA standard plus
    [Show full text]
  • VIM Flipper Portal Solution Overview | Opentext
    SOLUTION OVERVIEW VIM Flipper Portal Extend OpenText Vendor Invoice Management (VIM) for SAP® Solutions with additional vendor self-service capabilities associated with Invoice Processing. An OpenText Professional Services package extending the OpenText VIM product Fewer exceptions A key value proposition of a digital invoice processing will improve solution such as OpenText VIM for SAP® Solutions is cost automation savings achieved through high levels of automation and near- touchless execution of invoice processing. While VIM can Better process a variety of input channels including paper, a physical communication invoice must be digitized, recognition is needed to establish to improve vendor key data, and data validation against purchase order details relationships means some level of exception processing can be expected. A reduction of these exceptions will yield further cost savings Save mailroom to the Accounts Payable team. costs through A self-service portal for vendors is a valuable, fully digital input channel for another digital capturing invoices and streamlining communications with vendors. Invoices can be captured digitally, SAP master data is leveraged to speed data validation, and channel communications with the vendor about clarifications/issues is secure and auditable. Additionally, the process is streamlined for vendors making interactions easier and more accurate for all parties in the process. Go live faster Extend VIM Fewer exceptions will improve automation functionality rapidly The VIM Flipper Portal is a great enabler of further digitization for invoice processing. Highly scalable to address large vendor communities and high transaction volumes, the portal integrates tightly with OpenText VIM. The portal promotes quality invoice data submission digitally—“flipping” SAP Purchase Order (PO) data into invoice data—thus reducing transaction errors requiring intervention by AP processors.
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]