finFieldType /欧拉准则的基数

时间:2018-06-25 20:05:47

标签: coq ssreflect

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

Variable F : finFieldType.
Hypothesis HF : (1 != -1 :> F).
Lemma euler (a : F) : a^+(#|F|.-1./2) = -1 -> forall x, x^+2 != a.

我已经完成了大部分证明,但是剩下odd (#|F|.-1) = 0,即#|F|.-1是偶数。 (我对特征2不感兴趣)。我似乎在数学比较库中找不到关于finFieldType的基数的有用事实。例如,我期望一个引理说存在pprime p这样的#|F| = p。我在这里想念东西吗?

顺便说一句,我也可能完全错过了数学比较库本身中已有的欧拉准则证明。

1 个答案:

答案 0 :(得分:2)

我不知道关于欧拉准则的证明,但是我在芬菲尔德发现了两个引理,它们为您提供了为完成证明而期望的两个结果(第二个可能未按预期提供) :

首先,您具有以下引理,给您与字段p的特征相对应的质数F(只要它是finFieldType):

Lemma finCharP : {p | prime p & p \in [char F]}.

然后,另一个引理给出了基数参数:

Let n := logn p #|R|.
Lemma card_primeChar : #|R| = (p ^ n)%N.

第二个引理的问题是您的字段应被识别为PrimeCharType,它大致对应于具有显式特征的ringType。但是给定第一个引理,您就可以动态地为您的字段(通常具有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.