最近闲下来的时候其实一直有在玩Agda。 我的第一感觉就是,Agda真的很好入门。Agda的语法和Haskell几乎完全一致,而且由于Agda支持Unicode,于是代码中可以使用大量的数学符号,可以很简单的将一个命题翻译为Agda代码。 在证明方面,Agda和Coq有本质的不同。虽然都以有类型λ演算为理论基础(Agda是UTT,Coq是归纳构造演算),但是表现在证明上,两者就有很大的不同了。 在Agda中,命题的证明就是给出一个类型的一个项。可以说,在Agda中证明一个命题能充分体现Curry-Horwad同构的实质。 Agda与Coq都提供了Emacs的插件以便编写程序。此外,Agda还有Atom与Vscode(不完善)等现代编辑器的插件。
本文提出的属性引导分子性质预测网络(APN)的总体架构如图1(a)所示,主要包括属性提取器和属性引导的双通道注意力(AGDA)模块。首先,使用分子编码器(例如GAT)从分子中提取表征。 在这里,作者结合分子属性并设计了一个AGDA模块来学习更多的信息和判别分子表示。AGDA的详细结构如图1(c)所示。 AGDA由属性引导的局部注意力模块和属性引导的全局注意力模块组成,分别引导模型关注重要的局部信息和全局细节。 经过AGDA模块后,任务中属性细化的分子表示为正样本或者负样本的原型表征,由所有正(负)样本的加权和计算得到。具体来说,对于类中的每个嵌入支撑点,计算一个距离,它表示它与其他点之间的欧几里得距离之和。 APN提取分子属性,并设计AGDA模块学习图与属性之间的关系。
Brackets,这个插件叫彩虹屁,它可以让你的代码块之间很清晰的显示出各种颜色的高亮,而且支持的编程语言还居多,比如:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda
作者也提到了一些其他的形式化验证方法,如 Agda 和 Coq 等,但它们超出了本文的范围。
Brackets(必备推荐) 这个插件可以让代码块之间很清晰的显示出各种颜色的高亮,而且支持的编程语言还居多,比如:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda
convenient, but they are not essential: in principle, we can always construct the required evidence by hand Agda Unlike Agda - you program intensively in dependent type…?
虽然在本书撰写时,Coq 或 Agda 等一些证明助手已经相当成熟,但形式化验证当时还不在陶哲轩的考虑范围内。
Brackets(必备推荐) 这个插件可以让代码块之间很清晰的显示出各种颜色的高亮,而且支持的编程语言还居多,比如:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda
类型系统类似于Agda使用的类型系统。 语言支持可与Coq媲美的交互式定理证明,包括策略,即使在定理证明之前,重点仍然放在通用编程上。
这使得该理论非常适合构建实用的、基于证明的编程系统,如 Agda [14] 或 Coq [15]。尽管该性质限制了某些经典推理原则(如排中律)的使用,但在实践中,此类限制往往微不足道。
相关类型 示例语言:Idris, Agda, Coq 你可能习惯使用C和Java等语言来键入系统,编译器可以检查变量是整数,列表还是字符串。
示例语言:Idris, Agda, Coq 你可能习惯于像C和JAVA等语言的类型系统,编译器可以检查一个变量是整数,列表,或者字符串。
Kotlin,Groovy,Dart , Python,ObjectiveC,PHP,HTML,XML,SQL,JavaScript,TypeScript,Scala,Clojure,Haskell,Agda
存在几种其他交互式定理证明器,如Rocc(前Coq)、Isabelle/HOL和Agda,每种都有不同的逻辑基础和证明风格。我们选择LEAN部分是因为MATHLIB,一个广泛的社区驱动的正式化数学库。