如何在Coq中形式化Σ-代数?

时间:2017-05-25 18:19:57

标签: math coq dependent-type

签名Σ是一组函数符号,其中每个符号f与称为f的arity的整数相关联。直观地,由符号f表示的函数只能应用于arity(f)个参数。

示例:Σ= {f / 2,g / 3}

让Σ成为签名。 Σ-algebra 由以下内容组成:

  • 一组A
  • Σ的函数符号与函数(fA : A^n → A)之间的映射,其中n是符号f的arity。

我的问题是我遇到了一些形式化这些概念的麻烦(尤其是功能符号的优点)。我想我必须使用依赖类型,但我还不熟悉它们。

到目前为止我尝试过:

Definition function_symbol := ascii.
Definition signature : Type := (list function_symbol) * arity.

Inductive sigma_term (sigma:signature) : Type :=
  | SigmaVar : variable -> sigma_term sigma
  | SigmaFunc f :
    let functions := fst sigma in
    let arity := snd sigma in
    In f functions -> ilist term (arity f) -> sigma_term sigma.

Definition sigma_algebra (sigma:signature) : Type :=
  let arity := snd sigma in
  {A : Type & forall f:function_symbol, nfun A (arity f) A}.

但它可能有点过于复杂......我愿意接受更好的形式化。

参考

0 个答案:

没有答案