Math 如何形式化&x3A3-Coq中的代数?
签名是一组函数符号,其中每个符号Math 如何形式化&x3A3-Coq中的代数?,math,coq,dependent-type,Math,Coq,Dependent Type,签名是一组函数符号,其中每个符号f与一个称为f的算术数的整数相关联。直觉上,由符号f表示的函数只能应用于arity(f)参数 示例:∑={f/2,g/3} 设∑为签名。∑-代数由以下部分组成: 一套a ∑的函数符号到函数之间的映射(fA:a^n→ A) 其中n是符号f的算术数 我的问题是,我在形式化这些概念(特别是函数符号的算术性)时遇到了一些困难。我想我必须使用依赖类型,但我还不太熟悉它们 到目前为止,我所尝试的: Definition function_symbol := ascii.
f
与一个称为f
的算术数的整数相关联。直觉上,由符号f
表示的函数只能应用于arity(f)
参数
示例:∑={f/2,g/3}
设∑为签名。∑-代数由以下部分组成:
- 一套
a
- ∑的函数符号到函数
其中之间的映射(fA:a^n→ A)
是符号n
的算术数f
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}.
但可能有点太复杂了。。。我愿意接受更好的形式化
参考资料:
- 其中,∑-代数简称为代数