我对依赖类型理论中的面向对象编程中的对象建模感兴趣。作为一个可能的应用程序,我希望有一个模型,可以描述命令式编程语言的不同功能。
我只能找到一篇关于依赖类型理论中的对象建模的论文,即:
A. Setzer(2006)的依赖类型理论中的面向对象编程。
是否有我遗漏的主题的更多参考文献,或者是否有更新的参考文献?
是否可以为定理证明者(例如Coq或Agda)提供实现(即证明)?
我对依赖类型理论中的面向对象编程中的对象建模感兴趣。作为一个可能的应用程序,我希望有一个模型,可以描述命令式编程语言的不同功能。
我只能找到一篇关于依赖类型理论中的对象建模的论文,即:
A. Setzer(2006)的依赖类型理论中的面向对象编程。
是否有我遗漏的主题的更多参考文献,或者是否有更新的参考文献?
是否可以为定理证明者(例如Coq或Agda)提供实现(即证明)?
Answers:
有大量的后续论文,Andreas Abel,Stephan Adelsberger,Anton Setzer:Agda中的交互式编程-对象和图形用户界面。它包含一个Agda库,用于编写包含GUI的基于对象的程序。与Stephan Adelsberger一起发表的一些后续论文涉及基于面向对象编程在Agda的医学领域编写经过验证的GUI。
我对该主题没有足够的精通介绍,但是我建议您清除2010年末Seokhyun Han博士论文的书目,即具有相关记录类型和强制性子类型化的Java理论中的Java程序验证。
您为什么要看依赖类型理论来表示OOP?我们不能用非依赖性计算以令人满意的方式对OOP建模吗?我有一个面向对象的非正式模型,例如当转换为系统F(或者如果要支持泛型,则为Fω)时,OOP是什么样的,而且我看不到类型值依赖会在哪里起作用。
例如,可以使用从属类型为代数数据类型赋予较低级别的含义。您可能可以对OO功能进行这样的低级编码,但是我不确定这比在您的建模语言中添加代数数据类型更好。
也许您想为当前未类型化的OOP构造提供更好的静态语义,例如instance_of
后跟一个cast
。我可以看到从属类型黑客对于静态推理此类程序很有用。但我不确定是否可以对那些集中于动态角度的操作进行“建模”,这还不止于此。