0
与半环的工作这是一个简单的勒柯克语法新手的问题:)在勒柯克
我想对semi_rings定义简单的多项式函数:
Require Import Vector.
Import VectorNotations.
Require Import Ring_theory.
Section Polynomial_def.
Variable Asring : Type.
Variable (asr_0 asr_1 : Asring) (asr_add asr_mul: Asring->Asring->Asring).
Variable SRth : semi_ring_theory asr_0 asr_1 asr_add asr_mul eq.
Fixpoint evalPolynomial {n} (a: t Asring n) (x:Asring) : Asring :=
match a with
nil => asr_0
| cons a0 p a' => asr_add a0 (asr_mul x (evalPolynomial a' x))
end.
End Polynomial_def.
当我使用它的实数,例如,我必须做这样的事情:
Require Import Reals.Rdefinitions.
evalPolynomial R R0 Rplus Rmult a v
我怀疑应该有一个简单的语法,在那里我可以只通过单一的数据结构(如comm_ring_1
在伊莎贝尔),这将EN封装所有类型的R,R0,Rplus,Rmult等字段。
我需要使用'semi_ring_theory'吗? – krokodil 2014-10-11 01:36:01
下面是代码,根据您的建议进行了更改:http://ideone.com/YbUW4G – krokodil 2014-10-11 01:56:57
我没有想到Coq自己的'semi_ring_theory',因为我不需要那么多。我的猜测是,这可能是有用的,因为那些可以与'ring'系列策略一起使用,因此将帮助您自动化证明。 – 2014-10-11 03:43:24