我在Agda中证明了一些东西,我的一些文件开始变得有点长而且混乱(甚至在我重构为较小的模块之后)。是否有可能有两个文件,其中一个只包含定理的类型签名,另一个包含那些定理和证明?我查看了abstract关键字,但这似乎并没有做正确的事情。
当然,我可以将所有类型的签名放在文件的顶部,并将所有的证据放在文件的底部;但如果我能把文件中的陈述告诉自己,那似乎更清晰。
答案 0 :(得分:2)
您可以为您的引理类型指定名称。例如。在档案Statement.agda
中:
module Statement where
open import Agda.Builtin.Nat
open import Agda.Builtin.Equality
+-sym : Set
+-sym = ∀ m n → m + n ≡ n + m
在文件Proof.agda
中:
module Proof where
open import Agda.Builtin.Nat
open import Agda.Builtin.Equality
import Statement
+-sym : Statement.+-sym
+-sym m n = {!!}
如果您的定义是级别多态的,则遗憾的是,Agda没有∀ {ℓ : Level} → ...
形式的类型的(表面)名称。在Statement
中使用Proof
中的语句时,您必须将这些级别作为Statement.agda
中的参数并对其进行全面量化。这会给你这样的东西:
在open import Agda.Primitive
data ⊥ : Set where
⊥-elim : (ℓ : Level) → Set (lsuc ℓ)
⊥-elim ℓ = ∀ {A : Set ℓ} → ⊥ → A
:
Proof.agda
在⊥-elim : ∀ {ℓ} → Statement.⊥-elim ℓ
⊥-elim = {!!}
:
FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml"));
loader.setController(new MainController(path));
Pane mainPane = loader.load();