about coq…… - github pagesustc-lambda.github.io/files/aboutcoq.pdf · 提纲 •...

15
ABOUT COQ…… 张恒若

Upload: others

Post on 28-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

ABOUT COQ……张恒若

Page 2: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

提纲

• Coq源码分析

• Coq的应用——CertiKOS

• Coq的应用——CertiUcosII

• (安利某实验室

Page 3: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

提纲

• Coq源码分析

• Coq的应用——CertiKOS与CertiUcosII

• (安利某实验室

Page 4: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

COQ代码

Page 5: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

REPL

解析输入

命题(Prop类型)

Vernacular命令

Ltac && 非命题表达式

解析证明策略

构造出证明项

执行命令

存储在环境中

toplevel目录下的coqloop.ml文件

Page 6: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

PARSING

源代码Parsing模块

Gallina表达式

Vernacular表达式

Ltac表达式

parsing目录主要是pcoq.ml

Page 7: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

PARSING - GALLINA

Gallina

intf/constrexpr.mli:type constr_expr

• intf:interface,对外的Coq接口,目前还非常不成熟……• interp: interpretation,翻译有关的函数• pretyping:类型推断

翻译模块

interp/constrintern.ml展开notation,查找全局符号

global term

intf/glob_term.mli:type glob_constr无类型表达式

类型推断模块

term

pretyping/pretyping.ml

类型推断

kernel/constr.ml归纳演算表达式

Page 8: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

PARSING - VERNACULAR

• parsing/g_vernac.ml4中定义语法

• toplevel/vernac.ml进行parse

• toplevel/command.ml执行相关功能

Page 9: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

PARSING - LTAC

• 相关函数都在ltac目录下

• parsing/pcoq.ml发现“Ltac”标记之后转入ltac/pltac.ml

• pltac是主要的parser

Page 10: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

环境

• 位于kernel/environ.ml,原始定义在kernel/pre_env.ml

• 内容:• 全局定义的符号,公理(kernel/constr.ml中的term类型)• 归纳类型(kernel/inductive.ml)• 非直谓标志• 当前证明环境的前提条件• ……

Page 11: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

构造证明项

• engine/proofview.ml文件中的proofview类型储存证明的上下文

• tactic目录下有很多和tactic有关的操作(主要在tacmach.ml文件中)

Page 12: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

COQ未来的展望

• 丰富开发文档(dev/doc/下很多TODO)

• 丰富API,更加模块化,接口化(向lean学习)

• 让tactic更像函数;monad化方便组合

Page 13: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

CERTIKOS VS CERTIUCOS

• CertiKOS• 理论基础:并发分离逻辑• Yale FLINT实验室

• CertiUcosII• 理论基础:Rely-Guarantee Sep• 软件安全实验室

Page 14: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

(安利环节

• 冯新宇老师主页:http://staff.ustc.edu.cn/~xyfeng

Page 15: ABOUT COQ…… - GitHub Pagesustc-lambda.github.io/files/AboutCoq.pdf · 提纲 • Coq源码分析 • Coq的应用——CertiKOS • Coq的应用——CertiUcosII • (安利某实验室

谢谢!