映射 -
Total and Partial Maps    ( Maps )

  • The Coq Standard Library
  • Identifiers
  • Total Maps
  • Partial maps

map 应用:状态表示、迁移, 状态机
 
 
两种 map

  • total maps, which include ** a "default" element** to be returned when a key being looked up doesn't exist
  • partial maps, which instead return an option to indicate success or failure. The latter is defined in terms of the former, using None as the default element.

The Coq Standard Library
 
在这一章以及从现在开始,我们将直接从 Coq 的标准库中导入我们需要的定义和定理。

 
 
Identifiers
 
为了比较字符串,我们定义了函数 eqb_string ,它在内部使用 Coq 的字符串库中的函数 string_dec 。
 

 
一些应用定理

 

 

 
 
 
Total Maps - 全映射
 
不同于 list 中关于 map 的定义(使用键值对的 list 定义),本次使用函数构建 map
 
 
 
全映射:它在某个映射中查找不存在的键时会返回默认值。

直观上来说,一个元素类型为 A 的全映射 即为 根据 string 来查找 A 的函数。

给定函数 t_empty 一个默认元素,它会产生一个空的全映射。 此映射在应用到任何字符串时都会返回默认元素。

 
update 函数,接受一个映射 m 、一个键 x 以及一个值 v ,并返回一个将 x 映射到 v 的新映射;其它键则与 m 中原来的保持一致。
 
·其中使用高阶编程
 
举例

构建一个从 string 到 bool 的映射,其中 "foo" 和 "bar" 映射到 true ,其它键则映射到 false
 
引入记号

根据一个默认值来创建空的全映射。
 
 

通过一些绑定来扩展现有的映射。
 
重写上面的例子
 

 
 
Partial maps **** 偏映射
在全映射的基础上定义偏映射
偏映射:元素类型为 option A ,默认元素为 None 的全映射。
 

 
 
 
记号

 
 
 
将所有关于全映射的基本引理直接转换成对应的偏映射引理。

【coq】函数语言设计 笔记 08 - maps相关推荐

  1. 【历史上的今天】6 月 5 日:洛夫莱斯和巴贝奇相遇;公钥密码学先驱诞生;函数语言设计先驱出生

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 6 月 5 日,世界环境日.1972 年 6 月 5 日至 16 日,联合国人类环境会议在斯德哥尔摩 ...

  2. [C++程序语言设计笔记一]面向对象编程抽象,继承,重写基本介绍

    今天是个不错的日子,不仅有人收了我做徒弟从此传授我有关C++的一些知识,由于前一段时间喜欢上了外挂的研究也用到了一些MFC的知识及一些Windows APIs编程,但是对C++还是没有从根本上认识.我 ...

  3. Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)

    Android开发是目前最热门的移动开发技术之一,随着开发者的不断努力和Android社区的进步,Android开发技术已经日趋成熟,当然,在Android开源社区中也涌现了很多不错的开源UI项目,它 ...

  4. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  5. c 语言filter过滤方法,R语言日常笔记(1)filter函数

    R语言日常笔记(1)filter函数 在处理数据时,过滤数据是最基本的操作之一. 如果想删除一部分无效或者根本不感兴趣的数据. dplyr有filter()函数来做这样的过滤. 使用dplyr,可以帮 ...

  6. C 语言的可变参数表函数的设计

    首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理. 一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是 ...

  7. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

  8. c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...

    C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...

  9. C语言程序设计笔记(浙大翁恺版) 第七章:函数

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  10. 将军今天讲c语言了吗第六,计算机c语言 第六章:函数 教学设计(修改).doc

    <C语言程序设计>之 ----- "函数"教学设计 贵州交通技师学院 张 红 <C语言程序设计>之 ----- "函数"教学设计 [教材 ...

最新文章

  1. bcrypt如何内置盐?
  2. Android Framework------之Property子系统
  3. 2022-01-17
  4. python接口测试框架设计_Python3简易接口自动化测试框架设计与实现(中)
  5. 【深度学习】手把手教你实现一个人工智能案例(蓄电池爬碱识别)
  6. 测试下微信公众号新功能
  7. 3-8 译码器设计实验--VHDL
  8. spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法
  9. java 如何判断操作系统是Linux还是Windows
  10. 一道充满歧义的思维题,全网唯一刁钻分析
  11. ListView使用BaseAdapter与ListView的优化
  12. 技能竞赛国赛_中西部第一!技能“川军”在第一届全国技能大赛斩获4金5银6铜...
  13. win10系统下载 Ghost Win10 RS1 1607 32位纯净3月版
  14. Mac10.8.5黑苹果HD3000VGA输出
  15. 修改mac地址导致计算机无法上网,如何解决Win7计算机上无法修改MAC地址的问题...
  16. springboot志愿者管理系统
  17. 一路两输入正与门SN74AHC1G08学习
  18. Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) C. Travelling Salesman and Specia
  19. 计算机学习常用网站总结
  20. 一篇差点让老婆离开我的文章

热门文章

  1. 代码设置margintop_js获取css属性,更改margin-top属性,给每个a标签的margin-top属性在原基础上 +5px...
  2. 项目管理(软件开发)之思维导图使用
  3. phpcms搜索功能实现
  4. 数理逻辑习题集(3)
  5. 线性代数的那些事(二)行列式与逆
  6. 简单典型二阶系统_【文献选译】二阶弹性波动方程PML的简单实现
  7. makefile写法整理
  8. 微信开发者账号APPID过久不用被冻结解决方案
  9. apache网站ftp服务器搭建,利用 Apache FtpServer 搭建 FTP 服务器
  10. python Excel xlsx file; not supported