Coq finFieldType/Euler的基数';s准则

Coq finFieldType/Euler的基数';s准则,coq,ssreflect,Coq,Ssreflect,我试图证明欧拉准则的一种非常有限的形式: Variable F : finFieldType. Hypothesis HF : (1 != -1 :> F). Lemma euler (a : F) : a^+(#|F|.-1./2) = -1 -> forall x, x^+2 != a. 我已经完成了大部分证明,但剩下的是奇数(#F |-1)=0,也就是说,F |-1是偶数。(我对特征2不感兴趣)。在math comp库中,我似乎找不到关于finFieldTypes基数的有用事

我试图证明欧拉准则的一种非常有限的形式:

Variable F : finFieldType.
Hypothesis HF : (1 != -1 :> F).
Lemma euler (a : F) : a^+(#|F|.-1./2) = -1 -> forall x, x^+2 != a.
我已经完成了大部分证明,但剩下的是
奇数(#F |-1)=0
,也就是说,
F |-1
是偶数。(我对特征2不感兴趣)。在math comp库中,我似乎找不到关于
finFieldType
s基数的有用事实。例如,我希望有一个引理说存在一个
p
,这样
prime p
|F |=p
。我是不是遗漏了什么


顺便说一句,我也可能完全错过了数学comp库中已经存在的欧拉标准的证明。

我不知道欧拉标准的证明,但我在finfield中发现了两个引理,它们给出了完成证明所需的两个结果(第二个可能没有按照您的预期呈现):

首先,你有下面的引理,它给出了与你的字段
F
特征对应的素数
p
(只要它是
finFieldType
):

然后,另一个引理给出基数论点:

Let n := logn p #|R|.
Lemma card_primeChar : #|R| = (p ^ n)%N.
第二个引理的问题是,应该将字段识别为PrimeChartType,它大致对应于具有显式特征的ringType。但是给出了第一个引理,你就可以在飞行中给你的场(通常有一个环型)提供这样一个结构。可能的证据如下

Lemma odd_card : ~~ odd (#|F|.-1).
Proof.
suff : odd (#|F|) by have /ltnW/prednK {1}<- /= := finRing_gt1 F.
have [p prime_p char_F] := (finCharP F); set F_pC := PrimeCharType p_char.
have H : #|F| = #|F_primeChar| by []; rewrite H card_primeChar -H odd_exp => {H F_pC}.
apply/orP; right; have := HF; apply: contraR=> /(prime_oddPn prime_p) p_eq2.
by move: char_F; rewrite p_eq2=> /oppr_char2 ->.
Qed.
引理奇数卡:~~奇数(#| F |-1)。 证明。 suff:have/ltnW/prednK{1}{H F|u pC}的奇数(|F|)。 申请(可供选择);;正确的;have:=HF;应用:contar=>/(prime\u oddPn prime\u p)p\u eq2。 移动:char_F;重写p_eq2=>/oppr_char2->。 Qed。
这看起来更像是一个关于数学的问题,而不是关于ssreflect(更准确地说是数学组件库)。在wikipedia有限域页面中,您应该期望有限域的顺序为
p^k
,其中
p
是一个素数,它是一个被限制为素数
p
的特征,而不是顺序。
Lemma odd_card : ~~ odd (#|F|.-1).
Proof.
suff : odd (#|F|) by have /ltnW/prednK {1}<- /= := finRing_gt1 F.
have [p prime_p char_F] := (finCharP F); set F_pC := PrimeCharType p_char.
have H : #|F| = #|F_primeChar| by []; rewrite H card_primeChar -H odd_exp => {H F_pC}.
apply/orP; right; have := HF; apply: contraR=> /(prime_oddPn prime_p) p_eq2.
by move: char_F; rewrite p_eq2=> /oppr_char2 ->.
Qed.