Dafny Dafny
首页
  • 入门介绍

    • 什么是dafny?
  • 用起来吧!

    • 安装
    • 快速上手
    • 可能遇到的问题?
  • Dafny快速入门

    • 基础学习 Basic
    • 方法 Method
    • 关键字 Keyword
    • 函数 Function
    • 类 Class
    • 泛型 Generics
    • 声明 Statement
    • 表达式 Expression
  • Dafny简单例子

    • 寻找最大最小数和
    • 斐波那契数列
    • 线性查询
    • 引理-计算序列非负元素个数
    • 集合
    • 终止
  • Dafny指导

    • 介绍
    • 方法 Methods
    • 前置/后置条件 Pre/Postconditions
    • 断言 Assertions
    • 函数 Functions
    • 循环不变体 Loop Invariants
    • 数组 Arrays
    • 量词(函数) Quantifiers
    • 谓词(函数) Predicates
    • 框架 Framing
    • 二分搜索 Binary Search
    • 总结
  • Dafny进阶语法

    • 引理和归纳 Lemmas and Induction
    • 模块 Modules
    • 集合 sets
    • 序列 sequence
    • 终止 Terminal
    • 值类型 Values Types
  • 实践探索

    • 自动归纳
    • 自动调用引理
    • 定义、证明、算法正确性
    • 各种推导式
    • 不同类型的证明
    • 集合元素上的函数
    • 在集合上的迭代
  • 常用工具

    • Type System
    • Style Guide
    • Cheet Sheet
✨收藏
  • 简体中文
  • English
💬社区留言板
GitHub (opens new window)

Dafny

新一代验证语言
首页
  • 入门介绍

    • 什么是dafny?
  • 用起来吧!

    • 安装
    • 快速上手
    • 可能遇到的问题?
  • Dafny快速入门

    • 基础学习 Basic
    • 方法 Method
    • 关键字 Keyword
    • 函数 Function
    • 类 Class
    • 泛型 Generics
    • 声明 Statement
    • 表达式 Expression
  • Dafny简单例子

    • 寻找最大最小数和
    • 斐波那契数列
    • 线性查询
    • 引理-计算序列非负元素个数
    • 集合
    • 终止
  • Dafny指导

    • 介绍
    • 方法 Methods
    • 前置/后置条件 Pre/Postconditions
    • 断言 Assertions
    • 函数 Functions
    • 循环不变体 Loop Invariants
    • 数组 Arrays
    • 量词(函数) Quantifiers
    • 谓词(函数) Predicates
    • 框架 Framing
    • 二分搜索 Binary Search
    • 总结
  • Dafny进阶语法

    • 引理和归纳 Lemmas and Induction
    • 模块 Modules
    • 集合 sets
    • 序列 sequence
    • 终止 Terminal
    • 值类型 Values Types
  • 实践探索

    • 自动归纳
    • 自动调用引理
    • 定义、证明、算法正确性
    • 各种推导式
    • 不同类型的证明
    • 集合元素上的函数
    • 在集合上的迭代
  • 常用工具

    • Type System
    • Style Guide
    • Cheet Sheet
✨收藏
  • 简体中文
  • English
💬社区留言板
GitHub (opens new window)
  • Dafny快速入门

    • 基础 Basic
      • Dafny是什么样?
      • 基本定义
    • 方法 Method
    • 关键字 Keyword
    • 函数 Function
    • 类 Class
    • 泛型 Generics
    • 声明 Statement
    • 表达式 Expression
  • 简单例子

  • 指南
  • Dafny快速入门
lijiahai
2022-03-26
目录

基础 Basic

# 基础学习

提示

​ 此页面说明了 Dafny 中许多最常见的语言功能。 为了让您更快上手,这里的描述被简化了——这个页面不是语言参考。例如,此页面不会涉及模块、迭代器或细化,除非您在 Dafny 中编写更大或更高级的程序,否则您将不需要这些。

# Dafny是什么样?

Dafny程序长这样:xxxxx.dfy,Dafny文件是以.dfy结尾的。

程序主要包含以下几部分:

  1. 类型(types)

  2. 方法(methods)

  3. 函数(functions)

  4. 用户自定义的类型包括类(class)和归纳数据类型(inductive class)

  5. 类class本身也包含一组声明(declarations)、介绍字段(introducing fields)、方法(methods)和函数(functions)。

    如果有main方法那就从main开始验证程序,没有也没关系,main不是必须的。

注释:// 双斜杠 或者 /* xxxxx */

# 基本定义

在类中,定义字段x为数据类型(types)T:

var x: T

注意事项:

  • 数据类型必需手动申明的,不会被自动推断。

  • 通过在声明前加上关键 ghost 可以将该字段声明为幽灵(即用于规范而不是执行)字段。

Dafny 的9种数据类型包括:

  • bool:布尔值
  • int:无界整数
  • string: 字符串
  • class/inductive class: 用户自定义的类和归纳类、
  • set<T>:不可变的无序集合
  • seq<T>:不可变的有序集合
  • array<T>、array2<T>、array3<T>: 多维数组类型
  • object:所有类型的超类
  • nat:范围是int一半,非负整数。
编辑 (opens new window)
上次更新: 2022/03/26, 14:38:56
方法 Method

方法 Method→

最近更新
01
寻找最大和最小数
04-06
02
斐波那契数列
04-06
03
线性查询
04-06
更多文章>
Theme by Vdoing | Copyright © 2022-2022 Li Jiahai | Dafny Community | 2022
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式